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.
Step 1: InstallStep 2: Pair AccountStep 3: Connect Strava
_App-specific connection GIF coming soon_Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Strava
text
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ 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 the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
bash
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."
bash
# 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"}'
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.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.bash
clawlink_list_integrations
Response: Returns all connected integrations. Look for strava in the list.
bash
clawlink_list_tools --integration strava
Response: Returns the live tool catalog for Strava.
If Strava tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration stravaToolDescriptionModestrava_get_athleteGet the authenticated athlete's profileReadstrava_update_athleteUpdate athlete settings (sport type, timezone)Writestrava_get_athlete_statsGet athlete statistics (distance, pace, heart rate zones)Readstrava_get_athlete_zonesGet heart rate and power zonesReadstrava_get_athlete_clubsList clubs the athlete is a member ofRead
ToolDescriptionModestrava_list_activitiesList the athlete's activities with paginationReadstrava_get_activityGet details for a specific activityReadstrava_create_activityCreate a manual activity entryWritestrava_update_activityUpdate an activity's name, description, or privacyWritestrava_delete_activityDelete an activity permanentlyWritestrava_get_activity_zonesGet splits and heart rate/power zones for an activityReadstrava_get_activity_lapsGet lap data for an activityReadstrava_get_activity_streamsGet GPS, heart rate, power streams for an activityReadstrava_upload_activity_photoAttach a photo to an activityWrite
ToolDescriptionModestrava_list_activity_commentsList comments on an activityReadstrava_create_activity_commentAdd a comment to an activityWritestrava_list_activity_kudosList kudos given to an activityReadstrava_give_kudos_to_activityGive kudos to an activityWritestrava_delete_kudos_from_activityRemove kudos from an activityWrite
ToolDescriptionModestrava_list_routesList the athlete's saved routesReadstrava_get_routeGet details and segments for a routeReadstrava_create_routeCreate a new routeWritestrava_update_routeUpdate a route's name or descriptionWritestrava_delete_routeDelete a routeWrite
ToolDescriptionModestrava_get_segmentGet a segment's leaderboard and detailsReadstrava_list_segment_effortsList efforts on a segment by an athleteReadstrava_get_segment_effortGet a specific segment effortReadstrava_explore_segmentsExplore segments in a geographic areaReadstrava_star_segmentStar/favorite a segmentWritestrava_unstar_segmentRemove a star from a segmentWritestrava_list_starred_segmentsList the athlete's starred segmentsRead
ToolDescriptionModestrava_get_clubGet a club's profileReadstrava_list_club_activitiesList recent activities in a clubReadstrava_list_club_membersList members of a clubReadstrava_join_clubRequest to join a clubWritestrava_leave_clubLeave a clubWrite
ToolDescriptionModestrava_get_equipmentGet details for a piece of equipmentReadstrava_create_equipmentAdd new equipment (bike, shoes)Writestrava_update_equipmentUpdate equipment name or retired statusWritestrava_delete_equipmentDelete equipmentWritestrava_list_athlete_equipmentList all equipment for an athleteRead
ToolDescriptionModestrava_upload_fileUpload a FIT, GPX, or TCX activity fileWritestrava_get_upload_statusCheck the status of an activity uploadRead
bash
clawlink_call_tool --tool "strava_get_athlete_stats" \
--params '{"athlete_id": "ATHLETE_ID"}'
bash
clawlink_call_tool --tool "strava_list_activities" \
--params '{
"limit": 10,
"after": 1704067200
}'
bash
clawlink_call_tool --tool "strava_get_activity" \
--params '{
"activity_id": "ACTIVITY_ID"
}'
bash
clawlink_call_tool --tool "strava_explore_segments" \
--params '{
"bounds": [37.8, -122.5, 37.9, -122.4],
"activity_type": "running"
}'
bash
clawlink_call_tool --tool "strava_star_segment" \
--params '{
"segment_id": "SEGMENT_ID"
}'
bash
clawlink_call_tool --tool "strava_list_club_activities" \
--params '{
"club_id": "CLUB_ID",
"limit": 20
}'
clawlink_list_integrations to confirm Strava is connected.clawlink_list_tools --integration strava to see the live catalog.clawlink_search_tools with a short query and integration strava.text
┌─────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.strava_get_upload_status.[southwest_lat, southwest_lng, northeast_lat, northeast_lng].run, ride, swim, workout, hike, walk, and others.Status / ErrorMeaningTool 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.
Check that the ClawLink plugin is installed: bash
openclaw plugins list
If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
If a fresh chat does not help, run: bash
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
After restart, tell the user to send /new again and retry.
strava_get_upload_status — processing can take several seconds for large files.Powered by ClawLink — an integration hub for OpenClaw
