Skip to main content
Glama
r-huijts

Strava MCP Server

by r-huijts

Strava MCP 서버

이 프로젝트는 Strava API와의 연결 역할을 하는 TypeScript 기반 모델 컨텍스트 프로토콜(MCP) 서버를 구현합니다. Strava 데이터와 기능을 대규모 언어 모델(LLM)이 MCP 표준을 통해 활용할 수 있는 "도구"로 제공합니다.

특징

  • 🏃 최근 활동, 프로필, 통계에 접근하세요.

  • 📊 자세한 활동 스트림(파워, 심박수, 케이던스 등)을 가져옵니다.

  • 🗺️ 세그먼트를 탐색, 보기, 별표 표시 및 관리하세요.

  • ⏱️ 자세한 활동 및 세그먼트별 노력 정보를 확인하세요.

  • 📍 저장된 경로를 나열하고 세부 정보를 확인하세요.

  • 💾 경로를 GPX 또는 TCX 형식으로 로컬 파일 시스템으로 내보냅니다.

  • 🤖 MCP를 통한 AI 친화적 JSON 응답.

  • 🔧 Strava API V3를 사용합니다.

Related MCP server: Strava MCP Server

자연어 상호작용 예시

Strava 데이터와 상호 작용하려면 다음과 같은 질문을 AI 비서에게 하세요.

최근 활동 및 프로필:

  • "최근 Strava 활동을 보여주세요."

  • "제가 마지막으로 탄 3번의 라이딩은 무엇이었나요?"

  • "내 Strava 프로필 정보를 가져와요."

  • "내 Strava 사용자 이름은 뭐예요?"

활동 스트림 및 데이터:

  • "어제 아침 달리기에서 얻은 심박수 데이터를 가져와."

  • "마지막 주행 때의 파워 데이터를 보여주세요."

  • "주말 센추리 라이드의 케이던스 프로필은 어땠나요?"

  • "목요일 저녁 운동에 대한 모든 스트림 데이터를 가져와."

  • "디아블로 산 등반에 필요한 고도 프로필을 보여주세요."

통계:

  • "올해 Strava에서 내 달리기 통계는 어때요?"

  • "제가 지금까지 자전거를 탄 거리는 얼마인가요?"

  • "내 역대 수영 기록 보여줘."

특정 활동:

  • "마지막 달리기에 대한 세부 사항을 알려주세요."

  • "화요일에 제가 한 간헐적 훈련의 평균 파워는 얼마였나요?"

  • "어제 출퇴근할 때 트렉 자전거를 썼나요?"

클럽:

  • "내가 속한 Strava 클럽은 어디인가요?"

  • "내가 가입한 클럽을 나열해 보세요."

세그먼트:

  • "콜로라도 볼더 근처에서 제가 별표 표시한 구간을 나열하세요."

  • "내가 좋아하는 세그먼트를 보여줘."

  • 'Alpe du Zwift' 구간에 대한 자세한 내용을 알아보세요.

  • 골든 게이트 공원 근처에 달리기에 좋은 구간이 있나요?

  • "볼더스 플래그스태프 산 근처에서 도전적인 등반 코스를 찾아보세요."

  • "플래그스태프 로드 클라임 부분을 나에게 보여주세요."

  • "Lefthand Canyon" 부분의 별표를 해제하세요.

세그먼트별 노력:

  • "이번 달 '선샤인 캐년' 세그먼트에서 제 노력을 보여주세요."

  • "올해 1월부터 6월까지 박스힐에 대한 내 시도를 나열해 보세요."

  • "알프 뒤에즈에 대한 내 개인 기록에 대한 자세한 내용을 알아보세요."

경로:

  • "저장된 Strava 경로를 나열합니다."

  • "내 경로의 두 번째 페이지를 보여주세요."

  • "볼더 루프 경로의 고도 상승은 얼마입니까?"

  • "'볼더 루프' 경로에 대한 설명을 받으세요."

  • "내 '볼더 루프' 경로를 GPX 파일로 내보내주세요."

  • "일요일 아침 경로를 TCX 파일로 저장합니다."

고급 프롬프트 예시

Strava 활동에 대한 전문적인 사이클 코치 분석을 만드는 고급 프롬프트의 예는 다음과 같습니다.

지엑스피1

이 프롬프트는 전문적인 코칭 피드백과 사용자 정의 시각화 대시보드를 포함하여 가장 최근의 Strava 활동에 대한 개인화된 분석을 생성합니다.

⚠️ 중요한 설정 순서

Claude와 성공적으로 통합하려면 다음 단계를 정확한 순서대로 따르세요.

  1. 서버와 해당 종속성을 설치합니다.

  2. Claude의 구성에서 서버를 구성하세요

  3. Strava 인증 흐름 완료

  4. 적절한 환경 변수 로딩을 보장하기 위해 Claude를 다시 시작하세요.

단계를 건너뛰거나 순서 없이 수행하면 Claude가 환경 변수를 제대로 읽지 못할 수 있습니다.

설치 및 설정

  1. 필수 조건:

    • Node.js(v18 이상 권장)

    • npm(일반적으로 Node.js와 함께 제공됨)

    • Strava 계정

1. 출처로부터

  1. 복제 저장소:

    git clone https://github.com/r-huijts/strava-mcp.git
    cd strava-mcp
  2. 종속성 설치:

    npm install
  3. 프로젝트 빌드:

    npm run build

2. Claude Desktop 구성

Claude 구성 파일을 업데이트하세요.

{
  "mcpServers": {
    "strava-mcp-local": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/strava-mcp/dist/server.js"
      ]
      // Environment variables are read from the .env file by the server
    }
  }
}

/absolute/path/to/your/strava-mcp/ 실제 설치 경로로 바꿔야 합니다.

3. Strava 인증 설정

setup-auth.ts 스크립트를 사용하면 Strava API를 사용하여 인증을 쉽게 설정할 수 있습니다. 다음 단계를 주의 깊게 따르세요.

Strava API 애플리케이션 만들기

  1. https://www.strava.com/settings/api 로 이동하세요

  2. 새로운 애플리케이션을 만드세요:

    • 신청서 세부 정보(이름, 웹사이트, 설명)를 입력하세요.

    • 중요: "인증 콜백 도메인"을 localhost 로 설정하세요.

    • 클라이언트 ID와 클라이언트 비밀번호를 기록해 두세요.

설치 스크립트 실행

# In your strava-mcp directory
npx tsx scripts/setup-auth.ts

안내에 따라 인증 흐름을 완료하세요(자세한 지침은 아래 인증 섹션 참조).

4. 클로드를 다시 시작하세요

위의 모든 단계를 완료한 후 Claude Desktop을 다시 시작하여 변경 사항을 적용하세요. 이렇게 하면 다음이 보장됩니다.

  • 새로운 구성이 로드되었습니다

  • 환경 변수가 제대로 읽혔습니다.

  • Strava MCP 서버가 올바르게 초기화되었습니다.

🔑 환경 변수

변하기 쉬운

설명

STRAVA_CLIENT_ID

Strava 애플리케이션 클라이언트 ID(필수)

STRAVA_CLIENT_SECRET

Strava 애플리케이션 클라이언트 비밀번호(필수)

스트라바_액세스_토큰

Strava API 액세스 토큰(설정 중 생성됨)

스트라바_새로고침_토큰

Strava API 새로 고침 토큰(설정 중 생성됨)

경로_내보내기_경로

내보낸 경로 파일을 저장하기 위한 절대 경로(선택 사항)

토큰 처리

이 서버는 자동 토큰 갱신을 구현합니다. 초기 액세스 토큰이 만료되면(일반적으로 6시간 후), 서버는 .env 에 저장된 갱신 토큰을 자동으로 사용하여 새 액세스 토큰과 갱신 토큰을 얻습니다. 이 새 토큰은 실행 중인 프로세스와 .env 파일 모두에 업데이트되어 지속적인 운영을 보장합니다.

