Show a P.R.O. widget
show_widgetRender one of the user's P.R.O. widgets inline in the chat and return the same data as JSON. key is one of: today, steps, sleep, heart, stats, compare, workouts, workout, streak, goals, plan, load, proposal. today = rings and tiles for the latest synced day; steps/heart = one metric over the last week; sleep = last night's stage timeline plus the week as stage-coloured bars; stats = bar chart with the period and metric switchable inside the widget; compare = last 30 days against the 30 before; workouts = recent sessions; workout = the last session in detail; streak = active-day heatmap; goals = progress bars; plan = training plan progress and next sessions; load = training load and readiness. The card uses synced P.R.O. data and identifies missing data. workouts/workout accept an optional custom window (days) and a sport filter; other widgets have fixed windows sized to their layout. With key=workout and load_route=true, it may queue an iPhone upload of route and workout details; otherwise it reads already-synced data.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"key": "<key>"
},
"name": "show_widget"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Which widget to show. | |
| date | No | For `workout`: show the session from this day (YYYY-MM-DD); with several that day, the longest one. | |
| days | No | Look-back window in days. Applies to `workouts` (history, default 30) and `workout` (how far back to look for the most recent session, default 180). Ignored by other keys. | |
| since | No | For `workouts`/`workout`: start of an exact period, YYYY-MM-DD — e.g. 'my runs in 2024' -> since 2024-01-01, until 2024-12-31. | |
| sport | No | Sport filter for `workouts`/`workout`, e.g. 'running' or 'cycling' — `workout` then shows the latest session of that sport. Ignored by other keys. | |
| until | No | For `workouts`/`workout`: end of the period, YYYY-MM-DD. | |
| load_route | No | For `workout`: fetch the session's GPS route from the phone. Set it only when the user asks to see the route; the card's own button sets it too. Showing a workout without it never contacts the phone. | |
| workout_id | No | For `workout`: show this session (the `id` from get_workouts) instead of the latest one. | |
| proposal_id | No | For `proposal`: which proposed plan change to show (default: the latest). |