Install
openclaw skills install strava-activitiesTrack 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.
openclaw skills install strava-activitiesTrack 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: Install | Step 2: Pair Account | Step 3: Connect Strava |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Strava |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ 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.
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."
# 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.clawlink_list_integrations
Response: Returns all connected integrations. Look for strava in the list.
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 strava| Tool | Description | Mode |
|---|---|---|
strava_get_athlete | Get the authenticated athlete's profile | Read |
strava_update_athlete | Update athlete settings (sport type, timezone) | Write |
strava_get_athlete_stats | Get athlete statistics (distance, pace, heart rate zones) | Read |
strava_get_athlete_zones | Get heart rate and power zones | Read |
strava_get_athlete_clubs | List clubs the athlete is a member of | Read |
| Tool | Description | Mode |
|---|---|---|
strava_list_activities | List the athlete's activities with pagination | Read |
strava_get_activity | Get details for a specific activity | Read |
strava_create_activity | Create a manual activity entry | Write |
strava_update_activity | Update an activity's name, description, or privacy | Write |
strava_delete_activity | Delete an activity permanently | Write |
strava_get_activity_zones | Get splits and heart rate/power zones for an activity | Read |
strava_get_activity_laps | Get lap data for an activity | Read |
strava_get_activity_streams | Get GPS, heart rate, power streams for an activity | Read |
strava_upload_activity_photo | Attach a photo to an activity | Write |
| Tool | Description | Mode |
|---|---|---|
strava_list_activity_comments | List comments on an activity | Read |
strava_create_activity_comment | Add a comment to an activity | Write |
strava_list_activity_kudos | List kudos given to an activity | Read |
strava_give_kudos_to_activity | Give kudos to an activity | Write |
strava_delete_kudos_from_activity | Remove kudos from an activity | Write |
| Tool | Description | Mode |
|---|---|---|
strava_list_routes | List the athlete's saved routes | Read |
strava_get_route | Get details and segments for a route | Read |
strava_create_route | Create a new route | Write |
strava_update_route | Update a route's name or description | Write |
strava_delete_route | Delete a route | Write |
| Tool | Description | Mode |
|---|---|---|
strava_get_segment | Get a segment's leaderboard and details | Read |
strava_list_segment_efforts | List efforts on a segment by an athlete | Read |
strava_get_segment_effort | Get a specific segment effort | Read |
strava_explore_segments | Explore segments in a geographic area | Read |
strava_star_segment | Star/favorite a segment | Write |
strava_unstar_segment | Remove a star from a segment | Write |
strava_list_starred_segments | List the athlete's starred segments | Read |
| Tool | Description | Mode |
|---|---|---|
strava_get_club | Get a club's profile | Read |
strava_list_club_activities | List recent activities in a club | Read |
strava_list_club_members | List members of a club | Read |
strava_join_club | Request to join a club | Write |
strava_leave_club | Leave a club | Write |
| Tool | Description | Mode |
|---|---|---|
strava_get_equipment | Get details for a piece of equipment | Read |
strava_create_equipment | Add new equipment (bike, shoes) | Write |
strava_update_equipment | Update equipment name or retired status | Write |
strava_delete_equipment | Delete equipment | Write |
strava_list_athlete_equipment | List all equipment for an athlete | Read |
| Tool | Description | Mode |
|---|---|---|
strava_upload_file | Upload a FIT, GPX, or TCX activity file | Write |
strava_get_upload_status | Check the status of an activity upload | Read |
clawlink_call_tool --tool "strava_get_athlete_stats" \
--params '{"athlete_id": "ATHLETE_ID"}'
clawlink_call_tool --tool "strava_list_activities" \
--params '{
"limit": 10,
"after": 1704067200
}'
clawlink_call_tool --tool "strava_get_activity" \
--params '{
"activity_id": "ACTIVITY_ID"
}'
clawlink_call_tool --tool "strava_explore_segments" \
--params '{
"bounds": [37.8, -122.5, 37.9, -122.4],
"activity_type": "running"
}'
clawlink_call_tool --tool "strava_star_segment" \
--params '{
"segment_id": "SEGMENT_ID"
}'
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.┌─────────────────────────────────────────────────────────────┐
│ 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 / Error | Meaning |
|---|---|
| Tool not found | The tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration strava. |
| Missing connection | Strava is not connected. Direct the user to https://claw-link.dev/dashboard?add=strava. |
Activity not found | The activity ID does not exist or belongs to another athlete. |
Segment not found | The segment ID does not exist in Strava's database. |
Upload in progress | The file upload is still being processed. Check status with strava_get_upload_status. |
Upload failed | The file format is invalid or the upload processing failed. |
403 Forbidden | The connected account lacks permission for this operation. |
Rate limited | Too many requests — wait before retrying. |
| Write rejected | User did not confirm a write action. Always confirm before executing writes. |
openclaw plugins list
/new as a standalone message to reload the catalog.openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
/new again and retry.strava_get_upload_status — processing can take several seconds for large files.Powered by ClawLink — an integration hub for OpenClaw