초기 설정 시에는 scripts/setup-auth.ts 스크립트를 한 번만 실행하면 됩니다.

내보내기 경로 구성(선택 사항)

export-route-gpx 또는 export-route-tcx 도구를 사용하려면 내보낸 파일을 저장할 디렉토리를 지정해야 합니다.

.env 파일을 편집하여 ROUTE_EXPORT_PATH 변수를 추가/업데이트합니다.

# Optional: Define an *absolute* path for saving exported route files (GPX/TCX)
# Ensure this directory exists and the server process has write permissions.
# Example: ROUTE_EXPORT_PATH=/Users/your_username/strava-exports
ROUTE_EXPORT_PATH=

자리 표시자를 원하는 내보내기 디렉터리의 절대 경로 로 바꾸세요. 디렉터리가 존재하고 서버에 쓰기 권한이 있는지 확인하세요.

API 참조

서버는 다음과 같은 MCP 도구를 제공합니다.


get-recent-activities

인증된 사용자의 최근 활동을 가져옵니다.

  • 사용 시기: 사용자가 최근 운동, 활동, 달리기, 자전거 타기 등에 대해 질문할 때.

  • 매개변수:

    • perPage (선택 사항):

      • 유형: number

      • 설명: 검색할 활동의 수입니다.

      • 기본값: 30

  • 출력: 최근 활동의 서식이 지정된 텍스트 목록(이름, ID, 거리, 날짜).

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


get-athlete-profile

인증된 운동선수의 프로필 정보를 가져옵니다.

  • 사용 시기: 사용자가 프로필 세부 정보, 사용자 이름, 위치, 체중, 프리미엄 상태 등을 요청할 때

  • 매개변수: 없음

  • 출력: 프로필 세부 정보가 포함된 서식이 지정된 텍스트 문자열입니다.

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


get-athlete-stats

인증된 운동선수의 활동 통계(최근, YTD, 전체 기간)를 가져옵니다.

  • 사용 시기: 사용자가 전반적인 통계, 달리기/자전거 타기/수영에 대한 합계, 개인 기록(가장 긴 자전거 타기, 가장 큰 등반)을 요청할 때.

  • 매개변수: 없음

  • 출력: 사용자의 측정 선호도를 반영한 통계의 서식 있는 텍스트 요약입니다.

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


get-activity-details

ID를 사용하여 특정 활동에 대한 자세한 정보를 가져옵니다.

  • 사용 시기: 사용자가 ID로 식별된 특정 활동에 대한 세부 정보를 요청할 때.

  • 매개변수:

    • activityId (필수):

      • 유형: number

      • 설명: 활동의 고유 식별자입니다.

  • 출력: 사용자의 측정 기본 설정을 반영하여 자세한 활동 정보(유형, 날짜, 거리, 시간, 속도, 심박수, 전력, 장비 등)가 포함된 서식이 지정된 텍스트 문자열입니다.

  • 오류: 토큰이 없거나 잘못됨, activityId 잘못됨, Strava API 오류.


list-athlete-clubs

인증된 운동선수가 회원으로 있는 클럽을 나열합니다.

  • 사용 시기: 사용자가 가입한 클럽에 대해 질문할 때.

  • 매개변수: 없음

  • 출력: 클럽의 서식화된 텍스트 목록(이름, ID, 스포츠, 회원, 위치).

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


list-starred-segments

인증된 운동선수가 별표를 찍은 세그먼트를 나열합니다.

  • 사용 시기: 사용자가 별표 표시하거나 가장 좋아하는 세그먼트에 대해 질문할 때.

  • 매개변수: 없음

  • 출력: 별표 표시된 세그먼트(이름, ID, 유형, 거리, 등급, 위치)의 서식이 지정된 텍스트 목록입니다.

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


get-segment

ID를 사용하여 특정 세그먼트에 대한 자세한 정보를 가져옵니다.

  • 사용 시기: 사용자가 ID로 식별된 특정 세그먼트에 대한 세부 정보를 요청할 때.

  • 매개변수:

    • segmentId (필수):

      • 유형: number

      • 설명: 세그먼트의 고유 식별자입니다.

  • 출력: 사용자의 측정 기본 설정을 반영하여 세부적인 세그먼트 정보(거리, 등급, 고도, 위치, 별, 노력 등)가 포함된 서식이 지정된 텍스트 문자열입니다.

  • 오류: 토큰이 없거나 잘못됨, segmentId 잘못됨, Strava API 오류.


explore-segments

지정된 지리적 영역(경계 상자) 내에서 인기 있는 세그먼트를 검색합니다.

  • 사용 시기: 사용자가 특정 지역에서 세그먼트를 찾거나 알아보고 싶을 때, 선택적으로 활동 유형이나 등반 범주별로 필터링할 때.

  • 매개변수:

    • bounds (필수):

      • 유형: string

      • 설명: 쉼표로 구분: south_west_lat,south_west_lng,north_east_lat,north_east_lng .

    • activityType (선택 사항):

      • 유형: string ( "running" 또는 "riding" )

      • 설명: 활동 유형별로 필터링합니다.

    • minCat (선택 사항):

      • 유형: number (0-5)

      • 설명: 최소 등반 등급. activityType: 'riding' 이 필요합니다.

    • maxCat (선택 사항):

      • 유형: number (0-5)

      • 설명: 최대 등반 등급. activityType: 'riding' 이 필요합니다.

  • 출력: 발견된 세그먼트의 서식이 지정된 텍스트 목록(이름, ID, 등반 유형, 거리, 등급, 고도).

  • 오류: 토큰 누락/잘못됨, bounds 형식이 잘못됨, 필터 조합이 잘못됨, Strava API 오류.


star-segment

인증된 운동선수에 대해 특정 세그먼트에 별표를 표시하거나 표시를 해제합니다.

  • 사용 시기: 사용자가 ID로 식별된 특정 세그먼트에 별표 표시, 즐겨찾기, 별표 해제 또는 즐겨찾기 해제를 명시적으로 요청할 때.

  • 매개변수:

    • segmentId (필수):

      • 유형: number

      • 설명: 세그먼트의 고유 식별자입니다.

    • starred (필수):

      • 유형: boolean

      • 설명: 별표는 true , 별표는 false .

  • 출력: 작업과 세그먼트의 새로운 별표 상태를 확인하는 성공 메시지입니다.

  • 오류: 토큰 누락/잘못됨, segmentId 오류, Strava API 오류(예: 세그먼트를 찾을 수 없음, 속도 제한).


get-segment-effort

ID를 사용하여 특정 세그먼트 활동에 대한 자세한 정보를 가져옵니다.

  • 사용 시기: 사용자가 ID로 식별된 특정 세그먼트 활동에 대한 세부 정보를 요청할 때.

  • 매개변수:

    • effortId (필수):

      • 유형: number

      • 설명: 세그먼트 노력의 고유 식별자입니다.

  • 출력: 세부적인 노력 정보(세그먼트 이름, 활동 ID, 시간, 거리, HR, 전력, 순위 등)가 포함된 서식이 지정된 텍스트 문자열입니다.

  • 오류: 토큰이 없거나 잘못됨, effortId 잘못됨, Strava API 오류.


list-segment-efforts

특정 세그먼트에서 인증된 선수의 노력을 나열하며, 선택적으로 날짜별로 필터링할 수 있습니다.

  • 사용 시기: 사용자가 특정 세그먼트에 대한 노력이나 시도를 나열해 달라고 요청할 때(가능하면 날짜 범위 내에서).

  • 매개변수:

    • segmentId (필수):

      • 유형: number

      • 설명: 세그먼트의 ID입니다.

    • startDateLocal (선택 사항):

      • 유형: string (ISO 8601 형식)

      • 설명: 이 날짜-시간 이후에 시작되는 필터링 작업입니다.

    • endDateLocal (선택 사항):

      • 유형: string (ISO 8601 형식)

      • 설명: 이 날짜-시간 이전에 종료된 필터링 작업입니다.

    • perPage (선택 사항):

      • 유형: number

      • 설명: 페이지당 결과 수.

      • 기본값: 30

  • 출력: 일치하는 세그먼트 활동의 서식이 지정된 텍스트 목록입니다.

  • 오류: 토큰 누락/잘못됨, segmentId 오류, 날짜 형식 오류, Strava API 오류.


