Strava · Capability

Strava API — Athletes

Strava API — Athletes. 4 operations. Lead operation: Get Authenticated Athlete. Self-contained Naftiko capability covering one Strava business surface.

Run with Naftiko StravaAthletes

What You Can Do

GET
Getloggedinathlete — Get Authenticated Athlete
/v1/athlete
PUT
Updateloggedinathlete — Update Authenticated Athlete
/v1/athlete
GET
Getloggedinathletezones — Get Athlete Zones
/v1/athlete/zones
GET
Getathletestats — Get Athlete Stats
/v1/athletes/{id}/stats

MCP Tools

get-authenticated-athlete

Get Authenticated Athlete

read-only idempotent
update-authenticated-athlete

Update Authenticated Athlete

idempotent
get-athlete-zones

Get Athlete Zones

read-only idempotent
get-athlete-stats

Get Athlete Stats

read-only idempotent

Capability Spec

strava-athletes.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Strava API — Athletes
  description: 'Strava API — Athletes. 4 operations. Lead operation: Get Authenticated Athlete. Self-contained Naftiko capability
    covering one Strava business surface.'
  tags:
  - Strava
  - Athletes
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    STRAVA_API_KEY: STRAVA_API_KEY
capability:
  consumes:
  - type: http
    namespace: strava-athletes
    baseUri: https://www.strava.com/api/v3
    description: Strava API — Athletes business capability. Self-contained, no shared references.
    resources:
    - name: athlete
      path: /athlete
      operations:
      - name: getloggedinathlete
        method: GET
        description: Get Authenticated Athlete
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updateloggedinathlete
        method: PUT
        description: Update Authenticated Athlete
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: athlete-zones
      path: /athlete/zones
      operations:
      - name: getloggedinathletezones
        method: GET
        description: Get Athlete Zones
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athletes-id-stats
      path: /athletes/{id}/stats
      operations:
      - name: getathletestats
        method: GET
        description: Get Athlete Stats
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: The identifier of the athlete
          required: true
    authentication:
      type: bearer
      token: '{{env.STRAVA_API_KEY}}'
  exposes:
  - type: rest
    namespace: strava-athletes-rest
    port: 8080
    description: REST adapter for Strava API — Athletes. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/athlete
      name: athlete
      description: REST surface for athlete.
      operations:
      - method: GET
        name: getloggedinathlete
        description: Get Authenticated Athlete
        call: strava-athletes.getloggedinathlete
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updateloggedinathlete
        description: Update Authenticated Athlete
        call: strava-athletes.updateloggedinathlete
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/athlete/zones
      name: athlete-zones
      description: REST surface for athlete-zones.
      operations:
      - method: GET
        name: getloggedinathletezones
        description: Get Athlete Zones
        call: strava-athletes.getloggedinathletezones
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/athletes/{id}/stats
      name: athletes-id-stats
      description: REST surface for athletes-id-stats.
      operations:
      - method: GET
        name: getathletestats
        description: Get Athlete Stats
        call: strava-athletes.getathletestats
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: strava-athletes-mcp
    port: 9090
    transport: http
    description: MCP adapter for Strava API — Athletes. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: get-authenticated-athlete
      description: Get Authenticated Athlete
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: strava-athletes.getloggedinathlete
      outputParameters:
      - type: object
        mapping: $.
    - name: update-authenticated-athlete
      description: Update Authenticated Athlete
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: strava-athletes.updateloggedinathlete
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-athlete-zones
      description: Get Athlete Zones
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: strava-athletes.getloggedinathletezones
      outputParameters:
      - type: object
        mapping: $.
    - name: get-athlete-stats
      description: Get Athlete Stats
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: strava-athletes.getathletestats
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.