list_recovery
Retrieve daily recovery and HRV summaries (score, stress, readiness) for each day in a date range, ordered chronologically.
Instructions
Returns recovery and HRV summaries for each day in [from, to] inclusive, ordered chronologically. Each entry: { date, recoveryScore (0–100), hrv (ms, rMSSD), stressLevel, readiness }. Days without recovery data are omitted. Use get_recovery for a single day. Requires Recovery API subscription on apizone; returns 404 without it. Read-only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Start date YYYY-MM-DD, inclusive. Must be ≤ to. Days without recovery data are silently omitted, not 404. | |
| to | Yes | End date YYYY-MM-DD, inclusive. Future dates are accepted but produce no entries. Prefer ranges ≤ 30 days for responsiveness. |
Implementation Reference
- src/api.ts:164-168 (handler)API method that executes the HTTP request to Suunto's recovery endpoint. Calls GET /v2/recovery?from=...&to=..., parses JSON, and sorts results chronologically by date.
async listRecovery(from: string, to: string) { const q = new URLSearchParams({ from, to }); const res = await this.json<any>(`${this.dailyPrefix()}/recovery?${q.toString()}`); return sortByDate(res); } - src/index.ts:355-356 (handler)MCP tool handler that dispatches 'list_recovery' calls to suunto.listRecovery(a.from, a.to) and returns the result as formatted JSON text.
case "list_recovery": return text(JSON.stringify(await suunto.listRecovery(a.from, a.to), null, 2)); - src/index.ts:269-297 (schema)Input schema definition for the 'list_recovery' tool: requires 'from' and 'to' date strings with YYYY-MM-DD format validation.
{ name: "list_recovery", description: "Returns recovery and HRV summaries for each day in [from, to] inclusive, ordered chronologically. Each entry: { date, recoveryScore (0–100), hrv (ms, rMSSD), stressLevel, readiness }. Days without recovery data are omitted. Use get_recovery for a single day. Requires Recovery API subscription on apizone; returns 404 without it. Read-only.", inputSchema: { type: "object", properties: { from: { type: "string", format: "date", pattern: "^\\d{4}-\\d{2}-\\d{2}$", minLength: 10, maxLength: 10, examples: ["2026-04-01"], description: "Start date YYYY-MM-DD, inclusive. Must be ≤ to. Days without recovery data are silently omitted, not 404.", }, to: { type: "string", format: "date", pattern: "^\\d{4}-\\d{2}-\\d{2}$", minLength: 10, maxLength: 10, examples: ["2026-04-30"], description: "End date YYYY-MM-DD, inclusive. Future dates are accepted but produce no entries. Prefer ranges ≤ 30 days for responsiveness.", }, }, required: ["from", "to"], }, }, - src/index.ts:269-297 (registration)Tool registration entry in the tools array that defines name 'list_recovery', description, and inputSchema for the MCP server.
{ name: "list_recovery", description: "Returns recovery and HRV summaries for each day in [from, to] inclusive, ordered chronologically. Each entry: { date, recoveryScore (0–100), hrv (ms, rMSSD), stressLevel, readiness }. Days without recovery data are omitted. Use get_recovery for a single day. Requires Recovery API subscription on apizone; returns 404 without it. Read-only.", inputSchema: { type: "object", properties: { from: { type: "string", format: "date", pattern: "^\\d{4}-\\d{2}-\\d{2}$", minLength: 10, maxLength: 10, examples: ["2026-04-01"], description: "Start date YYYY-MM-DD, inclusive. Must be ≤ to. Days without recovery data are silently omitted, not 404.", }, to: { type: "string", format: "date", pattern: "^\\d{4}-\\d{2}-\\d{2}$", minLength: 10, maxLength: 10, examples: ["2026-04-30"], description: "End date YYYY-MM-DD, inclusive. Future dates are accepted but produce no entries. Prefer ranges ≤ 30 days for responsiveness.", }, }, required: ["from", "to"], }, }, - src/cli.ts:149-160 (registration)CLI handler for 'list-recovery' command that parses --from and --to flags then calls suunto.listRecovery().
case "list-recovery": { const { values } = parseArgs({ args: rest, options: { from: { type: "string" }, to: { type: "string" }, }, }); if (!values.from || !values.to) die("Usage: list-recovery --from YYYY-MM-DD --to YYYY-MM-DD"); out(await suunto.listRecovery(values.from!, values.to!)); break; }