list-athlete-routes

인증된 선수가 만든 경로를 나열합니다.

  • 사용 시기: 사용자가 생성하거나 저장한 경로를 보여달라고 요청할 때.

  • 매개변수:

    • page (선택 사항):

      • 유형: number

      • 설명: 페이지 번호를 매기는 데 사용합니다.

    • perPage (선택 사항):

      • 유형: number

      • 설명: 페이지당 경로 수.

      • 기본값: 30

  • 출력: 경로의 형식화된 텍스트 목록(이름, ID, 유형, 거리, 고도, 날짜).

  • 오류: 토큰이 없거나 잘못됨, Strava API 오류.


get-route

ID를 사용하여 특정 경로에 대한 자세한 정보를 가져옵니다.

  • 사용 시기: 사용자가 ID로 식별된 특정 경로에 대한 세부 정보를 요청할 때.

  • 매개변수:

    • routeId (필수):

      • 유형: number

      • 설명: 경로의 고유 식별자입니다.

  • 출력: 경로 세부 정보(이름, ID, 유형, 거리, 고도, 예상 시간, 설명, 구간 수)가 포함된 형식화된 텍스트 문자열입니다.

  • 오류: 토큰이 없거나 잘못됨, routeId 잘못됨, Strava API 오류.


export-route-gpx

특정 경로를 GPX 형식으로 내보내고 로컬에 저장합니다.

  • 사용 시기: 사용자가 특정 경로를 GPX 파일로 내보내거나 저장하도록 명시적으로 요청할 때.

  • 필수 조건: ROUTE_EXPORT_PATH 환경 변수가 서버에서 올바르게 구성되어야 합니다.

  • 매개변수:

    • routeId (필수):

      • 유형: number

      • 설명: 경로의 고유 식별자입니다.

  • 출력: 저장 위치를 나타내는 성공 메시지 또는 오류 메시지.

  • 오류: 토큰이 없거나 잘못됨, ROUTE_EXPORT_PATH 없거나 잘못됨, 파일 시스템 오류(권한, 디스크 공간), routeId 잘못됨, Strava API 오류.


export-route-tcx

특정 경로를 TCX 형식으로 내보내고 로컬에 저장합니다.

  • 사용 시기: 사용자가 특정 경로를 TCX 파일로 내보내거나 저장하도록 명시적으로 요청할 때.

  • 필수 조건: ROUTE_EXPORT_PATH 환경 변수가 서버에서 올바르게 구성되어야 합니다.

  • 매개변수:

    • routeId (필수):

      • 유형: number

      • 설명: 경로의 고유 식별자입니다.

  • 출력: 저장 위치를 나타내는 성공 메시지 또는 오류 메시지.

  • 오류: 토큰이 없거나 잘못됨, ROUTE_EXPORT_PATH 없거나 잘못됨, 파일 시스템 오류(권한, 디스크 공간), routeId 잘못됨, Strava API 오류.


get-activity-streams

Strava 활동에서 자세한 시계열 데이터 스트림을 검색하여 운동 지표 분석, 경로 시각화 또는 자세한 활동 분석을 수행하는 데 적합합니다.

  • 사용 시기: 활동에 대한 자세한 시계열 데이터가 필요한 경우:

    • 심박수 구간을 통한 운동 강도 분석

    • 자전거 활동에 대한 전력 지표 계산

    • GPS 좌표를 사용하여 경로 데이터 시각화

    • 속도 및 고도 변화 분석

    • 세부적인 세그먼트 분석

  • 매개변수:

    • id (필수):

      • 유형: number | string

      • 설명: 스트림을 가져오기 위한 Strava 활동 식별자

    • types (선택 사항):

      • 유형: array

      • 기본값: ['time', 'distance', 'heartrate', 'cadence', 'watts']

      • 사용 가능한 유형:

        • time : 시작부터의 시간(초)

        • distance : 시작 지점으로부터의 거리(미터)

        • latlng : [위도, 경도] 쌍의 배열

        • altitude : 미터 단위의 고도

        • velocity_smooth : 미터/초 단위의 부드러운 속도

        • heartrate : 분당 심박수

        • cadence : 분당 회전 수의 케이던스

        • watts : 와트 단위의 전력 출력

        • temp : 섭씨 온도

        • moving : 이동 여부를 나타내는 부울 값

        • grade_smooth : 도로 등급(백분율)

    • resolution (선택 사항):

      • 유형: string

      • 값: 'low' (~100점), 'medium' (~1000점), 'high' (~10000점)

      • 설명: 데이터 해상도/밀도

    • series_type (선택 사항):

      • 유형: string

      • 값: 'time' 또는 'distance'

      • 기본값: 'distance'

      • 설명: 데이터 포인트 인덱싱을 위한 기본 시리즈 유형

    • page (선택 사항):

      • 유형: number

      • 기본값: 1

      • 설명: 페이지 번호가 매겨진 결과의 페이지 번호

    • points_per_page (선택 사항):

      • 유형: number

      • 기본값: 100

      • 특수 값: -1 모든 데이터 포인트를 여러 메시지로 분할하여 반환합니다.

      • 설명: 페이지당 데이터 포인트 수

  • 출력 형식:

    1. 메타데이터:

      • 사용 가능한 스트림 유형

      • 총 데이터 포인트

      • 해상도 및 시리즈 유형

      • 페이지 정보(현재 페이지, 총 페이지)

    2. 통계(해당되는 경우):

      • 심박수: 최대, 최소, 평균

      • 전력: 최대, 평균, 정규화된 전력

      • 속도: 최대 및 평균(km/h)

    3. 스트림 데이터:

      • 요청된 각 스트림에 대한 형식화된 시계열 데이터

      • 사람이 읽을 수 있는 형식(예: 형식화된 시간, 속도의 경우 km/h)

      • 일관된 숫자 정밀도

      • 레이블이 지정된 데이터 포인트

  • 요청 예시:

    {
      "id": 12345678,
      "types": ["time", "heartrate", "watts", "velocity_smooth", "cadence"],
      "resolution": "high",
      "points_per_page": 100,
      "page": 1
    }
  • 특별 기능:

    • 대용량 데이터 세트를 위한 스마트 페이지 매김

    • 전체 데이터 검색 모드(points_per_page = -1)

    • 풍부한 통계 및 메타데이터

    • 인간과 LLM 소비 모두를 위한 포맷된 출력

    • 자동 단위 변환

  • 참고사항:

    • 활동이 필요합니다: 읽기 범위

    • 모든 스트림을 모든 활동에 사용할 수 있는 것은 아닙니다.

    • 이전 활동의 경우 데이터가 제한될 수 있습니다.

    • 대규모 활동은 자동으로 페이지가 매겨집니다.

    • 스트림 가용성은 녹화 장치 및 활동 유형에 따라 달라집니다.

  • 오류:

    • 누락/잘못된 토큰

    • 잘못된 활동 ID

    • 권한이 부족합니다

    • 사용할 수 없는 스트림 유형

    • 잘못된 페이지 매김 매개변수


get-activity-laps

