ClawLink

How to connect Strava to Hermes Agent

Connect Strava to Hermes with ClawLink in one click — 33 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Strava
Strava
StravaOAUTH2MCP

Track workouts, explore routes, and manage club activities. Once connected, Hermes Agent can read and act on Strava from chat — pairing, token refresh, and tool wiring handled for you.

33 tools

Most guides for giving Hermes Agent Strava access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Strava setup: pair once in the browser and your always-on Hermes agent can act on Strava for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to Strava.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Strava

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Strava?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect Strava in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Use strava_list_athlete_activities for the last 7 days and strava_get_athlete_stats. Give me a table of activity, date, type, distance, and moving time, plus the totals.

Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Strava is connected in the dashboard, that agent calls the same 33 Strava tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Strava MCP for Hermes

Looking for a Strava MCP server for Hermes Agent? ClawLink connects Strava to Hermes Agent and exposes 33 Strava tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Strava integration works the same way.

Strava's own MCP Connector is now the first answer to most agent queries about Strava: subscriber-only, read-only, and launched June 2026. That is a real option and it is the reason this page's pitch changed. This page's route is hosted OAuth through Strava's own app flow, so there is no Strava subscription required, no developer app of your own, and no token handling: Strava access tokens expire every 6 hours, and the hosted connection refreshes them for you, which is the most invisible part of this integration. The bigger difference is the surface. The official connector is read-only. The 33 tools here include the writes: uploading activities, creating activities, giving kudos, and managing club activity views, alongside the read side of activities, segments, routes, clubs, and athlete stats. If all you want is training history synced to an agent, Strava's connector is the native answer. If you want an agent that can act on your account, this is the route that can.

What the Hermes Agent Strava integration can do

33 Strava tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 33.

30 of 33 Strava tools for Hermes

ToolWhat it does
Create an activity strava_create_an_activityCreate a manual activity
Explore segments strava_explore_segmentsExplore segments in an area
Get activity strava_get_activityGet activity details by ID
Get activity streams strava_get_activity_streamsGet activity time-series data
Get activity zones strava_get_activity_zonesGet heart rate and power zones
Get athlete stats strava_get_athlete_statsGet athlete activity stats
Get authenticated athlete strava_get_authenticated_athleteGet authenticated athlete profile
Get club strava_get_clubGet club details
Get route strava_get_routeGet route details
Get segment strava_get_segmentGet segment details
List activity laps strava_list_activity_lapsList activity laps
List athlete activities strava_list_athlete_activitiesList authenticated athlete's activities
List athlete clubs strava_list_athlete_clubsList athlete's clubs
List athlete routes strava_list_athlete_routesList athlete's routes
List club activities strava_list_club_activitiesList club activities
Upload activity strava_upload_activityUpload an activity file
Export route gpx strava_export_route_gpxExports a Strava route as a GPX (GPS Exchange Format) file
Export route tcx strava_export_route_tcxExports a Strava route as a TCX (Training Center XML) file
Get equipment strava_get_equipmentRetrieves detailed information about a specific piece of gear/equipment
Get route streams strava_get_route_streamsGet detailed stream data for a route
Get segment effort strava_get_segment_effortRetrieves detailed information about a specific segment effort by its unique ID
Get segment effort streams strava_get_segment_effort_streamsReturns stream data for a segment effort completed by the authenticated athlete
Get segment streams strava_get_segment_streamsGet detailed stream data for a segment
Get upload strava_get_uploadRetrieves the status of an upload by its ID
Get zones strava_get_zonesRetrieves the authenticated athlete's heart rate and power zones
List activity comments strava_list_activity_commentsRetrieves comments on a specific Strava activity, sorted oldest first
List activity kudoers strava_list_activity_kudoersReturns the athletes who kudoed an activity identified by an identifier
List club administrators strava_list_club_administratorsReturns a list of the administrators of a given Strava club
List club members strava_list_club_membersReturns a list of the athletes who are members of a given club
List segment efforts strava_list_segment_effortsList the authenticated athlete's efforts on a given segment

Try it: find the Strava tool you need

Browse the 30 Strava tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Use strava_list_athlete_activities for the last 7 days and strava_get_athlete_stats. Give me a table of activity, date, type, distance, and moving time, plus the totals.

Upload <file path> with strava_upload_activity and monitor strava_get_upload until it is ready. Confirm the activity name and visibility before uploading.

List my recent activities with strava_list_athlete_activities, then pull the segment efforts for the top 3 with strava_get_segment_effort and compare my times against the segment leaders.

Run strava_list_athlete_clubs and strava_list_club_activities for <club id> this week, and tell me which members have been most active.

How the Strava tools behave

Details that decide whether a Strava prompt is a quick answer or a scope error and a rate-limit wall.

  • Private activities need activity:read_all, and a partial consent can leave them invisible. The narrow activity:read scope covers public activities only; if the agent cannot see private ones, the grant was approved without the wider scope and the fix is reconnecting with the full scope set, not debugging the call.
  • Uploads are two-step. strava_upload_activity submits the file and returns an upload id; strava_get_upload reports readiness. An agent that uploads and immediately reads the activity is racing the upload.
  • Streams and laps are per-activity extras, not summaries. strava_get_activity_streams, strava_list_activity_laps, and the zone tools each cost a call per activity, so the prompt should name the few activities that matter instead of asking for everything at once.
  • Routes export in two formats. strava_export_route_gpx and strava_export_route_tcx both exist; GPX is the interoperable shape, TCX is the training-software shape, and the wrong one fails in the downstream tool, not in Strava.
  • Athlete stats are the summary shape. strava_get_athlete_stats answers all-time and recent totals in one call; reconstructing them from activity lists is the rate-limit shape.
  • Writes are real writes. strava_upload_activity, strava_create_an_activity, and the kudos tools change your Strava account and are visible to others, which is exactly why the write surface is the argument against the read-only official connector.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Strava working from chat.

