Skip to main content
Glama

getWaterLogs

Retrieve daily water intake data from Fitbit to track hydration levels and monitor consumption patterns for health management.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. If not specified, will use today.

Implementation Reference

  • Handler function that fetches water intake logs from the Fitbit API for the specified date (defaults to today), formats the response as JSON text, or returns an error message.
    async ({ date }) => { try { const formattedDate = formatDate(date); const endpoint = `/user/-/foods/log/water/date/${formattedDate}.json`; const data = await makeApiRequest(endpoint); return { content: [ { type: "text", text: JSON.stringify( { date: formattedDate, water: data.water || [], summary: data.summary || {}, }, null, 2 ), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } }
  • Zod input schema defining an optional 'date' parameter for the tool.
    { date: z .string() .optional() .describe("Date in YYYY-MM-DD format. If not specified, will use today."), },
  • src/server.ts:427-471 (registration)
    Complete registration of the 'getWaterLogs' tool on the MCP server, including name, input schema, and inline handler function.
    server.tool( "getWaterLogs", { date: z .string() .optional() .describe("Date in YYYY-MM-DD format. If not specified, will use today."), }, async ({ date }) => { try { const formattedDate = formatDate(date); const endpoint = `/user/-/foods/log/water/date/${formattedDate}.json`; const data = await makeApiRequest(endpoint); return { content: [ { type: "text", text: JSON.stringify( { date: formattedDate, water: data.water || [], summary: data.summary || {}, }, null, 2 ), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } } );
  • Helper function used by getWaterLogs to format the date parameter or default to today's date in YYYY-MM-DD format.
    function formatDate(date?: string): string { if (date) return date; const today = new Date(); return today.toISOString().split("T")[0]; // YYYY-MM-DD }
  • Shared helper function used by getWaterLogs to make authenticated HTTP requests to the Fitbit API.
    async function makeApiRequest(endpoint: string): Promise<any> { try { const url = `${baseUrl}${endpoint}`; const response = await fetch(url, { headers: { Authorization: `Bearer ${accessToken}`, Accept: "application/json", }, }); if (!response.ok) { throw new Error( `Fitbit API error: ${response.status} ${response.statusText}` ); } return await response.json(); } catch (error) { console.error(`Error making request to ${endpoint}:`, error); throw error; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NitayRabi/fitbit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server