특정 Strava 활동에 대해 기록된 랩을 검색합니다.

  • 사용 시기:

    • 활동의 여러 세그먼트(랩)에 따른 성능 변화를 분석합니다.

    • 랩 타임, 속도, 심박수 또는 전력 출력을 비교합니다.

    • 활동이 어떻게 구성되었는지 이해합니다(예: 간헐적 훈련).

  • 매개변수:

    • id (필수):

      • 유형: number | string

      • 설명: Strava 활동의 고유 식별자입니다.

  • 출력 형식: 각 랩을 자세히 설명하는 텍스트 요약(다음 포함):

    • 랩 인덱스

    • 랩 이름(가능한 경우)

    • 경과 시간(HH:MM:SS 형식)

    • 이동 시간(HH:MM:SS 형식)

    • 거리(km)

    • 평균 속도(km/h)

    • 최대 속도(km/h)

    • 총 고도 상승(미터)

    • 평균 심박수(사용 가능한 경우, bpm)

    • 최대 심박수(사용 가능한 경우, bpm)

    • 평균 케이던스(가능한 경우, rpm)

    • 평균 와트(가능한 경우, W)

  • 요청 예시:

    {
      "id": 1234567890
    }
  • 응답 스니펫 예:

    Activity Laps Summary (ID: 1234567890):
    
    Lap 1: Warmup Lap
      Time: 15:02 (Moving: 14:35)
      Distance: 5.01 km
      Avg Speed: 20.82 km/h
      Max Speed: 35.50 km/h
      Elevation Gain: 50.2 m
      Avg HR: 135.5 bpm
      Max HR: 150 bpm
      Avg Cadence: 85.0 rpm
    
    Lap 2: Interval 1
      Time: 05:15 (Moving: 05:10)
      Distance: 2.50 km
      Avg Speed: 29.03 km/h
      Max Speed: 42.10 km/h
      Elevation Gain: 10.1 m
      Avg HR: 168.2 bpm
      Max HR: 175 bpm
      Avg Cadence: 92.1 rpm
      Avg Power: 280.5 W (Sensor)
    
    ...
  • 참고사항:

    • 공개/팔로워 활동에는 activity:read 범위가 필요하고, 비공개 활동에는 activity:read_all 필요합니다.

    • 랩 데이터의 가용성은 기록 장치와 활동 유형에 따라 달라집니다(예: 수동 활동에는 랩이 없을 수 있음).

  • 오류:

    • 누락/잘못된 토큰

    • 잘못된 활동 ID

    • 권한이 부족합니다

    • 활동을 찾을 수 없습니다


get-athlete-zones

인증된 운동선수의 설정된 심박수와 파워 존을 검색합니다.

  • 사용 시기: 사용자가 심박수 구역, 파워 구역 또는 트레이닝 구역 설정에 대해 질문할 때.

  • 매개변수: 없음

  • 출력 형식: 두 개의 텍스트 블록을 반환합니다.

    1. 구성된 영역을 자세히 설명하는 형식화된 요약 :

      • 심박수 구역: 사용자 지정 상태, 구역 범위, 시간 분포(사용 가능한 경우)

      • 파워 존: 존 범위, 시간 분포(가능한 경우)

    2. Strava API에서 반환된 전체 원시 JSON 데이터입니다 .

  • 응답 스니펫 예시(요약):

    **Athlete Zones:**
    
    ❤️ **Heart Rate Zones**
       Custom Zones: No
       Zone 1: 0 - 115 bpm
       Zone 2: 115 - 145 bpm
       Zone 3: 145 - 165 bpm
       Zone 4: 165 - 180 bpm
       Zone 5: 180+ bpm
    
    ⚡ **Power Zones**
       Zone 1: 0 - 150 W
       Zone 2: 151 - 210 W
       Zone 3: 211 - 250 W
       Zone 4: 251 - 300 W
       Zone 5: 301 - 350 W
       Zone 6: 351 - 420 W
       Zone 7: 421+ W
       Time Distribution:
         - 0-50: 0:24:58
         - 50-100: 0:01:02
         ...
         - 450-∞: 0:05:43
  • 참고사항:

    • profile:read_all 범위가 필요합니다.

    • 모든 운동선수에게 맞게 구역이 구성되지 않을 수도 있습니다.

  • 오류:

    • 누락/잘못된 토큰

    • 권한이 부족합니다( profile:read_all 범위 - 403 오류)

    • 구독 필요(Strava가 API 액세스를 변경하는 경우 가능)


기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요. (MIT 라이선스를 기준으로 하며, 다른 경우 수정해 주세요.)

Available Tools

24 tools
check-strava-connectionA

Check if Strava is connected and show the current connection status. Use this when the user asks about their connection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. The term 'check' and 'show' imply a non-mutating, read-only operation, which is sufficient for a simple status check. It does not explicitly state that no changes are made, but the nature of the action and the lack of parameters make this transparent enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and front-loaded with the primary purpose. Every word earns its place, with no repetition or fluff, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description is complete. It clearly states what the tool does and when to use it, and the sibling context shows how it fits into the connection management workflow. There is no missing information that would hinder an agent from invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The empty input schema requires no additional explanation, and the description appropriately does not attempt to document parameters that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks and shows Strava connection status, using the specific verb 'check' and resource 'connection status'. This distinguishes it from sibling tools like connect-strava and disconnect-strava, which manage the connection, and data-fetching tools that retrieve stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when the user asks about their connection status,' providing clear guidance on when to invoke the tool. It does not explicitly mention when not to use it or compare to alternatives, but the context is strong enough for an agent to differentiate it from connect/disconnect tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect-stravaA

Connect your Strava account to enable activity tracking. This will open a browser window for secure authentication. Use this when the user asks to connect, link, or authenticate their Strava account.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce re-authentication even if already connected

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full transparency burden. It discloses that authentication opens a browser window, which is helpful, but it does not explain what happens if the account is already connected, whether the 'force' option is necessary, or any side effects beyond the authentication flow. For a mutation-like action, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and followed by the usage condition. Every word serves a purpose, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple OAuth connect tool with one optional parameter and no output schema, the description covers the core action and when to use it. However, it omits details about what happens after connection, such as success/failure indication or behavior when already authenticated, which is useful context for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'force' parameter with a clear description ('Force re-authentication even if already connected'). The description adds no further parameter semantics, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Connect your Strava account to enable activity tracking.' This specifies the verb and resource, and it naturally distinguishes from sibling tools like 'disconnect-strava' and 'check-strava-connection'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'Use this when the user asks to connect, link, or authenticate their Strava account.' This gives clear context for when to invoke the tool, though it does not discuss exclusions or alternatives, which is acceptable given the tool's distinct purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disconnect-stravaA

Disconnect your Strava account and remove stored credentials. Use this when the user wants to logout, disconnect, or remove their Strava connection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It explicitly discloses the key side effect: 'remove stored credentials.' This goes beyond the name and informs the agent of the security-relevant action. It doesn't detail irreversibility or effects on other services, but for a zero-parameter tool this is adequate and notably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: the first states the action, the second states when to use it. Front-loaded and free of filler. Excellent structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple action tool with no parameters and no output schema, the description is complete: it covers what, why, when, and the side effect. Sibling tools help disambiguate, and the description is self-sufficient. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific information because none is needed. It appropriately focuses on the action and usage context, which is all that matters here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Disconnect') and identifies the resource ('your Strava account') plus additional detail ('remove stored credentials'). It clearly distinguishes this tool from siblings like connect-strava and check-strava-connection, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Use this when the user wants to logout, disconnect, or remove their Strava connection.' This clearly states the intended use case. However, it lacks explicit 'when not to use' or alternative tool references, so it falls slightly short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explore-segmentsC

Searches for popular segments within a given geographical area.