ManualClawLink
Connection flowRegister a Strava app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Strava through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Strava.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Strava actions to the runtime in a format your agent can reliably use.33 tools for Strava are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Strava to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Strava in the browser, and the 33 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

Hermes paired but still can't use Strava

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

Connection succeeds but no tools appear

Reconnect Strava from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Strava tools

Strava tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Strava call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Strava returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

Strava returns 403 or "permission denied" although the account shows as connected

Strava's taught causes for a 403 are scope and app state: the OAuth grant lacks the scope the call needs, or the app is at the default limit of one connected athlete for an unapproved developer account. The scope distinction is the one that bites on this integration: activity:read covers public activities and activity:read_all also covers private ones, so a call on a private activity fails with a permissions error when only the narrow scope was granted. That can happen silently because a partial approval on Strava's consent screen leaves the connection looking healthy. The fix is to reconnect from the dashboard and approve the full scope set. The page's own cause completes the list: a placeholder id such as YOUR_ACTIVITY_ID reaching the API literally. Ask the agent which activity and which scope it was using before anything else.

Ask the agent to diagnose it:

Call strava_get_authenticated_athlete and tell me the athlete id, then try strava_list_athlete_activities and report how many activities are visible. Quote the exact error from the failed call. Do not retry it yet.
Strava starts returning 429 or the agent stalls on an activity sweep

Strava's current documented limits, per developers.strava.com, are 200 requests per 15 minutes and 2,000 per day overall, with the read endpoints capped tighter at 100 per 15 minutes and 1,000 per day, and a 429 with a JSON error when exceeded. An agent that walks an athlete's whole activity history one page at a time, then streams for each activity, is the shape that meets the window. The response is to change the shape of the work: list once, keep the ids, and read streams or laps only for the activities you actually need, in batches across turns if needed. The limits reset on natural 15-minute windows and at midnight UTC; no reconnect changes them.

Ask the agent to diagnose it:

Tell me how many Strava calls you have made in the last 15 minutes and what you were enumerating. Quote the exact error text. Do not call Strava again until I reply.
Strava tools are missing, or one tool name is not found

Two failures share this symptom. If no Strava tools appear at all, the connection or pairing is incomplete: confirm the plugin was installed with --enable, that hermes clawlink begin and hermes clawlink finish both ran, and that Strava shows as connected in the dashboard. If most tools work and one name fails, the name is wrong rather than missing, and the error lists the closest real ones. There is also a first-call timing case: schemas load on demand, so the opening Strava call in a fresh session can arrive before the catalog and needs one retry. The frame search results use for this symptom, a connector not loaded in a client's config, belongs to local MCP setups and does not apply here.

Ask the agent to diagnose it:

List the Strava tools you actually have access to. If there are none, say so plainly and tell me whether Strava shows as connected. Do not guess tool names.
OAuth finished in the browser but the account is still missing

Try reconnecting Strava and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Strava integration?

Yes. ClawLink is the fastest way to connect Hermes to Strava: link your Strava account once in the browser and Hermes Agent can call the Strava API through 33 ready-made tools — no custom code or token handling.

How do I connect Strava to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Strava in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect Strava to Hermes Agent?

About two minutes. Sign in, click Connect next to Strava in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Strava up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Strava working from chat.

How is this different from Strava's official MCP Connector?

Strava's connector is their own hosted MCP server, subscriber-only and read-only, rolled out from June 2026, and it syncs training history into MCP clients. This page's route connects through hosted OAuth with no subscription requirement and exposes 33 tools, including the writes the connector deliberately does not have: strava_upload_activity, strava_create_an_activity, and the kudos and club tools. Both are hosted, both keep the 6-hour token expiry out of your hands. The choice is scope: read-only sync from Strava's own product, or an agent that can also act on the account through ClawLink.

How do the token refreshes work, since Strava tokens expire every 6 hours?

Strava access tokens are short-lived, roughly 6 hours, and the manual routes document refresh-token rotation as a standing chore. The hosted OAuth connection here owns the refresh flow: you approve access once in the browser, and the token lifecycle is handled server-side, invisible to Hermes and to you. This is the main thing the manual setup pages do not tell you about, and it is exactly the kind of maintenance a hosted flow exists to remove.

What can the agent do in Strava?

The activity surface: list and read activities, upload new ones from a file, create activities, read streams, laps, zones, and comments, give and list kudos. The athlete and social surface: athlete stats, clubs and their members and activities, routes and GPX/TCX exports, segments, segment efforts, and equipment. The writes are the differentiator: uploading an activity from a file and creating activities are the tools the official read-only connector cannot offer.

Why does the agent see only some of my activities?

The usual cause is scope, not the connection. The OAuth grant asks for the activity scopes, and the distinction that matters is activity:read versus activity:read_all: the first covers activities you made public, the second also covers private ones. If private activities are invisible to the agent, the connection was granted without activity:read_all. The fix is to review the connected app's permissions in Strava settings and reconnect, approving the full scope set on the consent screen.

Hermes paired but still can't use Strava

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.