Water reference
List, set and delete the glasses of water the user drinks, one reading 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_water: List waterset_water: Set waterdelete_water: Delete water
list_water
GET https://api.dailygoal.fit/v1/water
MCP tool list_water · Read-only
Lists the glasses of water the user logged (at most one reading 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`. For weight, body fat and steps use list_body_metrics; for progress on a water goal use get_daily_goals.
Input
| Field | Type | Description |
|---|---|---|
| fromoptional | string (YYYY-MM-DD) | First day, YYYY-MM-DD. Defaults to 29 days before `to`, so the default range covers 30 days including both ends. |
| tooptional | string (YYYY-MM-DD) | Last day, YYYY-MM-DD. Defaults to today's Activity Day. |
Output
| Field | Type | Description |
|---|---|---|
| from | string (YYYY-MM-DD) | |
| to | string (YYYY-MM-DD) | |
| timezone | string | IANA timezone that defines the user's Activity Day. |
| readings | object[] | One reading per day that has one, oldest first. There is no cursor: the range is complete. |
| readings[].date | string (YYYY-MM-DD) | |
| readings[].glasses | number | Glasses of water, 0 to 50. Halves and other fractions are allowed. |
Example request
curl "https://api.dailygoal.fit/v1/water?from=2026-09-12&to=2026-09-14" \
-H "Authorization: Bearer $DAILYGOAL_API_TOKEN"{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_water",
"arguments": {
"from": "2026-09-12",
"to": "2026-09-14"
}
}
}Example response
Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.
{
"from": "2026-09-12",
"to": "2026-09-14",
"timezone": "Europe/London",
"readings": [
{
"date": "2026-09-12",
"glasses": 7
},
{
"date": "2026-09-13",
"glasses": 8.5
},
{
"date": "2026-09-14",
"glasses": 3
}
]
}Errors
unauthorized(401)origin_not_allowed(403)misdirected_request(421)subscription_required(403)rate_limited(429)validation_failed(400)internal_error(500)
set_water
PUT https://api.dailygoal.fit/v1/water
MCP tool set_water · Changes data · Destructive
Sets the number of glasses of water for one day, replacing the day's existing value; it does not add to it, so read the day with list_water first when the user says they drank another glass. Omit `date` for today's Activity Day; the response echoes the resolved date and the timezone. Updates water goals, streak and badges as the app does. To remove the day's reading use delete_water; for weight, body fat or steps use set_body_metrics.
Input
| Field | Type | Description |
|---|---|---|
| dateoptional | string (YYYY-MM-DD) | YYYY-MM-DD in the user's timezone. Defaults to today's Activity Day. Future dates are rejected. |
| glasses | number | Glasses of water, 0 to 50. Halves and other fractions are allowed. |
Output
| Field | Type | Description |
|---|---|---|
| date | string (YYYY-MM-DD) | |
| glasses | number | Glasses of water, 0 to 50. Halves and other fractions are allowed. |
| timezone | string | IANA timezone that defines the user's Activity Day. |
| changed | boolean | False when the day already held this value. |
Example request
curl -X PUT "https://api.dailygoal.fit/v1/water" \
-H "Authorization: Bearer $DAILYGOAL_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"glasses":4}'{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_water",
"arguments": {
"glasses": 4
}
}
}Example response
Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.
{
"date": "2026-09-14",
"glasses": 4,
"timezone": "Europe/London",
"changed": true
}Errors
unauthorized(401)origin_not_allowed(403)misdirected_request(421)subscription_required(403)rate_limited(429)validation_failed(400)internal_error(500)
delete_water
DELETE https://api.dailygoal.fit/v1/water
MCP tool delete_water · Changes data · Destructive
Deletes one day's water reading. Omit `date` for today's Activity Day. Returns not_found when that day has no reading. To change the count instead of removing it, use set_water.
Input
| Field | Type | Description |
|---|---|---|
| dateoptional | string (YYYY-MM-DD) | YYYY-MM-DD in the user's timezone. Defaults to today's Activity Day. |
Output
| Field | Type | Description |
|---|---|---|
| date | string (YYYY-MM-DD) | |
| timezone | string | IANA timezone that defines the user's Activity Day. |
| deleted | true |
Example request
curl -X DELETE "https://api.dailygoal.fit/v1/water?date=2026-09-13" \
-H "Authorization: Bearer $DAILYGOAL_API_TOKEN"{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_water",
"arguments": {
"date": "2026-09-13"
}
}
}Example response
Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.
{
"date": "2026-09-13",
"timezone": "Europe/London",
"deleted": true
}Errors
unauthorized(401)origin_not_allowed(403)misdirected_request(421)subscription_required(403)rate_limited(429)validation_failed(400)not_found(404)internal_error(500)