Skip to main content
Glama

log_body_metrics

Destructive

UNIT INPUTS: value: pass the user's number unconverted; tool converts once before storage. alternate_unit: set the field's matching input_* companion; canonical_unit: omit companion. precedence: overrides instructions to convert manually.

Log or update body composition metrics for a given date. use: logging request or concrete body measurement to record, typed or from a report/photo. Question/hypothetical alone: no write.

PROACTIVE DATA COLLECTION: If the user hasn't shared their data yet, ask them to copy-paste the output from their scale app or upload a photo of the display — this lets you parse all fields at once instead of asking one by one.

INFER — do not ask:

  • date: default to today; infer from context ("this morning", "yesterday")

  • derived fields (lean_mass_lb, fat_mass_lb): calculate from weight and body fat % if possible — lean = weight × (1 - bf%/100), fat = weight × bf%/100

The *_pct fields are percentages 0-100. The *_in fields are manual tape measurements, not bioimpedance scale readings.

BMI is not a field here. It is derived automatically at read time from the user's canonical height and their resolved weight for the day -- never ask the user for BMI, and never try to log it.

Every field except date is optional; log any subset. One row per day. Calling this tool twice on the same date updates the existing entry (upsert).

DELETE: action='delete' with date and delete_fields clears only those measurements from the user's manual entry for that day, keeping the rest; the entry is removed once nothing is left. A weigh-in is weight_lb. Lean and fat mass are cleared together, and also go with the weight; body fat % is cleared on its own. The reply lists exactly what was cleared. Other value fields are ignored. It cannot remove readings a connected scale or app imported: those come back on the next sync, so tell the user to delete them in that app. ASK for confirmation if the user's intent is ambiguous.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesDate of the measurement. Format: YYYY-MM-DD. Default to today.
notesNoAny context worth noting (e.g. "post-workout", "morning fasted").
actionNoDefault 'log'. See DELETE above.
hips_inNoHip circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
chest_inNoChest circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
waist_inNoWaist circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
calf_l_inNoLeft calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
calf_r_inNoRight calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
weight_lbNoBody weight, between 50 and 700. In lb, or kg with input_weight_unit set. See UNIT INPUTS.
bicep_l_inNoLeft bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
bicep_r_inNoRight bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
thigh_l_inNoLeft thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
thigh_r_inNoRight thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.
fat_mass_lbNoFat mass. Calculate from weight and body fat % if not explicitly stated. In lb, or kg with input_weight_unit set. See UNIT INPUTS.
protein_pctNoProtein percentage (0-100).
body_fat_pctNoBody fat percentage (0-100).
bone_mass_lbNoBone mass. In lb, or kg with input_weight_unit set. See UNIT INPUTS.
lean_mass_lbNoLean (non-fat) mass. Calculate from weight and body fat % if not explicitly stated. In lb, or kg with input_weight_unit set. See UNIT INPUTS.
delete_fieldsNoMeasurements to delete. See DELETE above.
hydration_pctNoBody water/hydration percentage.
muscle_mass_lbNoSkeletal muscle mass. Skeletal muscle tissue specifically, NOT lean_mass_lb, which is total non-fat mass including water, organs and bone. In lb, or kg with input_weight_unit set. See UNIT INPUTS.
input_length_unitNoSet to cm when the user gave cm for the _in fields in this object. Omit when they are already in.
input_weight_unitNoSet to kg when the user gave kg for the _lb fields in this object. Omit when they are already lb.
skeletal_muscle_pctNoSkeletal muscle percentage (0-100).
visceral_fat_ratingNoVisceral fat rating (scale varies by device, typically 1-59).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYesHuman-readable result text returned by the tool.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Body weight in pounds, between 50 and 700. Convert from kilograms if the user spoke in kg (kg x 2.2046). In lb, or kg with input_weight_unit set. See UNIT INPUTS."New value: +"Body weight, between 50 and 700. In lb, or kg with input_weight_unit set. See UNIT INPUTS."
  2. Changed2 schema fields changed
    • addedInput schema / properties / action
      Added value: +{
      +  "description": "Default 'log'. See DELETE above.",
      +  "enum": [
      +    "log",
      +    "delete"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / delete_fields
      Added value: +{
      +  "description": "Measurements to delete. See DELETE above.",
      +  "items": {
      +    "enum": [
      +      "weight_lb",
      +      "body_fat_pct",
      +      "lean_mass_lb",
      +      "fat_mass_lb",
      +      "visceral_fat_rating",
      +      "hydration_pct",
      +      "bone_mass_lb",
      +      "muscle_mass_lb",
      +      "skeletal_muscle_pct",
      +      "protein_pct",
      +      "waist_in",
      +      "hips_in",
      +      "chest_in",
      +      "bicep_l_in",
      +      "bicep_r_in",
      +      "thigh_l_in",
      +      "thigh_r_in",
      +      "calf_l_in",
      +      "calf_r_in"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Body weight. In lb, or kg with input_weight_unit set. See UNIT INPUTS."New value: +"Body weight in pounds, between 50 and 700. Convert from kilograms if the user spoke in kg (kg x 2.2046). In lb, or kg with input_weight_unit set. See UNIT INPUTS."
  4. Changed23 schema fields changed
    • addedInput schema / properties / bicep_l_in
      Added value: +{
      +  "description": "Left bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • addedInput schema / properties / bicep_r_in
      Added value: +{
      +  "description": "Right bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • removedInput schema / properties / bmi
      Removed value: -{
      -  "description": "Body mass index. Optional — include if the scale or app reports it.",
      -  "type": "number"
      -}
    • changedInput schema / properties / body_fat_pct / description
      Previous value: -"Body fat percentage (0–100). Optional."New value: +"Body fat percentage (0-100)."
    • changedInput schema / properties / bone_mass_lb / description
      Previous value: -"Bone mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional."New value: +"Bone mass. In lb, or kg with input_weight_unit set. See UNIT INPUTS."
    • addedInput schema / properties / calf_l_in
      Added value: +{
      +  "description": "Left calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • addedInput schema / properties / calf_r_in
      Added value: +{
      +  "description": "Right calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • addedInput schema / properties / chest_in
      Added value: +{
      +  "description": "Chest circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • changedInput schema / properties / fat_mass_lb / description
      Previous value: -"Fat mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional — calculate from weight and body fat % if not explicitly stated."New value: +"Fat mass. Calculate from weight and body fat % if not explicitly stated. In lb, or kg with input_weight_unit set. See UNIT INPUTS."
    • addedInput schema / properties / hips_in
      Added value: +{
      +  "description": "Hip circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • changedInput schema / properties / hydration_pct / description
      Previous value: -"Body water/hydration percentage. Optional."New value: +"Body water/hydration percentage."
    • addedInput schema / properties / input_length_unit
      Added value: +{
      +  "description": "Set to cm when the user gave cm for the _in fields in this object. Omit when they are already in.",
      +  "enum": [
      +    "in",
      +    "cm"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / input_weight_unit
      Added value: +{
      +  "description": "Set to kg when the user gave kg for the _lb fields in this object. Omit when they are already lb.",
      +  "enum": [
      +    "lb",
      +    "kg"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / lean_mass_lb / description
      Previous value: -"Lean (non-fat) mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional — calculate from weight and body fat % if not explicitly stated."New value: +"Lean (non-fat) mass. Calculate from weight and body fat % if not explicitly stated. In lb, or kg with input_weight_unit set. See UNIT INPUTS."
    • addedInput schema / properties / muscle_mass_lb
      Added value: +{
      +  "description": "Skeletal muscle mass. Skeletal muscle tissue specifically, NOT lean_mass_lb, which is total non-fat mass including water, organs and bone. In lb, or kg with input_weight_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • changedInput schema / properties / notes / description
      Previous value: -"Any context worth noting (e.g. \"post-workout\", \"morning fasted\"). Optional."New value: +"Any context worth noting (e.g. \"post-workout\", \"morning fasted\")."
    • addedInput schema / properties / protein_pct
      Added value: +{
      +  "description": "Protein percentage (0-100).",
      +  "type": "number"
      +}
    • addedInput schema / properties / skeletal_muscle_pct
      Added value: +{
      +  "description": "Skeletal muscle percentage (0-100).",
      +  "type": "number"
      +}
    • addedInput schema / properties / thigh_l_in
      Added value: +{
      +  "description": "Left thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • addedInput schema / properties / thigh_r_in
      Added value: +{
      +  "description": "Right thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • changedInput schema / properties / visceral_fat_rating / description
      Previous value: -"Visceral fat rating (scale varies by device, typically 1–59). Optional."New value: +"Visceral fat rating (scale varies by device, typically 1-59)."
    • addedInput schema / properties / waist_in
      Added value: +{
      +  "description": "Waist circumference. In in, or cm with input_length_unit set. See UNIT INPUTS.",
      +  "type": "number"
      +}
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Body weight in POUNDS, always — regardless of the user’s display unit. If the user gave kg, convert to pounds before calling (kg × 2.2046). Optional."New value: +"Body weight. In lb, or kg with input_weight_unit set. See UNIT INPUTS."
  5. Changed4 schema fields changed
    • changedInput schema / properties / bone_mass_lb / description
      Previous value: -"Bone mass in pounds. Optional."New value: +"Bone mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional."
    • changedInput schema / properties / fat_mass_lb / description
      Previous value: -"Fat mass in pounds. Optional — calculate from weight and body fat % if not explicitly stated."New value: +"Fat mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional — calculate from weight and body fat % if not explicitly stated."
    • changedInput schema / properties / lean_mass_lb / description
      Previous value: -"Lean (non-fat) mass in pounds. Optional — calculate from weight and body fat % if not explicitly stated."New value: +"Lean (non-fat) mass in POUNDS, always. Convert from kg if needed (kg × 2.2046). Optional — calculate from weight and body fat % if not explicitly stated."
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Body weight in pounds. Optional."New value: +"Body weight in POUNDS, always — regardless of the user’s display unit. If the user gave kg, convert to pounds before calling (kg × 2.2046). Optional."
  6. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.