naftiko: 1.0.0-alpha2 info: label: Strava Fitness Tracking description: Unified capability for fitness tracking and athletic performance analysis using the Strava API. Designed for fitness app developers, coaches, and training platforms to access athlete data, workout history, performance metrics, segment leaderboards, and time-series physiological data. Combines athlete profile, activity, segment, and streaming APIs into a single workout intelligence workflow. tags: - Cycling - Fitness - Fitness Tracking - Running - Sports created: '2026-05-02' modified: '2026-05-06' binds: - namespace: env keys: STRAVA_ACCESS_TOKEN: STRAVA_ACCESS_TOKEN capability: consumes: - type: http namespace: strava baseUri: https://www.strava.com/api/v3 description: Strava API v3 authentication: type: bearer token: '{{STRAVA_ACCESS_TOKEN}}' resources: - name: athlete path: /athlete description: Authenticated athlete profile operations: - name: get-logged-in-athlete method: GET description: Get the authenticated athlete's profile inputParameters: [] outputRawFormat: json outputParameters: - name: result type: object value: $. - name: athlete-stats path: /athletes/{id}/stats description: Athlete statistics operations: - name: get-athlete-stats method: GET description: Get year-to-date and all-time activity statistics inputParameters: - name: id in: path type: integer required: true description: The athlete's identifier outputRawFormat: json outputParameters: - name: result type: object value: $. - name: athlete-zones path: /athlete/zones description: Athlete heart rate and power zones operations: - name: get-logged-in-athlete-zones method: GET description: Get the athlete's heart rate and power zones inputParameters: [] outputRawFormat: json outputParameters: - name: result type: object value: $. - name: athlete-activities path: /athlete/activities description: Athlete activity list operations: - name: get-logged-in-athlete-activities method: GET description: List the authenticated athlete's activities inputParameters: - name: before in: query type: integer required: false description: Unix timestamp to filter activities before - name: after in: query type: integer required: false description: Unix timestamp to filter activities after - name: page in: query type: integer required: false description: Page number - name: per_page in: query type: integer required: false description: Items per page (max 200) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: activity path: /activities/{id} description: Individual activity operations operations: - name: get-activity-by-id method: GET description: Get a specific activity by ID inputParameters: - name: id in: path type: integer required: true description: The activity identifier - name: include_all_efforts in: query type: boolean required: false description: Include all segment efforts outputRawFormat: json outputParameters: - name: result type: object value: $. - name: activity-streams path: /activities/{id}/streams description: Activity time-series data streams operations: - name: get-activity-streams method: GET description: Get time-series data streams for an activity inputParameters: - name: id in: path type: integer required: true description: The activity identifier - name: keys in: query type: array required: true description: Stream types (time, latlng, distance, altitude, heartrate, cadence, watts, velocity_smooth, grade_smooth) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: activity-laps path: /activities/{id}/laps description: Activity lap data operations: - name: get-laps-by-activity-id method: GET description: Get lap splits for an activity inputParameters: - name: id in: path type: integer required: true description: The activity identifier outputRawFormat: json outputParameters: - name: result type: object value: $. - name: segment path: /segments/{id} description: Individual segment data operations: - name: get-segment-by-id method: GET description: Get a specific segment by ID inputParameters: - name: id in: path type: integer required: true description: The segment identifier outputRawFormat: json outputParameters: - name: result type: object value: $. - name: segment-leaderboard path: /segments/{id}/leaderboard description: Segment leaderboard operations: - name: get-leaderboard-by-segment-id method: GET description: Get the leaderboard for a segment inputParameters: - name: id in: path type: integer required: true description: The segment identifier - name: gender in: query type: string required: false description: Filter by gender (M or F) - name: following in: query type: boolean required: false description: Limit to followed athletes - name: page in: query type: integer required: false description: Page number - name: per_page in: query type: integer required: false description: Items per page outputRawFormat: json outputParameters: - name: result type: object value: $. - name: starred-segments path: /segments/starred description: Athlete's starred segments operations: - name: get-logged-in-athlete-starred-segments method: GET description: List the authenticated athlete's starred segments inputParameters: - name: page in: query type: integer required: false description: Page number - name: per_page in: query type: integer required: false description: Items per page outputRawFormat: json outputParameters: - name: result type: object value: $. - name: athlete-routes path: /athlete/routes description: Athlete routes operations: - name: get-routes-by-athlete-id method: GET description: List the athlete's routes inputParameters: - name: page in: query type: integer required: false description: Page number - name: per_page in: query type: integer required: false description: Items per page outputRawFormat: json outputParameters: - name: result type: object value: $. - name: athlete-clubs path: /athlete/clubs description: Athlete club memberships operations: - name: get-logged-in-athlete-clubs method: GET description: List the athlete's club memberships inputParameters: - name: page in: query type: integer required: false description: Page number - name: per_page in: query type: integer required: false description: Items per page outputRawFormat: json outputParameters: - name: result type: object value: $. - name: gear path: /gear/{id} description: Athlete gear details operations: - name: get-gear-by-id method: GET description: Get an equipment item by ID inputParameters: - name: id in: path type: string required: true description: The gear identifier (e.g., b1234567) outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest port: 8080 namespace: strava-fitness-tracking-api description: Unified REST API for Strava fitness tracking and performance analysis. resources: - path: /v1/athlete name: athlete-profile description: Authenticated athlete profile and statistics operations: - method: GET name: get-athlete description: Get the authenticated athlete's profile call: strava.get-logged-in-athlete outputParameters: - type: object mapping: $. - path: /v1/athlete/stats name: athlete-stats description: Athlete activity statistics operations: - method: GET name: get-stats description: Get year-to-date and all-time activity totals call: strava.get-athlete-stats with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/athlete/zones name: athlete-zones description: Heart rate and power training zones operations: - method: GET name: get-zones description: Get the athlete's training zones call: strava.get-logged-in-athlete-zones outputParameters: - type: object mapping: $. - path: /v1/activities name: activities description: Workout activity list and creation operations: - method: GET name: list-activities description: List athlete's recent activities with date filtering call: strava.get-logged-in-athlete-activities with: before: rest.before after: rest.after page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - path: /v1/activities/{id} name: activity-detail description: Individual activity detail operations: - method: GET name: get-activity description: Get detailed activity data call: strava.get-activity-by-id with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/activities/{id}/streams name: activity-streams description: Activity data streams operations: - method: GET name: get-activity-streams description: Get time-series data streams for performance analysis call: strava.get-activity-streams with: id: rest.id keys: rest.keys outputParameters: - type: object mapping: $. - path: /v1/activities/{id}/laps name: activity-laps description: Activity lap splits operations: - method: GET name: get-laps description: Get lap split data for an activity call: strava.get-laps-by-activity-id with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/segments/{id} name: segment description: Strava segment details operations: - method: GET name: get-segment description: Get details about a specific segment call: strava.get-segment-by-id with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/segments/{id}/leaderboard name: segment-leaderboard description: Segment competitive leaderboard operations: - method: GET name: get-leaderboard description: Get leaderboard for a segment call: strava.get-leaderboard-by-segment-id with: id: rest.id gender: rest.gender following: rest.following outputParameters: - type: object mapping: $. - path: /v1/segments/starred name: starred-segments description: Athlete's starred segments operations: - method: GET name: list-starred-segments description: List segments starred by the athlete call: strava.get-logged-in-athlete-starred-segments outputParameters: - type: object mapping: $. - path: /v1/routes name: routes description: Athlete routes operations: - method: GET name: list-routes description: List routes created by the athlete call: strava.get-routes-by-athlete-id outputParameters: - type: object mapping: $. - path: /v1/clubs name: clubs description: Athlete club memberships operations: - method: GET name: list-clubs description: List athlete's club memberships call: strava.get-logged-in-athlete-clubs outputParameters: - type: object mapping: $. - path: /v1/gear/{id} name: gear description: Athlete gear details operations: - method: GET name: get-gear description: Get details about a bike or shoe call: strava.get-gear-by-id with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp port: 9090 namespace: strava-fitness-tracking-mcp transport: http description: MCP server for AI-assisted fitness coaching and training analysis. tools: - name: get-athlete-profile description: Get the authenticated athlete's profile including name, location, and gear hints: readOnly: true call: strava.get-logged-in-athlete outputParameters: - type: object mapping: $. - name: get-athlete-stats description: Get year-to-date and all-time totals for rides, runs, and swims hints: readOnly: true call: strava.get-athlete-stats with: id: tools.id outputParameters: - type: object mapping: $. - name: get-athlete-zones description: Get the athlete's heart rate and power training zones hints: readOnly: true call: strava.get-logged-in-athlete-zones outputParameters: - type: object mapping: $. - name: list-activities description: List athlete's workout activities, optionally filtered by date range hints: readOnly: true openWorld: true call: strava.get-logged-in-athlete-activities with: before: tools.before after: tools.after page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: get-activity-detail description: Get full details of a specific workout including performance metrics hints: readOnly: true call: strava.get-activity-by-id with: id: tools.id include_all_efforts: tools.include_all_efforts outputParameters: - type: object mapping: $. - name: get-activity-streams description: Get time-series data (GPS track, heart rate, power, cadence, speed) for deep performance analysis hints: readOnly: true call: strava.get-activity-streams with: id: tools.id keys: tools.keys outputParameters: - type: object mapping: $. - name: get-activity-laps description: Get lap split data to analyze pacing and consistency hints: readOnly: true call: strava.get-laps-by-activity-id with: id: tools.id outputParameters: - type: object mapping: $. - name: get-segment-details description: Get details about a specific Strava segment including grade and climb category hints: readOnly: true call: strava.get-segment-by-id with: id: tools.id outputParameters: - type: object mapping: $. - name: get-segment-leaderboard description: Get the competitive leaderboard for a segment, optionally filtered by gender or following hints: readOnly: true openWorld: true call: strava.get-leaderboard-by-segment-id with: id: tools.id gender: tools.gender following: tools.following date_range: tools.date_range per_page: tools.per_page outputParameters: - type: object mapping: $. - name: list-starred-segments description: List the athlete's starred segments for quick access hints: readOnly: true call: strava.get-logged-in-athlete-starred-segments outputParameters: - type: object mapping: $. - name: list-routes description: List planned routes created by the athlete hints: readOnly: true call: strava.get-routes-by-athlete-id outputParameters: - type: object mapping: $. - name: list-clubs description: List the athlete's club memberships for social training context hints: readOnly: true call: strava.get-logged-in-athlete-clubs outputParameters: - type: object mapping: $. - name: get-gear-details description: Get usage and details for a specific bike or pair of shoes hints: readOnly: true call: strava.get-gear-by-id with: id: tools.id outputParameters: - type: object mapping: $.