ParametersJSON Schema
NameRequiredDescriptionDefault
boundsYesThe geographical area to search, specified as a comma-separated string: south_west_lat,south_west_lng,north_east_lat,north_east_lng
activityTypeNoFilter segments by activity type (optional: 'running' or 'riding').
minCatNoFilter by minimum climb category (optional, 0-5). Requires riding activityType.
maxCatNoFilter by maximum climb category (optional, 0-5). Requires riding activityType.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions searching for 'popular segments' but doesn't specify what makes a segment 'popular' (e.g., based on usage, ratings, or other metrics), nor does it describe the return format, pagination, or any rate limits or authentication requirements. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded with the main action and resource, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a search tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., how popularity is determined, result format), usage context, and differentiation from siblings. This makes it inadequate for an AI agent to fully understand when and how to invoke the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, meaning all parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond implying a geographical search, which is already covered by the 'bounds' parameter description. Thus, it meets the baseline score of 3 without adding extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('searches') and resource ('popular segments'), and specifies the geographical scope. However, it doesn't differentiate from sibling tools like 'list-starred-segments' or 'get-segment', which might also retrieve segments but with different criteria or scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list-starred-segments' or 'get-segment', nor does it mention prerequisites such as requiring a connected Strava account. It only states what the tool does without contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export-route-gpxA

Exports a specific Strava route in GPX format and saves it to a pre-configured local directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe ID of the Strava route to export.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavior. It does disclose a key side effect: 'saves it to a pre-configured local directory,' which is important for an agent to know. However, it does not mention authentication requirements, error handling, file naming, or whether the operation overwrites existing files. This is adequate but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise, front-loaded with the action, and contains no redundant information. Every phrase earns its place: specifies the export format, the resource, and the destination.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one required parameter and no output schema, the description covers the essential context: what it exports, in what format, and where it saves. It lacks information about return values (e.g., success message) and potential failure modes, but given the simple nature of the tool and the rich schema, the description is sufficiently complete. A score of 4 reflects that it could add a note about output or prerequisites but is otherwise adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameter semantics: routeId is described as 'The ID of the Strava route to export.' The description adds no additional parameter-level detail beyond the schema, but it reinforces the meaning by referring to 'a specific Strava route.' Per calibration, with schema coverage at 100%, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Exports a specific Strava route in GPX format and saves it to a pre-configured local directory.' It specifies the verb (exports), resource (specific Strava route), output format (GPX), and side effect (saving to a local directory). This distinguishes it from sibling tools like export-route-tcx (different format) and get-route (retrieval without file output).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when a GPX export of a route is needed) but does not explicitly provide usage exclusions or name alternatives. Since sibling tools exist (e.g., export-route-tcx for TCX format), the description could have stated 'use this for GPX, export-route-tcx for TCX' to improve guidance. The context is clear but lacks explicit alternative comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export-route-tcxA

Exports a specific Strava route in TCX format and saves it to a pre-configured local directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe ID of the Strava route to export.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses a key behavioral trait—saving to a pre-configured local directory—which implies a mutating side effect. However, it omits other useful behavioral context such as overwrite behavior, authentication requirements, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence that conveys the core purpose, format, and destination with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description covers the essential elements: what is exported, the format, and the destination. It lacks minor details like return value or prerequisites, but given the absence of annotations and output schema, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter routeId with a clear description. The tool description adds no additional meaning beyond what the schema states, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Exports... in TCX format'), the specific resource ('a specific Strava route'), and a unique side effect ('saves it to a pre-configured local directory'). It distinguishes the tool from the sibling export-route-gpx by format (TCX vs GPX).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for exporting a route in TCX format, but it does not explicitly mention when to use this over export-route-gpx or other route tools. No exclusions or alternative comparisons are provided, leaving usage guidance only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-activity-detailsC

Fetches detailed information about a specific activity using its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
activityIdYesThe unique identifier of the activity to fetch details for.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it 'fetches detailed information' without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, what permissions are needed, rate limits, error conditions, or what format/details are returned. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the core functionality without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what 'detailed information' includes, the response format, or any behavioral aspects. For a tool in a complex domain (Strava activities) with many sibling tools, more context is needed to understand its specific role and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% with the single parameter 'activityId' well-documented in the schema. The description adds no additional parameter semantics beyond implying the ID is used to fetch details. Since the schema does the heavy lifting, the baseline score of 3 is appropriate even though the description doesn't enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'fetches' and resource 'detailed information about a specific activity', making the purpose understandable. It distinguishes from siblings like 'get-all-activities' by specifying 'specific activity using its ID', but doesn't explicitly contrast with similar tools like 'get-activity-laps' or 'get-activity-streams' that also fetch activity-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to siblings like 'get-all-activities' for listing activities or 'get-activity-streams' for different types of activity data. There's no context about prerequisites, timing, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-activity-lapsA

Retrieves detailed lap data for a specific Strava activity.

Use Cases:

  • Get complete lap data including timestamps, speeds, and metrics

  • Access raw values for detailed analysis or visualization

  • Extract specific lap metrics for comparison or tracking

Parameters:

  • id (required): The unique identifier of the Strava activity.

Output Format: Returns both a human-readable summary and complete JSON data for each lap, including:

  1. A text summary with formatted metrics

  2. Raw lap data containing all fields from the Strava API:

    • Unique lap ID and indices

    • Timestamps (start_date, start_date_local)

    • Distance and timing metrics

    • Speed metrics (average and max)

    • Performance metrics (heart rate, cadence, power if available)

    • Elevation data

    • Resource state information

    • Activity and athlete references

Notes:

  • Requires activity:read scope for public/followers activities, activity:read_all for private activities

  • Returns complete data as received from Strava API without omissions

  • All numeric values are preserved in their original precision

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe identifier of the activity to fetch laps for.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing important behavioral traits: authentication requirements ('Requires activity:read scope...'), data completeness ('Returns complete data... without omissions'), and precision handling ('All numeric values are preserved...'). It doesn't mention rate limits or error conditions, keeping it from a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Excellent structure with clear sections (Description, Use Cases, Parameters, Output Format, Notes). Every sentence earns its place by adding specific value - no redundant information. The description is appropriately sized and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read operation with no output schema, the description provides exceptional completeness. It covers authentication requirements, data scope, output format details (both human-readable and JSON), and specific data fields returned. This gives the agent sufficient context to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single 'id' parameter adequately. The description adds minimal value beyond the schema by specifying it's for 'a specific Strava activity' and listing it in the Parameters section, but doesn't provide additional syntax or format details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Retrieves') and resource ('detailed lap data for a specific Strava activity'). It distinguishes from siblings like 'get-activity-details' by focusing exclusively on lap data rather than general activity information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use Cases' section provides clear context for when to use this tool (detailed lap analysis, visualization, comparison). However, it doesn't explicitly state when NOT to use it or name specific alternatives among sibling tools, though the focus on lap data implies differentiation from general activity tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-activity-photosA

Retrieves photos associated with a specific Strava activity.

Use Cases:

  • Fetch all photos uploaded to an activity

  • Get photo URLs for display or download

  • Access photo metadata including location and timestamps

Parameters:

  • id (required): The unique identifier of the Strava activity.

  • size (optional): Size of photos to return in pixels (e.g., 100, 600, 2048). If not specified, returns all available sizes.

Output Format: Returns both a human-readable summary and complete JSON data for each photo, including:

  1. A text summary with photo count and URLs

  2. Raw photo data containing all fields from the Strava API:

    • Photo ID and unique identifier

    • URLs for different sizes

    • Source (1 = Strava, 2 = Instagram)

    • Timestamps (uploaded_at, created_at)

    • Location coordinates if available

    • Caption if provided

Notes:

  • Requires activity:read scope for public/followers activities, activity:read_all for private activities

  • Photos may come from Strava uploads or linked Instagram posts

  • Returns empty array if activity has no photos

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe identifier of the activity to fetch photos for.
sizeNoOptional photo size in pixels (e.g., 100, 600, 2048).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses scope requirements (activity:read vs activity:read_all), the possibility of Instagram-sourced photos, and the empty-array behavior. It also explains the size parameter's default behavior, providing thorough transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections. It could be slightly tighter in the output-format section, but every part serves a purpose and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no annotations and no output schema, the description is exceptionally complete. It covers purpose, parameters, output structure, auth scopes, and edge cases, leaving no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers both parameters, but the description adds value with size examples and the behavior when size is omitted (returns all sizes). This enhances understanding beyond the schema's bare definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Retrieves photos associated with a specific Strava activity.' This clearly distinguishes it from sibling tools like get-activity-details or get-activity-streams, which handle other types of activity data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use cases explicitly state when to use the tool: fetching photos, getting URLs, and accessing metadata. While it doesn't name alternative tools, the context makes the appropriate scenario clear. A slight improvement would be explicitly contrasting with other activity-data tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-activity-streamsA

