Shape MCP server

Shape exposes a Model Context Protocol server so any MCP-compatible client (Claude, ChatGPT, Cursor, Raycast) can read and write your training. Authenticate once and the assistant can plan, create, update, and pair your workouts on your behalf.

Raycast users can also install the dedicated Shape Calendar extension.

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

Endpoint

https://shapecalendar.com/mcp

The server speaks Streamable HTTP (single endpoint, sessionless). Point any MCP client at this URL and pick one of the auth options below.

Option 1: OAuth (recommended)

Most MCP clients (Claude, ChatGPT) discover OAuth automatically. Add https://shapecalendar.com/mcp as a server, hit “Connect”, and the client will open a Shape consent screen in your browser. Approve it and you’re done. No token to copy or paste.

Connections grant full read/write access to your activities. Revoke one any time from Settings → API access. Connected clients show up as OAuth: <client name>.

Option 2: Static bearer token

For clients without OAuth support (or for local scripts), generate a token in Settings → API access and send it with every request.

Authorization: Bearer shape_...

Tokens start with shape_. They are user-scoped and can be revoked at any time. Same token format as the REST API. One token works for both transports.

Example: Claude Desktop config

{
  "mcpServers": {
    "shape": {
      "type": "http",
      "url": "https://shapecalendar.com/mcp",
      "headers": {
        "Authorization": "Bearer shape_..."
      }
    }
  }
}

Example prompts

Once connected, ask your assistant things like:

  • What did I do this week?
  • How was my last workout?
  • How much have I biked this month?
  • Schedule a 10k run for tomorrow.
  • Create a training plan for next week with a run on Monday, bike on Wednesday, and swim on Friday.
  • Clear all my planned activities for this week.
  • Pair my completed long run with the planned long run on the same day.

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.

READlist_activities

List planned and completed workouts. Filter by date range, sport type, completed, or includePaired.

READget_activity

Fetch a single activity by id.

WRITEcreate_activity

Create a planned or completed workout. Set target=steps and pass a steps array for structured interval workouts.

WRITEupdate_activity

Update any subset of fields on an existing activity.

WRITEdelete_activity

Delete an activity. Any paired counterpart is unlinked.

WRITEbatch_create_activities

Create up to 100 activities in one call.

WRITEbatch_update_activities

Update up to 100 activities in one call. Each entry includes its id.

WRITEbatch_delete_activities

Delete up to 100 activities in one call.

WRITEpair_activities

Link a completed activity with the planned workout it fulfills.

WRITEunpair_activity

Remove the pairing between a planned and completed activity.

Errors

Auth failures use OAuth-style responses. Tool failures return an MCP error result with isError: true and a human-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
  • Tool error: { content: [...], isError: true } with the message in the text content

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.