log_body_metrics
Turn weight and body composition readings from smart scale apps, photos, or manual entry into a dated log entry; re-running for the same date updates it.
Instructions
UNIT INPUTS: never convert units yourself. Pass the user's number for a _lb / _mi / _in field exactly as stated, and when they gave kg / km / cm set input_weight_unit / input_distance_unit / input_length_unit in that same object. Omit the companion when the number is already lb / mi / in. The tool converts once before storage, so this overrides any wording that asks you to do the arithmetic.
Log or update body composition metrics for a given date. Use when the user shares weight, body fat percentage, or any other body composition reading — whether typed manually, copy-pasted from a smart scale app, or described from a photo of a scale display.
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).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date of the measurement. Format: YYYY-MM-DD. Default to today. | |
| notes | No | Any context worth noting (e.g. "post-workout", "morning fasted"). | |
| hips_in | No | Hip circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| chest_in | No | Chest circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| waist_in | No | Waist circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| calf_l_in | No | Left calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| calf_r_in | No | Right calf circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| weight_lb | No | Body weight. In lb, or kg with input_weight_unit set. See UNIT INPUTS. | |
| bicep_l_in | No | Left bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| bicep_r_in | No | Right bicep circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| thigh_l_in | No | Left thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| thigh_r_in | No | Right thigh circumference. In in, or cm with input_length_unit set. See UNIT INPUTS. | |
| fat_mass_lb | No | Fat mass. Calculate from weight and body fat % if not explicitly stated. In lb, or kg with input_weight_unit set. See UNIT INPUTS. | |
| protein_pct | No | Protein percentage (0-100). | |
| body_fat_pct | No | Body fat percentage (0-100). | |
| bone_mass_lb | No | Bone mass. In lb, or kg with input_weight_unit set. See UNIT INPUTS. | |
| lean_mass_lb | No | 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. | |
| hydration_pct | No | Body water/hydration percentage. | |
| muscle_mass_lb | No | 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. | |
| input_length_unit | No | Set to cm when the user gave cm for the _in fields in this object. Omit when they are already in. | |
| input_weight_unit | No | Set to kg when the user gave kg for the _lb fields in this object. Omit when they are already lb. | |
| skeletal_muscle_pct | No | Skeletal muscle percentage (0-100). | |
| visceral_fat_rating | No | Visceral fat rating (scale varies by device, typically 1-59). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes | Human-readable result text returned by the tool. |