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.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "getSleepLogs"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD format. If not specified, will use today. |
Implementation Reference
- src/server.ts:158-195 (handler)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, }; } } ); - src/server.ts:152-157 (schema)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, }; } } ); - src/server.ts:68-73 (helper)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 } - src/server.ts:44-65 (helper)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; } }