Retrieves detailed time-series data streams from a Strava activity. Perfect for analyzing workout metrics, visualizing routes, or performing detailed activity analysis.

Key Features:

  1. Multiple Data Types: Access various metrics like heart rate, power, speed, GPS coordinates, etc.

  2. Flexible Resolution: Choose data density from low (~100 points) to high (~10000 points)

  3. Smart Pagination: Get data in manageable chunks optimized for LLM context limits

  4. Rich Statistics: Includes min/max/avg for numeric streams

  5. Dual Format Support: Compact (LLM-optimized) or verbose (human-readable)

  6. Intelligent Downsampling: Automatically reduce large datasets while preserving key features

Format Options:

  • compact (default): Raw arrays, minified JSON, ~70-80% smaller payloads, ideal for LLM processing

  • verbose: Human-readable objects with formatted values, backward compatible with legacy format

Common Use Cases:

  • Analyzing workout intensity through heart rate zones

  • Calculating power metrics for cycling activities

  • Visualizing route data using GPS coordinates

  • Analyzing pace and elevation changes

  • Detailed segment analysis

Output Format:

  1. Metadata: Activity overview, available streams, data points, units, format info

  2. Statistics: Summary stats for each stream type (max/min/avg where applicable)

  3. Data: Time-series data in compact arrays or verbose objects (based on format parameter)

Notes:

  • Requires activity:read scope

  • Not all streams are available for all activities

  • Older activities might have limited data

  • Large activities are automatically chunked to ~50KB per message

  • Use max_points parameter to downsample very large activities intelligently

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Strava activity identifier to fetch streams for. This can be obtained from activity URLs or the get-activities tool.
typesNoArray of stream types to fetch. Available types: - time: Time in seconds from start - distance: Distance in meters from start - latlng: Array of [latitude, longitude] pairs - altitude: Elevation in meters - velocity_smooth: Smoothed speed in meters/second - heartrate: Heart rate in beats per minute - cadence: Cadence in revolutions per minute - watts: Power output in watts - temp: Temperature in Celsius - moving: Boolean indicating if moving - grade_smooth: Road grade as percentage
resolutionNoOptional data resolution. Affects number of data points returned: - low: ~100 points - medium: ~1000 points - high: ~10000 points Default varies based on activity length.
series_typeNoOptional base series type for the streams: - time: Data points are indexed by time (seconds from start) - distance: Data points are indexed by distance (meters from start) Useful for comparing different activities or analyzing specific segments.distance
pageNoOptional page number for paginated results. Use with points_per_page to retrieve specific data ranges. Example: page=2 with points_per_page=100 gets points 101-200.
points_per_pageNoOptional number of data points per page. Special values: - Positive number: Returns that many points per page - -1: Returns ALL data points split into multiple messages (~1000 points each) Use -1 when you need the complete activity data for analysis.
formatNoOutput format: - compact: Raw arrays, minified JSON (~70-80% smaller, LLM-friendly) - verbose: Human-readable objects with formatted values (backward compatible)compact
max_pointsNoMaximum number of data points to return. If activity exceeds this, data will be intelligently downsampled while preserving peaks and valleys. Useful for very large activities.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and excels by disclosing key behavioral traits: it requires 'activity:read scope', notes 'not all streams are available for all activities', warns 'older activities might have limited data', explains 'large activities are automatically chunked to ~50KB per message', and describes intelligent downsampling for large datasets. This covers permissions, data availability, limitations, and performance considerations thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections like 'Key Features', 'Format Options', 'Common Use Cases', 'Output Format', and 'Notes', making it easy to scan. However, it is lengthy with multiple bullet points and detailed explanations, which, while informative, could be more concise. Every sentence adds value, but some redundancy exists (e.g., repeating format details).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 8 parameters, no annotations, and no output schema, the description is highly complete. It covers purpose, usage, behavioral traits, parameter semantics, output format details, and limitations. The 'Output Format' section compensates for the lack of output schema by describing metadata, statistics, and data structure, making it sufficient for an agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining parameter implications beyond the schema: it details how 'resolution' affects data points (~100 to ~10000), describes 'smart pagination' for 'page' and 'points_per_page', explains 'intelligent downsampling' for 'max_points', and elaborates on 'format' options (compact vs verbose) with payload size impacts. This enhances understanding but doesn't fully cover all 8 parameters in depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'retrieves detailed time-series data streams from a Strava activity' with specific verbs ('retrieves', 'analyzing', 'visualizing') and resources ('Strava activity', 'workout metrics', 'routes'). It distinguishes from siblings like get-activity-details (which likely provides summary info) and get-activity-laps (which focuses on lap segments) by emphasizing time-series data streams for analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Perfect for analyzing workout metrics, visualizing routes, or performing detailed activity analysis' and lists common use cases like analyzing heart rate zones, calculating power metrics, and visualizing GPS coordinates. It distinguishes from siblings by focusing on time-series data streams rather than summary details, photos, or segments.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-all-activitiesA

Fetches complete activity history with optional filtering by date range and activity type. Supports pagination to retrieve all activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateNoISO date string for activities after this date (e.g., '2024-01-01')
endDateNoISO date string for activities before this date (e.g., '2024-12-31')
activityTypesNoArray of activity types to filter (e.g., ['Run', 'Ride'])
sportTypesNoArray of sport types for granular filtering (e.g., ['MountainBikeRide', 'TrailRun'])
maxActivitiesNoMaximum activities to return after filtering (default: 500)
maxApiCallsNoMaximum API calls to prevent quota exhaustion (default: 10 = ~2000 activities)
perPageNoActivities per API call (default: 200, max: 200)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses pagination support and filtering capabilities, which is helpful. However, it doesn't mention authentication requirements, rate limits, error conditions, or what 'complete activity history' entails (e.g., all-time vs. limited period). The behavioral context is partially covered but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states core functionality, the second adds important behavioral detail about pagination. Every word earns its place with zero redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no annotations and no output schema, the description provides basic functional context but lacks details about authentication, error handling, return format, or performance characteristics. It's minimally adequate given the schema handles parameter documentation, but more behavioral context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds minimal value beyond the schema by mentioning 'optional filtering by date range and activity type' and 'pagination', but doesn't provide additional semantic context about parameter interactions or usage patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'fetches complete activity history' with filtering capabilities, providing a specific verb ('fetches') and resource ('activity history'). It distinguishes from sibling tools like 'get-recent-activities' by emphasizing 'complete' history, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving comprehensive activity data with filtering, but doesn't explicitly state when to use this versus alternatives like 'get-recent-activities' or 'get-activity-details'. No guidance on prerequisites, exclusions, or specific scenarios is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-athlete-profileA

