get_training_readiness_range
Retrieve daily training readiness scores for any date range to assess recovery and performance readiness.
Instructions
Get Training Readiness data over a date range (day-by-day). Returns array of {date, data} records
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| startDate | Yes | Start date in YYYY-MM-DD format | |
| endDate | Yes | End date in YYYY-MM-DD format |
Implementation Reference
- src/client/garmin.client.ts:626-628 (handler)Client method that fetches Training Readiness data over a date range, calling getTrainingReadiness for each day via fetchRange.
async getTrainingReadinessRange(startDate: string, endDate: string): Promise<{ date: string; data: unknown }[]> { return this.fetchRange(startDate, endDate, (d) => this.getTrainingReadiness(d)); } - src/client/garmin.client.ts:388-391 (handler)Client method that calls the Garmin API endpoint to get training readiness for a single date.
async getTrainingReadiness(date?: string): Promise<unknown> { const resolvedDate = date ?? todayString(); return this.request(`${TRAINING_READINESS_ENDPOINT}/${resolvedDate}`); } - src/dtos/date-params.dto.ts:19-22 (schema)The dateRangeParamSchema used as inputSchema for get_training_readiness_range.
export const dateRangeParamSchema = z.object({ startDate: dateString.describe('Start date in YYYY-MM-DD format'), endDate: dateString.describe('End date in YYYY-MM-DD format'), }); - src/tools/range.tools.ts:81-94 (registration)Registration of the get_training_readiness_range tool with its description, schema, and handler.
server.registerTool( 'get_training_readiness_range', { description: 'Get Training Readiness data over a date range (day-by-day). Returns array of {date, data} records', inputSchema: dateRangeParamSchema.shape, }, async ({ startDate, endDate }) => { const data = await client.getTrainingReadinessRange(startDate, endDate); return { content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }], }; }, ); - src/client/garmin.client.ts:162-174 (helper)Generic fetchRange helper that iterates over dates and calls a per-date fetcher function.
private async fetchRange( startDate: string, endDate: string, fetcher: (date: string) => Promise<unknown>, ): Promise<{ date: string; data: unknown }[]> { const dates = this.dateRange(startDate, endDate); const results: { date: string; data: unknown }[] = []; for (const date of dates) { const data = await fetcher(date).catch(() => null); results.push({ date, data }); } return results; }