Daily Goals reference

Read one day's progress on each active goal, and set progress on custom and yes/no goals.

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

Usage notes

Already-created daily goals remain visible after their template's schedule changes, even if the new schedule excludes that date.

All operations require Pro or a trial. GET and DELETE take query parameters; other methods take a JSON body. The input table also includes any MCP-only idempotency_key argument; REST sends it as a header. See retrying creates. Example ids are synthetic; find your own with the search and list operations.

Operations

get_daily_goals

GET https://api.dailygoal.fit/v1/daily-goals

MCP tool get_daily_goals · Read-only · DailyGoal data only

Returns progress and completion for active goals on one date, including scheduled goals and daily rows kept after schedule changes. To see goal settings, including inactive goals, use list_goals.

Input

FieldTypeDescription
dateoptionalstring (YYYY-MM-DD)YYYY-MM-DD. Defaults to today's Activity Day.
Full input schema, including bounds and nested alternatives (MCP)
JSON Schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD. Defaults to today's Activity Day."
    }
  },
  "additionalProperties": true
}

Output

FieldTypeDescription
datestring (YYYY-MM-DD)
timezonestring
goalsobject[]
goals[].goalIdstringGoal template id, from list_goals or get_daily_goals.
goals[].namestring
goals[].type"numeric" | "boolean"`numeric` goals have a target number; `boolean` goals are yes/no habits.
goals[].metric"calories" | "protein" | "fat" | "carbs" | "alcohol" | "steps" | "hydration" | "custom" | null
goals[].targetValuenumber | null
goals[].comparison"min" | "max" | "equals" | null
goals[].currentValuenumber | booleanA number for numeric goals, true or false for boolean goals.
goals[].completedboolean
goals[].calculatedbooleanTrue when progress is calculated from logged data. set_goal_progress refuses calculated goals.
Full output schema
JSON Schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "timezone": {
      "type": "string"
    },
    "goals": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "goalId": {
            "type": "string",
            "description": "Goal template id, from list_goals or get_daily_goals."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "numeric",
              "boolean"
            ],
            "description": "`numeric` goals have a target number; `boolean` goals are yes/no habits."
          },
          "metric": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "calories",
                  "protein",
                  "fat",
                  "carbs",
                  "alcohol",
                  "steps",
                  "hydration",
                  "custom"
                ],
                "description": "What a numeric goal measures. Every metric except `custom` is calculated from logged data (food entries, steps, hydration), so its progress cannot be set directly."
              },
              {
                "type": "null"
              }
            ]
          },
          "targetValue": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "comparison": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "min",
                  "max",
                  "equals"
                ],
                "description": "`min`: reach at least the target. `max`: stay at or under it. `equals`: hit it exactly."
              },
              {
                "type": "null"
              }
            ]
          },
          "currentValue": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "A number for numeric goals, true or false for boolean goals."
          },
          "completed": {
            "type": "boolean"
          },
          "calculated": {
            "type": "boolean",
            "description": "True when progress is calculated from logged data. set_goal_progress refuses calculated goals."
          }
        },
        "required": [
          "goalId",
          "name",
          "type",
          "metric",
          "targetValue",
          "comparison",
          "currentValue",
          "completed",
          "calculated"
        ],
        "additionalProperties": true
      }
    }
  },
  "required": [
    "date",
    "timezone",
    "goals"
  ],
  "additionalProperties": true
}

Example request

REST
curl "https://api.dailygoal.fit/v1/daily-goals?date=2026-09-14" \
  -H "Authorization: Bearer $DAILYGOAL_API_TOKEN"
MCP tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_daily_goals",
    "arguments": {
      "date": "2026-09-14"
    }
  }
}

Example response

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

json
{
  "date": "2026-09-14",
  "timezone": "Europe/London",
  "goals": [
    {
      "goalId": "kn71z3x6c9v2b5n8m1q4w7e0r3t6y9u2",
      "name": "Protein",
      "type": "numeric",
      "metric": "protein",
      "targetValue": 140,
      "comparison": "min",
      "currentValue": 20.13,
      "completed": false,
      "calculated": true
    },
    {
      "goalId": "kn72x4c7v0b3n6m9q2w5e8r1t4y7u0i3",
      "name": "Stretch for 10 minutes",
      "type": "boolean",
      "metric": null,
      "targetValue": null,
      "comparison": null,
      "currentValue": true,
      "completed": true,
      "calculated": false
    },
    {
      "goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
      "name": "Glasses of water",
      "type": "numeric",
      "metric": "custom",
      "targetValue": 8,
      "comparison": "min",
      "currentValue": 5,
      "completed": false,
      "calculated": false
    }
  ]
}

Errors

set_goal_progress

PUT https://api.dailygoal.fit/v1/daily-goals

MCP tool set_goal_progress · Changes data · Destructive · DailyGoal data only

Sets one day's progress on a custom numeric goal or a boolean (yes/no) goal, replacing the previous value. Calculated goals such as calories, protein or steps refuse this: log the food entry or steps instead. To change a goal's target or schedule, use save_goal instead.

Input

FieldTypeDescription
goalIdstringGoal template id, from list_goals or get_daily_goals.
dateoptionalstring (YYYY-MM-DD)YYYY-MM-DD. Defaults to today's Activity Day.
valuenumber | booleanA number of at least 0 for a custom numeric goal, or true or false for a boolean goal.
Full input schema, including bounds and nested alternatives (MCP)
JSON Schema
{
  "type": "object",
  "properties": {
    "goalId": {
      "type": "string",
      "description": "Goal template id, from list_goals or get_daily_goals."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD. Defaults to today's Activity Day."
    },
    "value": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0
        },
        {
          "type": "boolean"
        }
      ],
      "description": "A number of at least 0 for a custom numeric goal, or true or false for a boolean goal."
    }
  },
  "required": [
    "goalId",
    "value"
  ],
  "additionalProperties": true
}

Output

FieldTypeDescription
goalIdstringGoal template id, from list_goals or get_daily_goals.
datestring (YYYY-MM-DD)
timezonestring
currentValuenumber | boolean
completedboolean
Full output schema
JSON Schema
{
  "type": "object",
  "properties": {
    "goalId": {
      "type": "string",
      "description": "Goal template id, from list_goals or get_daily_goals."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "timezone": {
      "type": "string"
    },
    "currentValue": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "boolean"
        }
      ]
    },
    "completed": {
      "type": "boolean"
    }
  },
  "required": [
    "goalId",
    "date",
    "timezone",
    "currentValue",
    "completed"
  ],
  "additionalProperties": true
}

Example request

REST
curl -X PUT "https://api.dailygoal.fit/v1/daily-goals" \
  -H "Authorization: Bearer $DAILYGOAL_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"goalId":"kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4","date":"2026-09-14","value":6}'
MCP tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "set_goal_progress",
    "arguments": {
      "goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
      "date": "2026-09-14",
      "value": 6
    }
  }
}

Example response

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

json
{
  "goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
  "date": "2026-09-14",
  "timezone": "Europe/London",
  "currentValue": 6,
  "completed": false
}

Errors