Fetches the profile information for the authenticated athlete, including their unique numeric ID needed for other tools like get-athlete-stats.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly uses 'Fetches' to imply a read-only operation and notes that it returns an ID, but it does not disclose details such as authentication scope, rate limits, or the exact set of profile fields returned. This is adequate for a simple no-parameter read tool but falls short of rich transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and resource, immediately states the output's key value, and includes a concrete example of downstream usage. Every word contributes, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no parameters and no output schema, the description is reasonably complete: it names the resource, identifies the primary output (numeric ID), and provides a usage link to other tools. However, it does not enumerate the full profile fields or specify any error conditions, so it stops short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is empty and no parameter documentation is required. The description adds meaningful context about the output (the numeric ID), which is more than the schema provides. Baseline for zero-parameter tools is 4, and this description meets that bar.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Fetches') and resource ('profile information for the authenticated athlete'). It also explicitly distinguishes the tool by highlighting the unique numeric ID that other tools (e.g., get-athlete-stats) depend on, which sets it apart from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by stating the profile ID is needed for other tools like get-athlete-stats, implying this should be called first to obtain that ID. It does not explicitly mention when not to use it or list alternatives, but the guidance is practical and unambiguous for its intended role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-athlete-statsA

Fetches the activity statistics (recent, YTD, all-time) for a specific athlete using their ID. Requires the athleteId obtained from the get-athlete-profile tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
athleteIdYesThe unique identifier of the athlete to fetch stats for. Obtain this ID first by calling the get-athlete-profile tool.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the prerequisite (athleteId requirement) which is useful context, but doesn't disclose other behavioral traits like rate limits, authentication needs, error conditions, or what the output format looks like (since no output schema exists).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence states purpose and scope, the second provides critical prerequisite information. Every word earns its place and the description is appropriately sized for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with 100% schema coverage but no annotations and no output schema, the description provides adequate purpose and usage guidance. However, it lacks information about return values (what the stats actually contain) and other behavioral context that would be helpful given the absence of structured output documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter. The description adds value by explaining where to obtain the athleteId ('from the get-athlete-profile tool'), which provides practical guidance beyond the schema's technical specification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('fetches') and resource ('activity statistics for a specific athlete'), specifying the types of statistics (recent, YTD, all-time). It distinguishes from siblings like 'get-athlete-profile' by focusing on stats rather than profile data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('for a specific athlete using their ID') and provides a prerequisite ('Requires the athleteId obtained from the get-athlete-profile tool'), clearly differentiating it from alternatives that don't require this ID or fetch different data types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-athlete-zonesA

Retrieves the authenticated athlete's configured heart rate and power zones.

