log_run
UNIT INPUTS: never convert units yourself. For each canonical field below, pass the user's number exactly as stated when it is already in the canonical unit; when they gave the alternate unit instead, pass the same number unconverted and set the matching companion field so the tool converts once before storage. Omit the companion when the number is already canonical. This overrides any wording that asks you to do the arithmetic.
_lb fields: lb, or kg with input_weight_unit set.
_mi fields: mi, or km with input_distance_unit set.
_in fields: in, or cm with input_length_unit set.
_stated_g fields: g, or oz with input_mass_unit set.
_stated_ml fields: ml, or fl_oz with input_volume_unit set.
RUNNING ONLY: use log_run only for running on foot. A bike/cycling ride, walk, or rowing session is not a run even when it has distance and duration. For those, use log_workout with focus_type Cycling, Walking, or Rowing plus the user's native distance field and duration_sec.
Create an editable running card. Use for a completed run OR a future run plan.
intent:
log (default): the run happened. date, distance_mi and duration_sec are required. This writes the completed run and returns a card marker for in-app editing.
plan: the run has NOT happened yet. Create a planned run card. Never put a future run in completed history.
RUN TYPE: distinguish easy, long, tempo, interval, recovery, race, fartlek, threshold, progression and hills when the runner or workout structure supports it. If a wearable run is unspecified, do NOT call it easy merely because it was a run.
DETAIL: preserve elapsed time, HR, cadence, power, elevation, RPE, splits and structured segments only when supplied by the user/source. Never invent sensor data or splits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rpe | No | RPE 1-10. For a plan this is target RPE. | |
| date | No | YYYY-MM-DD. Completed runs default to today when context allows; planned runs use the intended date when known. | |
| notes | No | ||
| avg_hr | No | Average heart rate only when known. | |
| intent | Yes | log = completed run; plan = future run. Elias uses plan for a workout the runner has not done yet. | |
| splits | No | Actual splits/laps only when supplied by the runner/source. Never invent. | |
| surface | No | ||
| run_type | No | Classify only when the runner or workout structure supports it. Do not turn an unspecified wearable run into easy. | |
| segments | No | Workout structure, e.g. warmup, 6x800m threshold, recovery, cooldown. This may describe a plan or what was actually performed. | |
| pain_notes | No | Pain/discomfort exactly as the runner described it. | |
| start_time | No | Local HH:MM only when known. | |
| avg_power_w | No | Average running power in watts only when known. | |
| distance_mi | No | Distance. In mi, or km with input_distance_unit set. See UNIT INPUTS. | |
| elapsed_sec | No | Wall-clock elapsed time including pauses, only when known. | |
| duration_sec | No | Moving/workout duration in seconds. | |
| avg_cadence_spm | No | Average running cadence in steps/min only when known. | |
| elevation_gain_m | No | Elevation gain in metres only when known. | |
| perceived_effort | No | Post-run check-in only. | |
| input_distance_unit | No | Set to km when the user gave km for the _mi fields in this object. Omit when they are already mi. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes | Human-readable result text returned by the tool. |