Shape MCP server

Updated November 1, 2026

Shape runs a Model Context Protocol server, so assistants can look at what you’ve done, then plan, create and edit workouts for you.

https://shapecalendar.com/mcp

Connect

Server URL and access

https://shapecalendar.com/mcp

Most clients handle sign-in for you. Paste the URL, a Shape screen opens in your browser, you approve, and that’s it. Clients that can’t do that use a token, which you create in Settings → API access.

Either way, a connection can read and change your activities. Every connected assistant is listed in Settings → API access, where you can disconnect it. What a connected AI can reach.

Available tools

Every tool is scoped to the authenticated user. Inputs and outputs mirror the REST API, so the same activity object and structured steps schemas apply.

Read

list_activitiesList planned and completed workouts. Filter by date range, sport type, completed, or includePaired. A fulfilled plan is returned as the completed workout; fetch plannedActivityId for the plan's description and steps. Imported workouts carry what the device recorded (calories, elapsed time, maxima, cadence, running dynamics, the device's own scores), left out when the source reported none.
get_activityFetch a single activity by id. If plannedActivityId is set, fetch that id for the plan's description and steps.
get_activity_detailsRecorded time-series for one completed activity: heart rate, pace, cadence, power, elevation, GPS and timestamps, running dynamics and pedal balance when the device recorded them, plus lap splits, time in each training zone (Shape's model and the zones set on the device), and a pool swim's lengths. Narrow the response with channels and points. Only activities recorded by a connected device have this.
list_health_metricsList daily health metrics (sleep, HRV, resting heart rate, body battery, VO2max, body composition, blood pressure, steps), merged across your connected sources into one record per day. Filter by from and to, a single source, or a metrics whitelist. Defaults to the last 90 days.
get_training_statusHow you're doing right now: readiness with the drivers behind it, fitness/fatigue/form and your acute:chronic ratio, and the next week of planned load. Call after planning with no dates. Pass from and to together only for history. The snapshot includes training already done today; a ranged series is morning readiness and never does, so the two can differ for the same date.
get_profileYour numbers that score training load and set zones: max, resting and threshold heart rate, FTP, threshold pace and swim threshold, each with where it came from (you, your device, Apple Health, your daily readings) and since when. Nothing on file means sessions that need it get no load. Also your gender, birth year, distance unit, first day of the week and pool length.

Write

create_activityCreate a planned or completed workout. Always set load on planned workouts. Set target=steps and pass a steps array for structured interval workouts.
update_activityUpdate any subset of fields on an existing activity.
delete_activityDelete an activity. Any paired counterpart is unlinked.
batch_create_activitiesCreate up to 100 activities in one call.
batch_update_activitiesUpdate up to 100 activities in one call. Each entry includes its id.
batch_delete_activitiesDelete up to 100 activities in one call.
pair_activitiesLink a completed activity with the planned workout it fulfills.
unpair_activityRemove the pairing between a planned and completed activity.
update_profileSave numbers you give: max, resting or threshold heart rate, FTP, threshold pace (seconds per km) or swim threshold (seconds per 100 m). Saved as your own value from today, as typing it in settings does. A first value scores the sessions that had no load; a changed one applies from today. Also saves gender, birth year, distance unit, first day of the week and pool length.
connect_deviceConnect a device from the chat. Returns, per device, whether it is already connected and otherwise a link to open: a one-time sign-in link for Garmin or Wahoo that works in any browser for 15 minutes, or the iPhone app for Apple Health. Pass provider when the athlete named their device, or omit it to get every option. Works before the account has a plan.
send_feedbackSend a message to the Shape team when you ask it to: a bug, a missing feature, or something that didn't work as expected. Replies go to the email on your account. Your account and the app you're using are attached.

Errors

Auth failures use OAuth-style responses. Tool failures return an MCP error result with isError: true and a readable message.

  • 401: missing or invalid token. The WWW-Authenticate header points clients at OAuth discovery.
  • 400: malformed request (validation, bad JSON, etc.)
  • 429: rate limit exceeded

Rate limits

30 tool calls per minute and 200 per hour, per user, shared with the REST API. Use the batch tools when you have many activities to create, update or delete.

REST API

Prefer raw HTTP? The same data is on the REST API.

Related