Body Metrics reference

List, record and delete daily weight, body fat and steps readings, one reading per metric per day.

The DailyGoal API is not available on the Free plan. It works with a paid plan or during a free trial. See plans.

Operations

list_body_metrics

GET https://api.dailygoal.fit/v1/body-metrics

MCP tool list_body_metrics · Read-only

Lists the user's weight, body fat or steps readings (at most one per day) for a date range of up to 366 days, oldest first, with no paging. Omit `to` for today and `from` for 29 days before `to`, a 30-day range that includes both ends. Values come in canonical units with the user's display unit beside them. This reads measurements only: for meals use list_food_entries, for training use list_workouts, and for goal progress use get_daily_goals.

Input

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
fromoptionalstring (YYYY-MM-DD)First day, YYYY-MM-DD. Defaults to 29 days before `to`, so the default range covers 30 days including both ends.
tooptionalstring (YYYY-MM-DD)Last day, YYYY-MM-DD. Defaults to today's Activity Day.

Output

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
fromstring (YYYY-MM-DD)
tostring (YYYY-MM-DD)
timezonestringIANA timezone that defines the user's Activity Day.
readingsobject[]One reading per day that has one, oldest first. There is no cursor: the range is complete.
readings[].datestring (YYYY-MM-DD)
readings[].valuenumberCanonical value: kilograms, percent or steps.
readings[].unit"kg" | "percent" | "steps"
readings[].displayobjectThe same reading in the user's preferred unit.
readings[].display.valuenumber
readings[].display.unit"kg" | "lb" | "percent" | "steps"

Example request

REST
curl "https://api.dailygoal.fit/v1/body-metrics?metric=weight&from=2026-09-12&to=2026-09-14" \
  -H "Authorization: Bearer $DAILYGOAL_API_TOKEN"
MCP tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_body_metrics",
    "arguments": {
      "metric": "weight",
      "from": "2026-09-12",
      "to": "2026-09-14"
    }
  }
}

Example response

Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.

json
{
  "metric": "weight",
  "from": "2026-09-12",
  "to": "2026-09-14",
  "timezone": "Europe/London",
  "readings": [
    {
      "date": "2026-09-12",
      "value": 78.4,
      "unit": "kg",
      "display": {
        "value": 78.4,
        "unit": "kg"
      }
    },
    {
      "date": "2026-09-13",
      "value": 78.1,
      "unit": "kg",
      "display": {
        "value": 78.1,
        "unit": "kg"
      }
    },
    {
      "date": "2026-09-14",
      "value": 77.9,
      "unit": "kg",
      "display": {
        "value": 77.9,
        "unit": "kg"
      }
    }
  ]
}

Errors

set_body_metrics

PUT https://api.dailygoal.fit/v1/body-metrics

MCP tool set_body_metrics · Changes data · Destructive

Records weight, body fat or steps readings: one metric per call, up to 100 days per call, for example to backfill history. Each reading replaces the day's existing value for that metric. Weight needs `unit` `kg` or `lb`. Omit `date` for today's Activity Day; the response echoes each resolved date and the timezone. Updates the user's latest weight or body fat, steps goals, streak and badges as the app does. To remove a reading use delete_body_metric; to log meals use log_food_entry.

Input

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
readingsobject[]1 to 100 readings. A later reading for the same day wins.
readings[].dateoptionalstring (YYYY-MM-DD)YYYY-MM-DD in the user's timezone. Defaults to today's Activity Day. Future dates are rejected.
readings[].valuenumberWeight 20-500 kg (or the same in lb), body fat 2-80 percent, or steps 0-100,000.
readings[].unitoptional"kg" | "lb" | "percent" | "steps"Required for weight: `kg` or `lb`. Optional for body fat (`percent`) and steps (`steps`).

Output

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
timezonestringIANA timezone that defines the user's Activity Day.
readingsobject[]Each stored reading with its resolved date.
readings[].datestring (YYYY-MM-DD)
readings[].valuenumberCanonical value: kilograms, percent or steps.
readings[].unit"kg" | "percent" | "steps"
readings[].displayobjectThe same reading in the user's preferred unit.
readings[].display.valuenumber
readings[].display.unit"kg" | "lb" | "percent" | "steps"
readings[].changedbooleanFalse when the day already held this value.

Example request

REST
curl -X PUT "https://api.dailygoal.fit/v1/body-metrics" \
  -H "Authorization: Bearer $DAILYGOAL_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"metric":"weight","readings":[{"date":"2026-09-13","value":78.1,"unit":"kg"},{"value":77.9,"unit":"kg"}]}'
MCP tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "set_body_metrics",
    "arguments": {
      "metric": "weight",
      "readings": [
        {
          "date": "2026-09-13",
          "value": 78.1,
          "unit": "kg"
        },
        {
          "value": 77.9,
          "unit": "kg"
        }
      ]
    }
  }
}

Example response

Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.

json
{
  "metric": "weight",
  "timezone": "Europe/London",
  "readings": [
    {
      "date": "2026-09-13",
      "value": 78.1,
      "unit": "kg",
      "display": {
        "value": 78.1,
        "unit": "kg"
      },
      "changed": false
    },
    {
      "date": "2026-09-14",
      "value": 77.9,
      "unit": "kg",
      "display": {
        "value": 77.9,
        "unit": "kg"
      },
      "changed": true
    }
  ]
}

Errors

delete_body_metric

DELETE https://api.dailygoal.fit/v1/body-metrics

MCP tool delete_body_metric · Changes data · Destructive

Deletes one day's weight, body fat or steps reading. Omit `date` for today's Activity Day. Returns not_found when that day has no reading. To change a value instead of removing it, use set_body_metrics.

Input

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
dateoptionalstring (YYYY-MM-DD)YYYY-MM-DD in the user's timezone. Defaults to today's Activity Day.

Output

FieldTypeDescription
metric"weight" | "body_fat" | "steps"`weight` (kg or lb), `body_fat` (percent) or `steps` (whole steps).
datestring (YYYY-MM-DD)
timezonestringIANA timezone that defines the user's Activity Day.
deletedtrue

Example request

REST
curl -X DELETE "https://api.dailygoal.fit/v1/body-metrics?metric=weight&date=2026-09-13" \
  -H "Authorization: Bearer $DAILYGOAL_API_TOKEN"
MCP tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_body_metric",
    "arguments": {
      "metric": "weight",
      "date": "2026-09-13"
    }
  }
}

Example response

Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.

json
{
  "metric": "weight",
  "date": "2026-09-13",
  "timezone": "Europe/London",
  "deleted": true
}

Errors