Vitalli
Server Details
Connect your own Vitalli health records (lab values, symptoms, fasting, supplements and food log) to your AI assistant. Read and record entries in Vora, Still, Stackwell and Joiva. Each app can be enabled or disabled for AI access in the Vitalli account. Documentation: https://vitalli.app/mcp
- Status
- Healthy
- Uptime
- 68.2% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 133 tools
Despite the size, most tools map to a distinct resource+action within their app prefix, and descriptions explicitly fence off the risky overlaps (food vs supplement shopping lists, water vs drinks, log_food vs log_described_meal vs log_meal). The main genuine ambiguities are glucose/ketone entry split across still_add_biomarker_reading and vora_add_biomarker (plus vora_add_observation), and save_meal vs save_recipe vs log_meal, which require careful reading rather than being self-evident.
All 133 tools use snake_case with an app prefix (joiva_, stackwell_, still_, vitalli_, vora_) followed by a consistent verb_noun pattern (add_, get_, list_, update_, delete_, remove_, log_, share_, set_). The few noun-only names (vitalli_guide, vitalli_connection_status) are diagnostic/meta tools and do not break the pattern.
133 tools is far beyond what an agent can reliably navigate in one context, even though the surface genuinely spans five apps (food, supplements, fasting, labs, care network). The breadth explains the count but does not make it manageable; several apps carry 20-40 tools each where a tighter set would suffice.
Coverage is unusually thorough: full CRUD for pantry, shopping, food rules, plans, schedule entries, contacts and organizations, plus sharing lifecycles and cross-app context reads. Remaining gaps are minor but real: allergies, medications and family history can be added but not listed/updated/deleted individually, and saved meals have no delete/rename operation.
Available Tools
133 toolsjoiva_add_food_ruleADestructiveIdempotentInspect
Record a food rule for the user ('Bananen soll ich laut Bericht meiden'), e.g. when transferring a list from a report or from a doctor. Stores the user's statement; Joiva adds no foods and establishes no tolerances on its own. An existing rule for the same food is replaced (one rule per food).
Inputs: kind (required), label (required), note, reason, +3 more.
joiva_add_pantry_itemAInspect
Add something the user put away at home. Nutrient values are not accepted here: Joiva resolves them from its own reference sources and refines them in the background. The record is as precise as its identity: name, brand, barcode. Nutrients written into note are not evaluated. A printed nutrition table counts as evidence only when photographed in the Joiva app (Vorrat → Einkauf fotografieren), not as typed numbers. Quantity may be grams, millilitres or pieces; unitWeightG is the known weight per piece, not an estimate.
Inputs: unit (required), label (required), quantity (required), note, +6 more.
joiva_add_shopping_itemAInspect
Put a food item on the user's Joiva shopping list ('setz Hafermilch auf den Zettel'). An identical open entry is returned instead of creating a duplicate. Staples are not kept on the list. The list holds food only: supplements and health products, including the borderline cases protein powder, collagen, MCT oil and electrolyte powder, are kept on Stackwell's list with the supplement plan.
Inputs: label (required), detail.
joiva_answer_questionADestructiveIdempotentInspect
Answer one open recipe question with the option index the user chose, or ignore=true when the user does not want to answer (the standard then stays, visibly). The answer becomes the user's personal recipe for that dish, the user's entries of the dish are recomputed, and Joiva does not ask about that dish again.
Inputs: questionId (required), ignore, option.
joiva_confirm_plannedADestructiveIdempotentInspect
Confirm a planned Joiva meal (by its entryId) as actually eaten. It is logged with the time of confirmation (not the planned time) and now counts towards the day's totals. grams corrects the portion.
Inputs: entryId (required), grams, unitCount, unitLabel.
joiva_consume_pantry_itemADestructiveInspect
Deduct a quantity from a pantry item (after cooking, or when something was thrown away). Joiva never deducts on its own: logging a meal does not silently change the stock, because a portion eaten is rarely the whole package.
Inputs: quantity (required), pantryItemId (required), unit, reason.
joiva_delete_log_entryCDestructiveIdempotentInspect
Delete a Joiva log entry.
Inputs: entryId (required).
joiva_get_dayARead-onlyIdempotentInspect
Get the signed-in user's Joiva food log for one day. Defaults to today. The default answer is compact: each entry carries id, foodItemId, food, brand, grams, meal, loggedAt, kcal and macros (fields without a value are left out; naehrwertStatus appears only when the nutrient values are not complete yet). The day totals are complete, including micronutrients; coverage gives target, percent and status per nutrient; meals groups the entry ids per meal; plannedEntries are listed the same way, and plannedTotals, forecastTotals (= totals + planned) and forecastCoverage appear when something is planned. detail: 'full' returns the full breakdown per entry: micronutrients, microsOrigin (per nutrient: eigen = from the label/product source, uebernommen = inherited from the generic food, scaled where it depends on fat/carbs/protein, zubereitung = adjusted for the preparation, geschaetzt = estimated), garung, behandlung, notiz as eaten, produktGarung as bought, recipe and portions. entryIds returns only those entries with their full breakdown. Every food carries brand and certifications (bio, demeter, bioland, naturland, fairtrade; left out = none known), which tell products of different makers apart.
Inputs: tz, date, detail, entryIds.
joiva_get_macro_targetsARead-onlyIdempotentInspect
The signed-in user's macro philosophy and targets (protein floor, carb cap) plus available presets. The resolved per-day gram targets (incl. fat as the rest of the calorie budget) are not part of this answer; the day view carries them as macros.
Inputs: no named parameters.
joiva_get_meal_planning_contextARead-onlyIdempotentInspect
Meal-planning briefing for the signed-in user in one call: allergies and intolerances, active conditions and medications, the 14-day Bristol stool-form trend with pre-written food suggestions, latest biomarkers with their dates, active symptoms (Vora); the current fasting window (Still); the supplements logged today (Stackwell); the day's macros and micronutrient intake gaps, the pantry incl. staples, the shopping list and frequently logged foods (Joiva); body data and energy need (Vitalli). Each source is read only if the user enabled that app for AI access. Every source carries available and fetchedAt, and an error when it is unavailable (not enabled, or not reachable); an unavailable source means unknown, not empty. The guidance field holds fixed notes on reading the data (allergies and a running fast as constraints, intake gaps versus measured values). Personal food rules are not included.
Inputs: tz, date, sections.
joiva_get_nutrient_findingsARead-onlyIdempotentInspect
Joiva's rule-based comparison of the logged dietary intake of all nutrients with reference values over 1, 7 and 30 days, one rule set: minimum (70 % of the DGE reference), upper limits (EFSA/NIH), 'at most' limits (saturated fat, added sugar, sodium, omega-6 as % of energy) and ratios (omega-6:omega-3, sodium:potassium molar, calcium:magnesium, zinc:copper). Each finding: limit with source link, per window the value, data coverage and status (auffaellig | ok | zu_wenig_daten | keine_eintraege), the top contributing foods, the origin of the values (label, database, inherited, estimated), a suggestion and a 30-day history. 'zu_wenig_daten' means NO statement, neither a warning nor an all-clear. 'nicht_angewendet' = the rule does not apply to the user's diet (reason given). At most one finding has alarm=true. onlyFired=true returns only rules with status 'auffaellig'. The findings describe logged intake, not nutrient levels in the body.
Inputs: tz, onlyFired.
joiva_get_range_summaryARead-onlyIdempotentInspect
Per-day macro totals and entry counts for a date range (max 92 days) from the signed-in user's Joiva log.
Inputs: endDate (required), startDate (required), tz.
joiva_list_food_rulesARead-onlyIdempotentInspect
The signed-in user's personal food rules: what they want to avoid, be careful with, or consider explicitly fine, each with reason and their own note. These are the user's own notes, not a medical finding.
Inputs: no named parameters.
joiva_list_frequent_foodsARead-onlyIdempotentInspect
The signed-in user's most frequently logged foods with per-100g nutrients, per-nutrient provenance (microsOrigin) and product traits (garung/behandlung as bought, sorte, herkunft, weidehaltung). Logging with these names/subTypes reuses the existing items. Every food carries brand and certifications (bio, demeter, bioland, naturland, fairtrade; null = none known), which tell products of different makers apart.
Inputs: limit.
joiva_list_mealsBRead-onlyIdempotentInspect
The signed-in user's saved meals (reusable recipes): name, components with grams, per-portion macros, times logged.
Inputs: no named parameters.
joiva_list_open_questionsARead-onlyIdempotentInspect
Open follow-up questions about assumptions in the user's dishes. A named dish without an ingredient list (e.g. 'Bullet Proof Coffee', 'warmer Linsensalat') is computed in Joiva from a standard recipe; where a common variant changes the nutrients noticeably (oil in the dressing, milk or almond drink), Joiva asks once. Sorted: first what a warning of the nutrient assessment depends on, then what its data coverage depends on, then the size of the effect. Each question has optionen, the preselected standard index (the entry is already computed with it, nothing is blocked) and wirkungText (what the answer changes). Each question has an id.
Inputs: tz.
joiva_list_pantryARead-onlyIdempotentInspect
What the signed-in user currently has at home, per storage location, with quantity and (where the food is resolved) its nutrients. expiringWithinDays filters for items close to or past their best-before date. Every food carries brand and certifications (bio, demeter, bioland, naturland, fairtrade; null = none known), which tell products of different makers apart.
Inputs: location, expiringWithinDays.
joiva_list_plannedARead-onlyIdempotentInspect
List the signed-in user's planned (not yet eaten) Joiva meals with scheduled time, grams, macros, per-nutrient provenance (microsOrigin) and preparation (garung, behandlung, notiz). Without date it returns all open plans from the last 30 days onwards; plans never expire on their own. Each plan carries its entryId.
Inputs: tz, date.
joiva_list_shoppingARead-onlyIdempotentInspect
The signed-in user's food shopping list: open entries in list order plus recently bought ones. sentToBringAt shows whether an entry already went to the user's Bring! app. Supplements are not part of this list; they are kept in Stackwell.
Inputs: no named parameters.
joiva_log_described_mealADestructiveInspect
Log a meal the signed-in user described in their own words, e.g. 'ca. 350 g Hähnchen-Kokos-Curry (Hähnchen, Kokosmilch, Möhre; ohne Zwiebeln) und 250 g Brokkoli mit Olivenöl'. Joiva splits the text into its parts and breaks every dish, and every food with additions (oil, butter, sauce, spices), into ingredients with its own recipe decomposition: named ingredients are kept, excluded ones left out, cooking fat counted, missing amounts estimated, nutrient values from Joiva's reference sources (BLS first). It writes one log entry per ingredient, all in one meal; a plain single food becomes one entry. Nothing is written unless every part resolves. Takes 20 to 60 seconds. Time: loggedAt, or date with meal (placed at the meal's usual hour) or with time; without any of these it is now. A past day without meal and time is refused, since Joiva does not invent a clock time. The reply lists every entry (entryId, food, grams, kcal) per part, the assumptions made for what the description left open, and the meal's totals.
Inputs: description (required), tz, date, meal, +2 more.
joiva_log_drinkAInspect
Log a drink the signed-in user had from Joiva's drink templates: coffee, tea, milk, cocoa, orange juice, apple spritzer, cola, cola zero, beer or white wine; coffee and tea optionally with milk, oat drink, coffee cream, sugar or butter. Writes food-log entries (the drink plus one row per addition, linked as one drink) with caffeine and alcohol from a cited source, energy and nutrients. Drinks are listed in ml under 'Getrunken', never as a meal. Drinks and additions over 50 kcal end a fast like any food (fasting automation, 50 kcal rule). Its water counts towards the day's hydration target. Plain and sparkling water are not logged here; a drink without a template here is logged like food. Time defaults to now.
Inputs: drink (required), ml, loggedAt, additions.
joiva_log_foodADestructiveInspect
Log ONE food the signed-in user ate in Joiva, as one entry. Takes the food name in the user's own language; Joiva resolves the nutrient values itself against its reference sources and reports their provenance in the nutrients field of the response. Reuses an existing food by barcode or (food, subType, brand), otherwise creates it. brand and barcode decide which product is meant. Several foods of one meal are several entries with the same meal. A dish or a food with additions (oil, butter, sauce) in one entry, or ingredients and nutrient values in notiz, are refused with an explanation, and nothing is written. Time defaults to now.
Inputs: food (required), grams (required), meal, brand, +12 more.
joiva_log_mealAInspect
Log a saved Joiva meal in one call: every component becomes a log entry sharing one meal, labeled with the meal's name. The meal is found by mealName (case-insensitive, e.g. 'Power-Bowl') or by savedMealId. factor scales the portion (0.5 = half, 2 = double). Time defaults to now. With plannedDate the meal is scheduled for a day that has not happened yet ('plane meine Power-Bowl für morgen'): the entries are written as planned, not eaten, and stay out of that day's balance until confirmed.
Inputs: tz, factor, loggedAt, mealName, +2 more.
joiva_log_waterAInspect
Log plain water, sparkling water or salt water the signed-in user drank, in millilitres. Water lives in its own ledger: no macros, never breaks a fast. Drinks with content (coffee, tea, milk, cocoa, juice, spritzer, cola, beer, wine, broth) are not water: they belong in the food log with caffeine, alcohol and energy, and their water still counts towards the hydration target. For backwards compatibility kind: 'coffee' is logged as a plain coffee in the food log. The daily hydration target and its breakdown are part of the day view under water. kind: 'salt_water' records the salted water of an extended fast with its sodium, which the fasting safety rule depends on. Time defaults to now.
Inputs: ml (required), tz, kind, loggedAt, +2 more.
joiva_plan_foodAInspect
Plan a meal the signed-in user intends to eat later ('plan my dinner at 19:00', 'breakfast tomorrow'). Creates a planned entry in Joiva. It does not count towards the day's totals until it is confirmed as eaten. Food matching and nutrient resolution work as for a logged food: the food name in the user's own language, brand/barcode identify branded products.
Inputs: food (required), grams (required), tz, meal, +13 more.
joiva_remove_food_ruleBDestructiveIdempotentInspect
Remove a food rule by its ruleId. The food is then unremarkable again.
Inputs: ruleId (required).
joiva_remove_pantry_itemADestructiveIdempotentInspect
Remove a pantry item entirely (wrong entry, or gone).
Inputs: pantryItemId (required), reason.
joiva_remove_shopping_itemADestructiveIdempotentInspect
Delete an entry from the Joiva shopping list, for an entry that does not belong there. Something actually bought is ticked off (status 'done') rather than deleted.
Inputs: shoppingItemId (required).
joiva_report_foodADestructiveInspect
Report that a food in Joiva's shared catalog is wrong: wrong nutrient values, wrong name, a duplicate, or not a real product. For values the user says are off (e.g. 'fat can't be right, it was porridge with water') or that are clearly implausible. Same path as the report button in the Joiva app: stored with a snapshot, checked at once against Joiva's reference sources (BLS, Open Food Facts), corrected only when a source backs it, escalated to a human moderator from the second report. It never deletes a food and never writes submitted numbers: suggestedPer100g and evidence are recorded and compared with the source. The food is identified by its catalog id (foodItemId). The user's own log entry is not changed by a report.
Inputs: foodItemId (required), whatIsWrong (required), kind, evidence, +2 more.
joiva_save_mealAInspect
Save foods as a named, reusable meal (recipe) in Joiva ('merk dir das als Power-Bowl'). Input: entryIds of logged entries; duplicates of one food are summed. Alternatively it takes components as (foodItemId, grams) pairs. The saved meal can then be logged again as a whole.
Inputs: name (required), entryIds, components.
joiva_save_recipeADestructiveIdempotentInspect
Saves a recipe as a reusable dish ('Gericht') in Joiva from ingredient names with grams, without logging anything ('Grüner Smoothie: 120 g Banane, 40 g Babyspinat, 200 ml Haferdrink'). Joiva binds every ingredient to its catalog like a recipe photo (German food database first, then USDA, never estimated). If no source knows an ingredient, nothing is saved and the reply names the unknown ingredient; a more precise name or a catalog foodItemId resolves it. A dish with the same name gets its ingredients replaced (same id; an existing recipe link shows the new version). The reply lists the catalog row each ingredient was bound to.
Inputs: name (required), ingredients (required).
joiva_search_foodsARead-onlyIdempotentInspect
Search the signed-in user's own and the shared Joiva food catalog by name. Hits carry per-100g nutrients, per-nutrient provenance (microsOrigin) and product traits (garung/behandlung as bought, sorte, herkunft, weidehaltung). Every food carries brand and certifications (bio, demeter, bioland, naturland, fairtrade; null = none known), which tell products of different makers apart.
Inputs: query (required), limit.
joiva_send_shopping_to_bringAInspect
Send the open Joiva shopping entries to the user's connected Bring! app. Requires the user to have linked a Bring account and picked a list in Joiva; otherwise the call returns an error saying to set that up in the app. Success is verified by reading back the Bring list: confirmed really arrived, missing did not (stays unmarked and goes out again next time).
Inputs: no named parameters.
joiva_set_macro_targetsADestructiveIdempotentInspect
Set the signed-in user's macro philosophy and targets. Semantics differ per macro: protein is a floor (at least X g), carbsMaxG a cap (at most; null = no cap), fat fills the remaining calorie budget automatically. clear=true removes the configuration.
Inputs: clear, proteinG, carbsMaxG, philosophy.
joiva_skip_mealADestructiveIdempotentInspect
Declare a meal slot (Frühstück/Mittagessen/Abendbrot/Snack: the time slot, not a saved dish) as skipped for one day: 'Mittagessen fällt heute aus'. The slot then counts as zero when the day is evaluated, instead of being an open gap. If planned entries exist in that slot, the call reports their count instead of writing; discardPlanned=true drops them. Eating into the slot later removes the skip automatically. This is not fasting: fasting windows are kept in Still.
Inputs: label (required), tz, date, discardPlanned.
joiva_unskip_mealBDestructiveIdempotentInspect
Undo a skipped meal slot: the slot becomes an open question again for that day.
Inputs: label (required), tz, date.
joiva_update_collectionADestructiveIdempotentInspect
Extends or edits a collection link by its shareId: appends dishes (add / addNames), removes dishes, renames it, or sets a new validity from now. The URL stays the same and shows the new state at once; someone who already copied the collection only gets the new dishes on the next tap.
Inputs: shareId (required), add, title, remove, +2 more.
joiva_update_food_ruleBDestructiveIdempotentInspect
Change an existing food rule by its ruleId: stance, reason, note, aliases.
Inputs: ruleId (required), kind, note, label, +4 more.
joiva_update_log_entryADestructiveIdempotentInspect
Change grams, time, preparation (garung, behandlung) or preparation note of an existing Joiva log entry. Changing the preparation re-derives that entry's nutrient values (measured BLS variant first, else documented USDA retention factors); the catalog product stays untouched.
Inputs: entryId (required), grams, notiz, garung, +4 more.
joiva_update_pantry_itemBDestructiveIdempotentInspect
Correct a pantry item: new absolute quantity, storage location, best-before or note. quantity: 0 marks it as used up.
Inputs: pantryItemId (required), note, unit, label, +5 more.
joiva_update_shopping_itemADestructiveIdempotentInspect
Change an entry on the Joiva shopping list: tick it off (status 'done' = bought), reopen it ('open'), or correct name or detail. A reopened entry is sent to Bring! again on the next send.
Inputs: shoppingItemId (required), label, detail, status.
stackwell_activate_planADestructiveIdempotentInspect
Make a plan the active one (deactivates the current active plan).
Inputs: planId (required).
stackwell_add_schedule_entryCInspect
Add a supplement to a plan's schedule at a time slot.
Inputs: dosage (required), planId (required), timeSlot (required), supplementId (required), +4 more.
stackwell_add_shopping_itemAInspect
Add a supplement or health product to the Stackwell shopping list. Groceries and food are not kept on this list; they belong on Joiva's shopping list. Borderline items that belong here because they sit in the supplement plan: protein powder, collagen, MCT oil, electrolyte powder.
Inputs: name (required), brand, notes.
stackwell_archive_supplementADestructiveIdempotentInspect
Archive (or unarchive) a supplement: removes it from the active stack without deleting history.
Inputs: supplementId (required), archived.
stackwell_create_planAInspect
Create a new intake plan (optionally as a new version of an existing plan) with schedule entries. The new plan is not activated.
Inputs: name (required), reason, entries, parentPlanId.
stackwell_create_supplementBInspect
Add a supplement product to the signed-in user's Stackwell stack with its ingredients per dose.
Inputs: name (required), ingredients (required), form, brand, +6 more.
stackwell_delete_intakeCDestructiveIdempotentInspect
Delete an intake log entry.
Inputs: logId (required).
stackwell_delete_shopping_itemBDestructiveIdempotentInspect
Remove an item from the shopping list (e.g. a duplicate or obsolete entry).
Inputs: itemId (required).
stackwell_get_active_planARead-onlyIdempotentInspect
Get the signed-in user's active Stackwell intake plan with its schedule (supplements, dosages, time slots).
Inputs: no named parameters.
stackwell_get_adherenceBRead-onlyIdempotentInspect
Daily supplement adherence (taken vs planned) for a date range.
Inputs: endDate (required), startDate (required).
stackwell_get_day_detailBRead-onlyIdempotentInspect
Journal detail for one day: intake logs, planned entries and plan activations.
Inputs: date (required).
stackwell_get_health_contextARead-onlyIdempotentInspect
The signed-in user's Stackwell health context: goals, conditions, diet, fasting protocol, lifestyle, biometrics, restrictions.
Inputs: no named parameters.
stackwell_get_nutrient_totalsARead-onlyIdempotentInspect
Total daily nutrient intake across the active stack, compared against the user's followed reference profiles (upper limits, RDAs).
Inputs: no named parameters.
stackwell_get_planBRead-onlyIdempotentInspect
Get one intake plan with its schedule entries.
Inputs: planId (required).
stackwell_get_shopping_listARead-onlyIdempotentInspect
Get the signed-in user's Stackwell shopping list: supplements and health products only (running low / empty plus manual items). Groceries are not part of this list; they are kept in Joiva.
Inputs: no named parameters.
stackwell_get_supplement_stackARead-onlyIdempotentInspect
Get the signed-in user's Stackwell supplement stack (all supplements with ingredients, inventory and pause state).
Inputs: includeArchived.
stackwell_get_today_intakeARead-onlyIdempotentInspect
Get the signed-in user's Stackwell supplement intake logs for today.
Inputs: no named parameters.
stackwell_list_plansARead-onlyIdempotentInspect
List all of the signed-in user's intake plans (active, drafts, history).
Inputs: no named parameters.
stackwell_list_supplement_pausesBRead-onlyIdempotentInspect
List planned intake pauses (optionally for one supplement).
Inputs: supplementId.
stackwell_log_intakeAInspect
Log that the signed-in user took a supplement. Defaults to now; takenAt records a dose taken earlier in the same step.
Inputs: dosage (required), dosageUnit (required), supplementId (required), notes, +2 more.
stackwell_mark_supplement_emptyADestructiveIdempotentInspect
Mark a supplement as used up; it goes onto the shopping list.
Inputs: supplementId (required).
stackwell_pause_supplementCDestructiveIdempotentInspect
Pause (or resume) a supplement, e.g. during a fast or a wash-out phase.
Inputs: supplementId (required), paused, reason.
stackwell_remove_schedule_entryCDestructiveIdempotentInspect
Remove a schedule entry from a plan.
Inputs: entryId (required).
stackwell_remove_supplement_pauseCDestructiveIdempotentInspect
Delete a planned intake pause.
Inputs: pauseId (required).
stackwell_set_supplement_ingredientsCDestructiveIdempotentInspect
Replace the ingredient list of a supplement.
Inputs: ingredients (required), supplementId (required).
stackwell_set_supplement_pauseAInspect
Create a planned, time-boxed intake pause (e.g. stop biotin 48h before a blood draw). Covered days leave the adherence denominator and show as planned_pause in the history.
Inputs: startsOn (required), supplementId (required), endsOn, reason.
stackwell_skip_intakeBInspect
Record that the signed-in user skipped a planned supplement intake (with a reason). Defaults to now; takenAt records a dose skipped earlier.
Inputs: dosage (required), dosageUnit (required), supplementId (required), reason, +2 more.
stackwell_update_health_contextBDestructiveIdempotentInspect
Update the health context (only the given fields change). Arrays replace the stored list.
Inputs: diet, goals, notes, gender, +9 more.
stackwell_update_intakeCDestructiveIdempotentInspect
Correct an intake log (dosage, unit, time).
Inputs: logId (required), dosage, takenAt, dosageUnit.
stackwell_update_schedule_entryCDestructiveIdempotentInspect
Change a schedule entry (slot, dosage, meal relation, time, notes).
Inputs: entryId (required), notes, dosage, timeSlot, +3 more.
stackwell_update_shopping_itemADestructiveIdempotentInspect
Edit a shopping-list item's name, brand or notes (only the given fields change; null clears brand/notes).
Inputs: itemId (required), name, brand, notes.
stackwell_update_shopping_item_statusADestructiveIdempotentInspect
Set a shopping-list item's status to 'ordered' or 'delivered'. Delivered restocks the linked supplement.
Inputs: itemId (required), status (required), totalUnits.
stackwell_update_supplementCDestructiveIdempotentInspect
Update a supplement's details (only the given fields change).
Inputs: supplementId (required), form, name, brand, +10 more.
still_add_biomarker_readingAInspect
Record a glucose and/or ketone reading in Still (linked to the running fast, GKI derived, mirrored to Vora). At least one of glucose or ketone is required.
Inputs: note, ketoneMmol, measuredAt, glucoseUnit, +3 more.
still_end_fastAInspect
End the signed-in user's current fast now (or at the given time) by recording an eating event in Still.
Inputs: at.
still_get_fasting_historyBRead-onlyIdempotentInspect
Recent fasting sessions (newest first) with start, end and duration in minutes.
Inputs: limit.
still_get_fasting_stateARead-onlyIdempotentInspect
Get the signed-in user's current Still fasting state: whether fasting, since when, elapsed time, active template and target end time, plus the enabled templates.
Inputs: no named parameters.
still_get_fasting_summaryARead-onlyIdempotentInspect
Aggregated fasting stats for the signed-in user: current fast, day streak, longest / average fast, total fasts, fasts in the last 7 and 30 days.
Inputs: no named parameters.
still_list_templatesARead-onlyIdempotentInspect
List fasting templates available to the signed-in user (global presets and their own) with fasting/eating hours; marks the selected and enabled ones.
Inputs: no named parameters.
still_select_fasting_templateBDestructiveIdempotentInspect
Switch the signed-in user's active Still fasting template (by template id, e.g. 16:8 → 19:5).
Inputs: templateId (required).
still_start_fastAInspect
Start a fast for the signed-in user now (or at the given time). Fails if a fast is already running.
Inputs: at.
vitalli_connection_statusARead-onlyIdempotentInspect
Diagnostics for this connection: gateway build (commit, build time), server time, the apps the user has enabled for AI access, and the complete list of tool names the gateway serves for this account right now. An MCP client fetches the tool list once when connecting, so this list can contain tools that a long-running client does not show yet. Also returns reportHeader, a one-line statement (German) of the gateway build and query time that a test note or bug report can be dated with.
Inputs: no named parameters.
vitalli_create_contactAInspect
Add a person to the signed-in user's care network (e.g. a doctor). Near-duplicates (name match ≥ 0.85) return the existing record with deduped=true unless force=true.
Inputs: kind (required), lastName (required), role, tags, +9 more.
vitalli_create_organizationBInspect
Add an organization to the care network. The address is geocoded automatically. Near-duplicates return the existing record with deduped=true unless force=true.
Inputs: kind (required), name (required), city, tags, +10 more.
vitalli_delete_contactADestructiveIdempotentInspect
Remove a contact from the care network (soft delete).
Inputs: contactId (required).
vitalli_delete_organizationBDestructiveIdempotentInspect
Remove an organization from the care network (soft delete).
Inputs: organizationId (required).
vitalli_get_contactARead-onlyIdempotentInspect
Get one contact by id, including its organization roles.
Inputs: contactId (required).
vitalli_get_daily_metricsARead-onlyIdempotentInspect
Get the signed-in user's daily wearable values from the Vitalli hub, one entry per day, newest first: sleep score, total sleep, efficiency, deep, REM and light sleep, awake time, sleep latency, time in bed and bed times; readiness score, resting heart rate, average night heart rate, HRV, respiratory rate, SpO2 and skin temperature deviation; steps, active calories and activity score. Each day names its primary device (Oura, Polar, Garmin, Apple Health or Withings, preferred in that order; provider apple_health is the Apple Watch and other apps writing to Apple Health), lists fields that came from another device in fieldSources, and carries syncedAt. hrvMethod says what hrvMs is: rmssd (Oura, Polar, Garmin) or sdnn (Apple Health); the two are not comparable. latestNight is the newest day in the range with sleep data, devices lists the connected devices with their last sync. Fields a device does not measure are null; Apple Health has no sleep score, so sleepScore is null there. Sleep stages and bed times exist for Oura, Garmin and Apple Health. Days are calendar days in Europe/Berlin, a night counts for the morning it ended. Values are device measurements and the providers' own scores, not a medical assessment.
Inputs: date, days.
vitalli_get_health_profileARead-onlyIdempotentInspect
Get the signed-in user's Vitalli hub health profile: date of birth, biological sex, weight, height, blood type.
Inputs: no named parameters.
vitalli_get_longevityARead-onlyIdempotentInspect
Get the signed-in user's cross-app longevity overview as computed by Vitalli: a composite score; PhenoAge and its difference to chronological age, calculated with the published PhenoAge formula from Vora lab values, with notes on factors that can distort a reading; fasting adherence from Still; a supplement stack score from Stackwell; and, with a connected wearable, a fitness component. Statistical estimates from the user's own data, not a medical assessment.
Inputs: no named parameters.
vitalli_get_organizationCRead-onlyIdempotentInspect
Get one organization by id.
Inputs: organizationId (required).
vitalli_guideARead-onlyIdempotentInspect
Step-by-step procedures for common tasks with the Vitalli tools, one topic per answer: 'food' (Essen eintragen (Joiva)), 'time' (Vortag, Uhrzeit, Mahlzeit), 'meals' (Mahlzeit bündeln, Gericht merken), 'corrections' (Korrigieren), 'planning' (Mahlzeiten planen), 'supplements' (Supplemente (Stackwell)), 'fasting' (Fasten (Still)), 'labs' (Laborwerte und Beobachtungen (Vora)). Each answer names the tools, the order and the fields for that task, for example how a described dish with an ingredient list is logged for yesterday evening. Without a topic it lists the topics. Also returns the apps this account has enabled.
Inputs: topic.
vitalli_link_contact_to_orgCInspect
Attach a contact to an organization with a role (e.g. Dr. X works at practice Y).
Inputs: contactId (required), organizationId (required), endedAt, isPrimary, +2 more.
vitalli_list_contactsARead-onlyIdempotentInspect
List the signed-in user's care-network contacts (doctors, therapists, trainers, family, …). Optionally filtered by organization id.
Inputs: orgId.
vitalli_list_organizationsARead-onlyIdempotentInspect
List the signed-in user's care-network organizations (practices, hospitals, labs, pharmacies, gyms, insurers, …).
Inputs: no named parameters.
vitalli_update_contactCDestructiveIdempotentInspect
Update fields of a contact (only the given fields change).
Inputs: contactId (required), kind, role, tags, +9 more.
vitalli_update_health_profileADestructiveIdempotentInspect
Update the signed-in user's Vitalli hub health profile (only the given fields change).
Inputs: heightCm, weightKg, bloodType, dateOfBirth, +1 more.
vitalli_update_organizationCDestructiveIdempotentInspect
Update fields of an organization (only the given fields change). Address changes are re-geocoded.
Inputs: organizationId (required), city, kind, name, +10 more.
vora_add_allergyCInspect
Add an allergy to the signed-in user's Vora record.
Inputs: allergen (required), notes, reaction, severity, +1 more.
vora_add_biomarkerAInspect
Record a biomarker / lab value for the signed-in user with unit conversion, fasting-aware plausibility check and GKI derivation (e.g. glucose 95 mg/dL, ketone 1.2 mmol/L, weight 82 kg, CRP 0.4 mg/dL). A reply of created: false, deduped: true means success: the same reading was already stored (typically entered in the app shortly before) and this one was merged into that row, whose id is returned. This path never deletes anything.
Inputs: unit (required), value (required), biomarker (required), notes, +5 more.
vora_add_bristolBInspect
Record a Bristol stool entry (type 1-7) with optional flags for the signed-in user.
Inputs: type (required), date, blood, mucus, +5 more.
vora_add_conditionCInspect
Add a medical condition / diagnosis to the signed-in user's Vora record. Dates are YYYY-MM-DD.
Inputs: name (required), notes, icdCode, resolvedAt, +2 more.
vora_add_family_historyCInspect
Add a family medical history entry to the signed-in user's Vora record.
Inputs: relationship (required), conditionName (required), notes, icdCode, +2 more.
vora_add_medicationBInspect
Add a medication (e.g. an antibiotic course with start/stop dates) to the signed-in user's Vora record. Dates are YYYY-MM-DD.
Inputs: name (required), notes, dosage, status, +4 more.
vora_add_moodBInspect
Record the signed-in user's mood: score -2 (very bad) .. 2 (very good), daily or momentary, with optional drivers from Vora's mood driver catalog and a note.
Inputs: date (required), score (required), kind, note, +2 more.
vora_add_observationAInspect
Record a generic measured value / tracked metric (free-form biomarker name, string value) at a point in time for the signed-in user. The value is stored as given, without unit conversion. A reply of created: false, deduped: true means success: an equivalent reading already existed and this one was merged into it (its id is returned).
Inputs: value (required), biomarker (required), unit, notes, +1 more.
vora_add_symptomBInspect
Record a symptom with a severity score (1-10) on a given date for the signed-in user. Date is YYYY-MM-DD.
Inputs: score (required), symptomName (required), date, notes, +1 more.
vora_delete_biomarkerADestructiveIdempotentInspect
Delete one biomarker observation from the signed-in user's Vora record (by id). Values that came from a document extraction or a CSV import are protected and return an error unless force=true; the regular way to remove those is deleting the document or rolling back the import in Vora.
Inputs: observationId (required), force.
vora_delete_conditionBDestructiveIdempotentInspect
Delete a condition from the signed-in user's Vora record (by id).
Inputs: conditionId (required).
vora_delete_moodBDestructiveIdempotentInspect
Delete a mood entry (by id).
Inputs: moodId (required).
vora_delete_observationADestructiveIdempotentInspect
Delete one observation by id. Rows that came from a document extraction or a CSV import are protected unless force=true; the regular way to remove those is deleting the document or rolling back the import in Vora.
Inputs: id (required), force.
vora_delete_symptomCDestructiveIdempotentInspect
Delete a symptom snapshot (by id).
Inputs: symptomId (required).
vora_delete_traffic_lightBDestructiveIdempotentInspect
Removes the signed-in user's traffic-light levels for one biomarker. The levels are gone afterwards.
Inputs: slug (required).
vora_get_health_profileARead-onlyIdempotentInspect
Get the signed-in user's full Vora health profile: demographics, conditions, medications, allergies, family history, latest biomarkers (last 50), and AI insights. Read-only.
Inputs: no named parameters.
vora_get_latest_biomarkersARead-onlyIdempotentInspect
Latest value per PhenoAge-relevant biomarker (albumin, creatinine, glucose, CRP, lymphocytes, MCV, RDW, ALP, WBC) plus the current fasting context.
Inputs: no named parameters.
vora_get_traffic_lightsARead-onlyIdempotentInspect
The signed-in user's own traffic-light levels per biomarker (e.g. GKI: green below 1, yellow 1 to below 2, …), as set by the user; Vora suggests none. Each level has color, from/upTo (upTo is exclusive: a value exactly on a limit belongs to the next level), optional label and the date it was set. Without slug: every biomarker that has levels.
Inputs: slug.
vora_list_biomarkersARead-onlyIdempotentInspect
List the signed-in user's biomarker observations (lab values, glucose, ketones, weight, …), newest first, up to 200, filterable by biomarker name and/or date range.
Inputs: order, dateTo, dateFrom, biomarker.
vora_list_bristolBRead-onlyIdempotentInspect
List the signed-in user's Bristol stool entries (type 1-7 plus flags).
Inputs: no named parameters.
vora_list_conditionsARead-onlyIdempotentInspect
List the signed-in user's conditions / diagnoses.
Inputs: no named parameters.
vora_list_documentsARead-onlyIdempotentInspect
List the signed-in user's uploaded medical documents (lab reports, findings) with type, date, provider and extraction status. Metadata only.
Inputs: no named parameters.
vora_list_moodBRead-onlyIdempotentInspect
List the signed-in user's mood entries (score -2..2 with drivers) for a date range.
Inputs: to, from.
vora_list_mood_driversARead-onlyIdempotentInspect
Catalog of the mood driver categories and values that a mood entry accepts.
Inputs: no named parameters.
vora_list_observationsARead-onlyIdempotentInspect
List the signed-in user's recorded observations (biomarker values) with their ids, filterable by biomarker name, date range or source.
Inputs: to, from, limit, source, +1 more.
vora_list_symptomsARead-onlyIdempotentInspect
List the signed-in user's tracked symptoms (severity 1-10 snapshots). By default active ones only.
Inputs: includeResolved.
vora_resolve_symptomBDestructiveIdempotentInspect
Mark a tracked symptom as resolved / no longer active (by id).
Inputs: symptomId (required).
vora_set_traffic_lightADestructiveIdempotentInspect
Sets the signed-in user's own traffic-light levels for one numeric biomarker and replaces existing ones. The limits are the user's own; Vora suggests and rates nothing. 2 to 5 levels: n-1 limits in ascending order for n levels, plus the direction. Colors follow from count and direction (lower_better: green, yellow, orange, red, violet from low to high values; higher_better: reversed). Scale values such as the Bristol chart have no levels.
Inputs: slug (required), bounds (required), direction (required), labels.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm46 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.169 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.