Track and manage Strava workouts, athlete stats, routes, segments, and club activities via the Strava API. Use this skill when users want to log activities, review athletic performance, explore routes, or manage club data in Strava.

Install

openclaw skills install strava-activities

Strava

Strava

Track and manage Strava activities, athlete data, routes, segments, and club activity from chat via the Strava API.

This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Strava API access yourself.

Setup in 3 Steps

Step 1: InstallStep 2: Pair AccountStep 3: Connect Strava
InstallPairApp-specific connection GIF coming soon
Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Strava

How It Works

┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐
│   OpenClaw      │────▶│   ClawLink   │────▶│   Strava API     │
│   (User Chat)   │     │   (OAuth)    │     │                  │
└─────────────────┘     └──────────────┘     └──────────────────┘
         │                       │                       │
         │  1. Install Plugin    │                       │
         │  2. Pair Device       │                       │
         │  3. Connect Strava    │                       │
         │                       │  4. Secure Token      │
         │                       │  5. Proxy Requests    │
         │                       │                       │
         ▼                       ▼                       ▼
   ┌──────────┐           ┌──────────┐           ┌──────────┐
   │  SKILL   │           │ Dashboard│           │  Strava  │
   │  File    │           │ Auth     │           │  Account │
   └──────────┘           └──────────┘           └──────────┘

Install

Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.

openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart

Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Strava again."

Quick Start

# Get athlete profile
clawlink_call_tool --tool "strava_get_athlete" --params '{}'

# List recent activities
clawlink_call_tool --tool "strava_list_activities" --params '{"limit": 10}'

# Get activity details
clawlink_call_tool --tool "strava_get_activity" --params '{"activity_id": "ACTIVITY_ID"}'

Authentication

All Strava tool calls are authenticated automatically by ClawLink using the user's connected Strava account OAuth token.

No API token is required in chat. ClawLink stores the OAuth token securely and injects it into every Strava API request on the user's behalf.

Getting Connected

  1. Install the ClawLink plugin (see Install above).
  2. Pair the plugin with clawlink_begin_pairing if it is not configured yet.
  3. Open https://claw-link.dev/dashboard?add=strava and connect Strava.
  4. Call clawlink_list_integrations to verify the connection is active.

Connection Management

List Connections

clawlink_list_integrations

Response: Returns all connected integrations. Look for strava in the list.

Verify Connection

clawlink_list_tools --integration strava

Response: Returns the live tool catalog for Strava.

Reconnect

If Strava tools are missing or the connection shows an error:

  1. Direct the user to https://claw-link.dev/dashboard?add=strava
  2. After they confirm, call clawlink_list_integrations to verify
  3. Then call clawlink_list_tools --integration strava

Security & Permissions

  • Access is scoped to the Strava account connected during OAuth setup and the scopes granted.
  • Write operations (create activity, upload files, update settings) require explicit user confirmation.
  • Activity upload requires the user to own the data being uploaded.
  • Club management operations may require club admin privileges.

Tool Reference

Athlete

ToolDescriptionMode
strava_get_athleteGet the authenticated athlete's profileRead
strava_update_athleteUpdate athlete settings (sport type, timezone)Write
strava_get_athlete_statsGet athlete statistics (distance, pace, heart rate zones)Read
strava_get_athlete_zonesGet heart rate and power zonesRead
strava_get_athlete_clubsList clubs the athlete is a member ofRead

Activities

ToolDescriptionMode
strava_list_activitiesList the athlete's activities with paginationRead
strava_get_activityGet details for a specific activityRead
strava_create_activityCreate a manual activity entryWrite
strava_update_activityUpdate an activity's name, description, or privacyWrite
strava_delete_activityDelete an activity permanentlyWrite
strava_get_activity_zonesGet splits and heart rate/power zones for an activityRead
strava_get_activity_lapsGet lap data for an activityRead
strava_get_activity_streamsGet GPS, heart rate, power streams for an activityRead
strava_upload_activity_photoAttach a photo to an activityWrite

Activity Comments & Kudos

ToolDescriptionMode
strava_list_activity_commentsList comments on an activityRead
strava_create_activity_commentAdd a comment to an activityWrite
strava_list_activity_kudosList kudos given to an activityRead
strava_give_kudos_to_activityGive kudos to an activityWrite
strava_delete_kudos_from_activityRemove kudos from an activityWrite

Routes

ToolDescriptionMode
strava_list_routesList the athlete's saved routesRead
strava_get_routeGet details and segments for a routeRead
strava_create_routeCreate a new routeWrite
strava_update_routeUpdate a route's name or descriptionWrite
strava_delete_routeDelete a routeWrite

Segments

ToolDescriptionMode
strava_get_segmentGet a segment's leaderboard and detailsRead
strava_list_segment_effortsList efforts on a segment by an athleteRead
strava_get_segment_effortGet a specific segment effortRead
strava_explore_segmentsExplore segments in a geographic areaRead
strava_star_segmentStar/favorite a segmentWrite
strava_unstar_segmentRemove a star from a segmentWrite
strava_list_starred_segmentsList the athlete's starred segmentsRead

