Skip to main content
Glama

getSleepLogs

Retrieve detailed sleep data from your Fitbit device to analyze sleep patterns and quality. Specify a date to access historical sleep logs or use today's date for current information.

Input Schema

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

Implementation Reference

  • Handler function that fetches sleep logs from the Fitbit API for the specified date (or today), formats the response as JSON, and handles errors.
    async ({ date }) => { try { const formattedDate = formatDate(date); // Remove period parameter which seems to be causing issues const endpoint = `/user/-/sleep/date/${formattedDate}.json`; const data = await makeApiRequest(endpoint); return { content: [ { type: "text", text: JSON.stringify( { date: formattedDate, sleep: data.sleep || [], summary: data.summary || {}, }, null, 2 ), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } } );
  • Zod schema defining the input parameter 'date' for the getSleepLogs tool.
    { date: z .string() .optional() .describe("Date in YYYY-MM-DD format. If not specified, will use today."), },
  • src/server.ts:149-196 (registration)
    Registration of the getSleepLogs tool using server.tool, including name, schema, and handler reference.
    // Register tool for getting sleep logs server.tool( "getSleepLogs", { date: z .string() .optional() .describe("Date in YYYY-MM-DD format. If not specified, will use today."), }, async ({ date }) => { try { const formattedDate = formatDate(date); // Remove period parameter which seems to be causing issues const endpoint = `/user/-/sleep/date/${formattedDate}.json`; const data = await makeApiRequest(endpoint); return { content: [ { type: "text", text: JSON.stringify( { date: formattedDate, sleep: data.sleep || [], summary: data.summary || {}, }, null, 2 ), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } } );
  • Helper function to format or default the date to today in YYYY-MM-DD format, used in getSleepLogs handler.
    function formatDate(date?: string): string { if (date) return date; const today = new Date(); return today.toISOString().split("T")[0]; // YYYY-MM-DD }
  • Helper function to make authenticated API requests to Fitbit endpoints, used by getSleepLogs and other tools.
    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