Output includes both a formatted summary and the raw JSON data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although no annotations exist, the description adds useful context by specifying that output includes both a formatted summary and raw JSON, and it implies authentication scope with 'authenticated athlete.' However, it does not explicitly confirm read-only semantics or discuss any caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences deliver purpose and output details with no irrelevant content. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read operation, the description covers what it does and what it returns. There is no output schema to elaborate, and the complexity is low, so this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the description does not need to explain any inputs. The baseline of 4 applies, and the description adds no param-specific details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (retrieves) and the resource (the athlete's configured heart rate and power zones). This distinguishes it from sibling tools like get-athlete-stats or get-athlete-profile, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided for when to use this tool instead of alternatives. The usage is implied by the clear purpose, but there are no exclusions or comparisons with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-recent-activitiesA

Fetches the most recent activities for the authenticated athlete.

ParametersJSON Schema
NameRequiredDescriptionDefault
perPageNoNumber of activities to retrieve (default: 30)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly indicates a read operation ('Fetches'), which implies non-destructive behavior, but it does not disclose pagination behavior, rate limits, or what 'most recent' means in terms of time range. The verb provides basic transparency but not rich details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler or redundancy. It is front-loaded with the verb and resource, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and no output schema, so the description is largely adequate. However, it does not clarify how this differs from the sibling tool get-all-activities, which could lead to incorrect selection. Additionally, no behavioral edge cases are mentioned, leaving some context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the sole parameter (perPage) with a description and default value, yielding 100% schema coverage. The tool description does not mention the parameter, but the schema already explains it, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Fetches' and a clear resource: 'most recent activities' for the authenticated athlete. The scope ('most recent') helps distinguish it from siblings like get-all-activities and get-activity-details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get-all-activities or get-activity-details. The description simply states what it does without giving context on when it is the preferred choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-routeA

Fetches detailed information about a specific route using its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe unique identifier of the route to fetch.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry behavioral information. 'Fetches' implies read-only, but the description does not mention authentication needs, error handling, or the exact nature of 'detailed information'. It adds minimal value beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that front-loads the verb and resource. Every word earns its place, with no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter fetch, the description covers the core purpose. However, without an output schema, 'detailed information' is vague about what exactly is returned. It also omits prerequisites or failure scenarios, leaving some gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a complete description of the only parameter (routeId) with pattern and explanation. The description's 'using its ID' simply restates the schema, adding no extra meaning. With 100% schema coverage, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'fetches' with a specific resource ('a specific route') and method ('using its ID'), clearly distinguishing it from listing, searching, or exporting sibling tools. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like find-nearby-routes or list-athlete-routes. There are no exclusions, alternatives, or context for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-segmentC

Fetches detailed information about a specific segment using its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentIdYesThe unique identifier of the segment to fetch.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'fetches detailed information' but doesn't specify what 'detailed' includes, whether it's a read-only operation, if it requires authentication, or any rate limits. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential error cases, or authentication requirements. For a tool in a context with many siblings and no structured output, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'segmentId' fully documented in the schema. The description adds no additional semantic context beyond implying it's used to fetch a segment, which aligns with the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('fetches') and resource ('detailed information about a specific segment'), making the purpose understandable. However, it doesn't distinguish this tool from similar siblings like 'get-segment-effort' or 'list-segment-efforts', which reduces its differentiation value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get-segment-effort' or 'list-segment-efforts'. It mentions using a segment ID but doesn't specify prerequisites, such as needing an authenticated connection or when this is the appropriate fetch method.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-segment-effortC

Fetches detailed information about a specific segment effort using its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
effortIdYesThe unique identifier of the segment effort to fetch.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it 'fetches' information, implying a read-only operation, but doesn't disclose behavioral traits such as authentication requirements, rate limits, error handling, or what 'detailed information' entails (e.g., fields returned, format). This leaves gaps for safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('fetches detailed information') without unnecessary words. Every part earns its place, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes (e.g., fields like time, distance, athlete details), which is critical for a tool with one parameter and no structured output documentation. This leaves significant gaps for an agent to understand the tool's behavior and results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'effortId' well-documented in the schema. The description adds minimal value beyond the schema by mentioning 'using its ID', which aligns with but doesn't expand on the schema's description. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('fetches detailed information') and resource ('about a specific segment effort using its ID'), which distinguishes it from siblings like 'list-segment-efforts' (plural listing) and 'get-segment' (segment vs. segment effort). However, it doesn't specify what 'detailed information' includes, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., needing an effort ID from 'list-segment-efforts'), contrast with 'get-segment' (which fetches segment metadata), or specify use cases like retrieving performance data for analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-server-versionA

Returns the Strava MCP server version and related metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It says 'Returns,' implying a safe read operation, but does not explicitly state non-mutating behavior, authentication needs, or side effects. For a simple version check this is adequate yet not highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with a clear verb and object, no filler. It is appropriately sized for a trivial utility tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and a simple informational purpose, the description fully covers the necessary context. There is no missing information that would hinder correct invocation or interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so no parameter details are needed. The 0-parameter baseline of 4 applies, since there is nothing for the description to add beyond what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Returns' and clearly identifies the resource (Strava MCP server version and related metadata). This distinguishes it from sibling tools that focus on athlete data, activities, and segments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you need server version info, but it does not explicitly state when to use this tool vs alternatives, nor does it mention any exclusions. Given no sibling provides this function, the lack of contrast is minor, but the guidance is still not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-athlete-clubsA

Lists the clubs the authenticated athlete is a member of.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the burden of behavioral disclosure. It conveys that the operation is a read (List) and scoped to the authenticated athlete, but it does not mention pagination, required OAuth scopes, rate limits, or response format. This is basic transparency but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loaded with the verb 'Lists', followed by the resource and scope. No wasted words, clear and directly to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool without an output schema, the description provides the essential information: what is listed and for whom. It could mention pagination or return type, but the simplicity of the tool makes the description adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so baseline for parameter semantics is 4. The description adds no parameter detail because there are none to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Lists), the resource (clubs), and the scope (the authenticated athlete's memberships). It is specific and distinguishes itself from sibling tools since no other club-related tool exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives or provide exclusions, but the usage is implied: it is the tool for retrieving the authenticated athlete's club memberships. No alternative club tool exists, so ambiguity is low, but explicit guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-athlete-routesA

Lists the routes created by the authenticated athlete, with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
perPageNoNumber of routes per page (max 50)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the read-only listing nature and pagination, but does not describe return format, ordering, or specific authentication needs beyond the phrase 'authenticated athlete'. This is acceptable for a low-risk list operation, but some behavioral details are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence, front-loaded with the core purpose and including the key pagination detail. No wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two optional parameters and no output schema, the description provides sufficient context: it states what is listed, ownership, and pagination. It does not specify the response shape, but that is less critical for a standard list endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'page' and 'perPage' have descriptions with defaults, ranges, and meanings. The tool description adds no additional parameter context beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'lists' and the resource 'routes', with scope 'created by the authenticated athlete'. This distinguishes it from siblings like 'get-route' (likely a single route) and 'list-athlete-clubs' (a different resource), making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving the authenticated athlete's routes, and the pagination mention indicates how to handle large result sets. It does not explicitly name alternatives or exclusion conditions, but the context is clear enough for a simple listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-segment-effortsA

Lists the authenticated athlete's efforts on a specific segment, optionally filtering by date.

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentIdYesThe ID of the segment for which to list efforts.
startDateLocalNoFilter efforts starting after this ISO 8601 date-time (optional).
endDateLocalNoFilter efforts ending before this ISO 8601 date-time (optional).
perPageNoNumber of efforts to return per page (default: 30, max: 200).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Lists' and 'filtering by date', but does not describe pagination behavior (implied by 'perPage' in schema but not explained), authentication requirements, rate limits, or what the output looks like. For a tool with no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Lists the authenticated athlete's efforts on a specific segment') and adds optional filtering information. Every word earns its place with zero waste, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with 100% schema coverage but no annotations and no output schema, the description is adequate for a read-only list tool but incomplete. It covers the purpose and basic filtering, but lacks details on authentication, pagination behavior, error handling, or return format, which are important for a tool with no structured output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by implying date filtering, but does not provide additional semantics or usage context for parameters. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Lists'), the resource ('the authenticated athlete's efforts on a specific segment'), and includes optional filtering by date. It distinguishes this tool from siblings like 'get-segment-effort' (singular) and 'get-all-activities' (broader scope), making the purpose precise and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing efforts on a segment with optional date filtering, but does not explicitly state when to use this tool versus alternatives like 'get-all-activities' or 'get-segment-effort'. It provides some context (filtering by date) but lacks guidance on exclusions or specific scenarios where this tool is preferred over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-starred-segmentsA

Lists the segments starred by the authenticated athlete.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It indicates a read-only listing operation ('Lists') and ties data to the authenticated athlete, but does not disclose details about pagination, response format, or authorization requirements beyond the phrase 'authenticated athlete'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence with no extraneous words; front-loaded and easily scanned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, no-parameter listing tool, the description adequately conveys the tool's main purpose. However, since there is no output schema, a bit more detail about the return value (e.g., array of segment summaries) could enhance completeness, but it's not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% coverage, so the baseline is 4. The description need not explain parameters, and it doesn't add conflicting information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Lists' and clearly identifies the resource ('segments') and scope ('starred by the authenticated athlete'), making its purpose unambiguous and distinct from sibling tools like 'get-segment' or 'explore-segments'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing the authenticated athlete's starred segments but provides no explicit guidance on when to use this tool over alternatives or any exclusion criteria. The intended use case is clear from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

star-segmentA

Stars or unstars a specific segment for the authenticated athlete.

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentIdYesThe unique identifier of the segment to star or unstar.
starredYesSet to true to star the segment, false to unstar it.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full responsibility for behavioral disclosure. It reveals the mutation (star/unstar) but does not disclose potential side effects, idempotency, required auth scopes, or what happens if the segment is already starred/unstarred. The mention of 'authenticated athlete' hints at authorization but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence: 'Stars or unstars a specific segment for the authenticated athlete.' It front-loads the action and contains no superfluous words, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter boolean action, the description covers the core purpose. However, since there is no output schema and no annotations, the agent receives no information about return values, errors, or behavioral nuances. It is minimally complete but leaves gaps around expected outcomes and edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both segmentId and starred having clear descriptions. The tool description adds no extra meaning beyond what the schema already provides, so the baseline of 3 is appropriate. The schema sufficiently explains each parameter's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Stars or unstars a specific segment'. It specifies the resource (a specific segment) and the actor (the authenticated athlete). This distinguishes it from siblings like list-starred-segments, which lists segments rather than modifying their star status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conveys usage: use this to change the starred status of a segment. However, it does not explicitly mention alternatives or when not to use, such as using list-starred-segments to view stars or get-segment for details. No exclusions are stated, so it is minimally sufficient but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.1
    • Addedcheck-strava-connection
    • Addedconnect-strava
    • Addeddisconnect-strava
    • Changedget-activity-streams2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "default": "compact",
        +  "description": "Output format:\n- compact: Raw arrays, minified JSON (~70-80% smaller, LLM-friendly)\n- verbose: Human-readable objects with formatted values (backward compatible)",
        +  "enum": [
        +    "compact",
        +    "verbose"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / max_points
        Added value: +{
        +  "description": "Maximum number of data points to return. If activity exceeds this, data will be intelligently downsampled while preserving peaks and valleys. Useful for very large activities.",
        +  "type": "number"
        +}
    • Addedget-server-version
  2. 6 tool updatesv1.0.0
    • Addedget-activity-photos
    • Addedget-all-activities
    • Changedget-athlete-profile1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget-athlete-zones1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist-athlete-clubs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist-starred-segments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  3. 18 tool updates
    • First observedexplore-segments
    • First observedexport-route-gpx
    • First observedexport-route-tcx
    • First observedget-activity-details
    • First observedget-activity-laps
    • First observedget-activity-streams
    • First observedget-athlete-profile
    • First observedget-athlete-stats
    • First observedget-athlete-zones
    • First observedget-recent-activities
    • First observedget-route
    • First observedget-segment
    • First observedget-segment-effort
    • First observedlist-athlete-clubs
    • First observedlist-athlete-routes
    • First observedlist-segment-efforts
    • First observedlist-starred-segments
    • First observedstar-segment

TDQS

A3.5/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific Strava resources like activities, segments, routes, or athlete data, with clear boundaries. However, some overlap exists between get-all-activities and get-recent-activities, which could cause confusion about which to use for general activity retrieval, though descriptions help differentiate them by scope.

Naming Consistency4/5

Tool names follow a consistent verb-noun pattern with hyphens (e.g., get-activity-details, list-athlete-clubs), making them predictable and readable. Minor deviations include check-strava-connection and export-route-gpx, which slightly break the pattern but maintain overall coherence.

Tool Count3/5

With 24 tools, the count is borderline high for a Strava integration, potentially overwhelming for agents. While it covers many aspects of the Strava API, some tools like get-server-version or check-strava-connection might be considered non-essential, contributing to a slightly bloated set.

Completeness5/5

The tool set provides comprehensive coverage of the Strava domain, including athlete management, activities, segments, routes, and data export. It supports full CRUD-like operations (e.g., connect/disconnect, star/unstar, get/list) and handles key workflows like activity analysis and segment tracking without obvious gaps.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides language models with access to Strava API data, allowing them to query and analyze athlete activities from Strava.
    4
    24
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables language models to interact with Strava data, including activities, athlete statistics, routes, achievements, and social features.
    6
    MIT