get_activity_details
Retrieve detailed time series data for a Garmin activity, including heart rate, pace, elevation, cadence, and power metrics. Provide the activity ID to get comprehensive performance analysis.
Instructions
Get detailed activity metrics: HR, pace, elevation, cadence, power time series data
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| activityId | Yes | The Garmin activity ID |
Implementation Reference
- src/tools/activities.tools.ts:82-95 (handler)Tool registration and handler for 'get_activity_details' — calls client.getActivityDetails and returns JSON response
server.registerTool( 'get_activity_details', { description: 'Get detailed activity metrics: HR, pace, elevation, cadence, power time series data', inputSchema: getActivitySchema.shape, }, async ({ activityId }) => { const data = await client.getActivityDetails(activityId); return { content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }], }; }, ); - src/dtos/activities.dto.ts:49-51 (schema)Input schema for get_activity_details tool — expects a positive numeric activityId
export const getActivitySchema = z.object({ activityId: z.number().positive().describe('The Garmin activity ID'), }); - src/client/garmin.client.ts:225-229 (handler)Client method that makes the API request to Garmin's activity details endpoint
async getActivityDetails(activityId: number): Promise<unknown> { return this.request( `${ACTIVITY_ENDPOINT}/${activityId}/${ACTIVITY_DETAILS_SUBPATH}?maxChartSize=${ACTIVITY_DETAILS_MAX_CHART_SIZE}&maxPolylineSize=${ACTIVITY_DETAILS_MAX_POLYLINE_SIZE}`, ); } - Constants defining the API endpoint base path and details subpath used for the details request
export const ACTIVITY_ENDPOINT = '/activity-service/activity'; export const ACTIVITY_TYPES_ENDPOINT = '/activity-service/activity/activityTypes'; export const ACTIVITY_DETAILS_SUBPATH = 'details'; - Constants for query parameters limiting chart data size and polyline size in details response
export const ACTIVITY_DETAILS_MAX_CHART_SIZE = 2000; export const ACTIVITY_DETAILS_MAX_POLYLINE_SIZE = 4000;