Clubs

ToolDescriptionMode
strava_get_clubGet a club's profileRead
strava_list_club_activitiesList recent activities in a clubRead
strava_list_club_membersList members of a clubRead
strava_join_clubRequest to join a clubWrite
strava_leave_clubLeave a clubWrite

Gear & Equipment

ToolDescriptionMode
strava_get_equipmentGet details for a piece of equipmentRead
strava_create_equipmentAdd new equipment (bike, shoes)Write
strava_update_equipmentUpdate equipment name or retired statusWrite
strava_delete_equipmentDelete equipmentWrite
strava_list_athlete_equipmentList all equipment for an athleteRead

Uploads

ToolDescriptionMode
strava_upload_fileUpload a FIT, GPX, or TCX activity fileWrite
strava_get_upload_statusCheck the status of an activity uploadRead

Code Examples

Get athlete stats

clawlink_call_tool --tool "strava_get_athlete_stats" \
  --params '{"athlete_id": "ATHLETE_ID"}'

List recent activities

clawlink_call_tool --tool "strava_list_activities" \
  --params '{
    "limit": 10,
    "after": 1704067200
  }'

Get activity details

clawlink_call_tool --tool "strava_get_activity" \
  --params '{
    "activity_id": "ACTIVITY_ID"
  }'

Explore segments in an area

clawlink_call_tool --tool "strava_explore_segments" \
  --params '{
    "bounds": [37.8, -122.5, 37.9, -122.4],
    "activity_type": "running"
  }'

Star a segment

clawlink_call_tool --tool "strava_star_segment" \
  --params '{
    "segment_id": "SEGMENT_ID"
  }'

Get club activities

clawlink_call_tool --tool "strava_list_club_activities" \
  --params '{
    "club_id": "CLUB_ID",
    "limit": 20
  }'

Discovery Workflow

  1. Call clawlink_list_integrations to confirm Strava is connected.
  2. Call clawlink_list_tools --integration strava to see the live catalog.
  3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.
  4. If the user describes a capability but the exact tool is unclear, call clawlink_search_tools with a short query and integration strava.
  5. If no Strava tools appear, direct the user to https://claw-link.dev/dashboard?add=strava.

Execution Workflow

┌─────────────────────────────────────────────────────────────┐
│  READ OPERATIONS (Safe)                                     │
│  list → get → explore → describe                           │
│                                                             │
│  Example: List activities → Get activity streams → Analyze │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  WRITE OPERATIONS (Require Confirmation)                    │
│  describe → preview → confirm → call                       │
│                                                             │
│  Example: Preview activity upload → User approves → Upload │
└─────────────────────────────────────────────────────────────┘
  1. For unfamiliar tools, ambiguous requests, or any write action, call clawlink_describe_tool first.
  2. Use the returned guidance, schema, whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.
  3. Prefer read, list, get, and explore operations before writes when that reduces ambiguity.
  4. For writes or anything marked as requiring confirmation, call clawlink_preview_tool first.
  5. Execute with clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.
  6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.

Notes

  • Activity uploads (FIT, GPX, TCX) are processed asynchronously — check upload status with strava_get_upload_status.
  • Segment explore uses bounding box coordinates: [southwest_lat, southwest_lng, northeast_lat, northeast_lng].
  • Activity privacy controls may hide some data from API responses for private activities.
  • Upload file size limits apply — compressed FIT files are preferred over raw GPX for large activities.
  • Heart rate and power data availability depends on the device used to record the activity.
  • Activity types include: run, ride, swim, workout, hike, walk, and others.

Error Handling

Status / ErrorMeaning
Tool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration strava.
Missing connectionStrava is not connected. Direct the user to https://claw-link.dev/dashboard?add=strava.
Activity not foundThe activity ID does not exist or belongs to another athlete.
Segment not foundThe segment ID does not exist in Strava's database.
Upload in progressThe file upload is still being processed. Check status with strava_get_upload_status.
Upload failedThe file format is invalid or the upload processing failed.
403 ForbiddenThe connected account lacks permission for this operation.
Rate limitedToo many requests — wait before retrying.
Write rejectedUser did not confirm a write action. Always confirm before executing writes.

Troubleshooting: Tools Not Visible

  1. Check that the ClawLink plugin is installed:
    openclaw plugins list
    
  2. If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
  3. If a fresh chat does not help, run:
    openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
    openclaw gateway restart
    
  4. After restart, tell the user to send /new again and retry.

Troubleshooting: Upload Fails

  1. Confirm the file is a valid FIT, GPX, or TCX format.
  2. Check the file size — very large files may fail to process.
  3. Wait and poll strava_get_upload_status — processing can take several seconds for large files.
  4. Verify the activity data is valid (GPS coordinates, timestamps).

Resources


Powered by ClawLink — an integration hub for OpenClaw

ClawLink Logo