Skip to main content
Glama
gcoombe
by gcoombe

Strava MCP Server

A Model Context Protocol (MCP) server for integrating with the Strava API. This server provides comprehensive access to all major Strava API endpoints including activities, athlete data, routes, segments, clubs, and gear.

Transport Modes

This server supports two transport modes per the MCP specification:

Mode

Command

Auth

Use Case

stdio

npm start

Environment tokens

Claude Desktop (single user)

HTTP

npm run start:http

OAuth + JWT

ChatGPT, REST clients (multi-user)

Related MCP server: Strava MCP Server

Features

Activity Management

  • Get athlete activities with filters (date range, pagination)

  • Get detailed activity information

  • Create, update, and delete activities

  • Access activity streams (GPS, heart rate, power, cadence, etc.)

  • Get activity comments and kudos

Athlete Data

  • Get authenticated athlete profile

  • Get athlete statistics and totals

  • Get athlete zones (heart rate and power)

Routes

  • Get athlete routes

  • Get detailed route information

Segments

  • Get starred segments

  • Get segment details

  • Get segment leaderboards with filters

  • Explore segments in geographic areas

Clubs & Social

  • Get athlete clubs

  • Get club details and members

  • Get club activities

Gear

  • Get detailed gear information

Prerequisites

  • Node.js 18+ (LTS recommended)

  • A Strava account

  • Strava API credentials (Client ID and Client Secret)

Installation

  1. Clone this repository:

git clone https://github.com/gcoombe/strava-mcp.git
cd strava-mcp
  1. Install dependencies:

npm install
  1. Copy the example environment file:

cp .env.example .env
  1. Build the project:

npm run build

Strava API Setup

1. Create a Strava Application

  1. Go to Strava API Settings

  2. Create a new application

  3. Fill in the required information:

    • Application Name: Your app name

    • Category: Choose appropriate category

    • Website: Can use http://localhost for testing

    • Authorization Callback Domain: Use localhost for local testing, or your domain for production

  4. Note your Client ID and Client Secret

  5. Add them to your .env file

2. Choose Your Transport Mode

stdio Mode (Claude Desktop)

For single-user use with Claude Desktop:

# Run the interactive setup to get your personal tokens
npm run setup

# Start the server
npm start

The setup script will guide you through the OAuth flow and save tokens to .env.

HTTP Mode (Multi-user)

For multi-user deployments (ChatGPT, REST clients):

# Add HTTP-specific variables to .env:
# OAUTH_CLIENT_ID=<generate with: openssl rand -hex 16>
# OAUTH_CLIENT_SECRET=<generate with: openssl rand -hex 16>
# JWT_SECRET=<generate with: openssl rand -base64 32>
# STRAVA_REDIRECT_URI=http://localhost:3000/auth/strava/callback

# Start the HTTP server
npm run start:http

Users authenticate via OAuth at /auth/authorize and receive a JWT for API access.

ChatGPT Configuration

To use with ChatGPT:

  1. Generate OAuth credentials for your .env:

    echo "OAUTH_CLIENT_ID=$(openssl rand -hex 16)"
    echo "OAUTH_CLIENT_SECRET=$(openssl rand -hex 16)"
  2. Expose your server via ngrok or deploy publicly:

    ngrok http 3000
  3. In ChatGPT, configure your MCP server with:

    • Server URL: https://your-ngrok-url.ngrok-free.dev

    • OAuth Client ID: Value from your .env

    • OAuth Client Secret: Value from your .env

ChatGPT will automatically discover the OAuth endpoints via /.well-known/oauth-authorization-server.

MCP Configuration (stdio Mode)

Claude Desktop

Add this to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "strava": {
      "command": "node",
      "args": [
        "/absolute/path/to/strava-mcp/dist/index.js"
      ]
    }
  }
}

HTTP API Reference

When running in HTTP mode (npm run start:http), the following endpoints are available:

OAuth 2.0 Endpoints

Endpoint

Method

Description

/.well-known/oauth-authorization-server

GET

OAuth server metadata (RFC 8414)

/auth/authorize

GET

OAuth authorization endpoint (redirects to Strava)

/auth/callback

GET

Internal OAuth callback from Strava

/auth/token

POST

Exchange authorization code for JWT

/auth/me

GET

Get current athlete info (requires JWT)

/auth/logout

POST

Revoke tokens (requires JWT)

Tools

Endpoint

Method

Auth

Description

/tools

GET

-

List all available tools

/tools/:name

GET

-

Get tool schema

/tools/:name

POST

JWT

Execute a tool

Example Usage

# Start the server
npm run start:http

# For ChatGPT: Configure with your server URL and OAuth credentials
# ChatGPT will handle the OAuth flow automatically

# For manual testing with curl:
# 1. List tools (no auth required)
curl http://localhost:3000/tools

# 2. After completing OAuth flow, use the JWT for API calls
TOKEN="your-jwt-token"

# Get athlete profile
curl -X POST http://localhost:3000/tools/get_athlete \
  -H "Authorization: Bearer $TOKEN"

# Get recent activities
curl -X POST http://localhost:3000/tools/get_activities \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"per_page": 10}'

Available Tools

Activities

  • get_activities - List athlete activities with filters

  • get_activity - Get detailed activity information

  • create_activity - Create a new manual activity

  • update_activity - Update an existing activity

  • delete_activity - Delete an activity

  • get_activity_streams - Get activity data streams

  • get_activity_comments - Get activity comments

  • get_activity_kudos - Get activity kudos

Athlete

  • get_athlete - Get authenticated athlete profile

  • get_athlete_stats - Get athlete statistics

  • get_athlete_zones - Get athlete training zones

Routes

  • get_routes - List athlete routes

  • get_route - Get route details

Segments

  • get_starred_segments - List starred segments

  • get_segment - Get segment details

  • get_segment_leaderboard - Get segment leaderboard

  • explore_segments - Explore segments in an area

Clubs

  • get_athlete_clubs - List athlete clubs

  • get_club - Get club details

  • get_club_members - Get club members

  • get_club_activities - Get club activities

Gear

  • get_gear - Get gear details

Environment Variables

Variable

Required

Mode

Description

STRAVA_CLIENT_ID

Yes

Both

Strava API client ID

STRAVA_CLIENT_SECRET

Yes

Both

Strava API client secret

STRAVA_ACCESS_TOKEN

Yes

stdio

User's access token

STRAVA_REFRESH_TOKEN

Yes

stdio

User's refresh token

STRAVA_EXPIRES_AT

Yes

stdio

Token expiration timestamp

OAUTH_CLIENT_ID

Yes

HTTP

OAuth client ID for ChatGPT (you create this)

OAUTH_CLIENT_SECRET

Yes

HTTP

OAuth client secret for ChatGPT (you create this)

JWT_SECRET

Yes

HTTP

Secret for signing JWTs

JWT_EXPIRES_IN

No

HTTP

JWT expiration (default: 7d)

STRAVA_REDIRECT_URI

Yes

HTTP

OAuth callback URL

DATABASE_PATH

No

HTTP

SQLite path (default: ./data/strava-mcp.db)

HTTP_PORT

No

HTTP

Server port (default: 3000)

Development

Scripts

  • npm run build - Build the TypeScript project

  • npm run dev - Watch mode for development

  • npm run lint - Lint the codebase

  • npm test - Run tests

  • npm start - Start MCP server (stdio mode)

  • npm run start:http - Start HTTP server

  • npm run setup - Interactive OAuth setup

Project Structure

strava-mcp/
├── src/
│   ├── index.ts              # Entry point (mode selection)
│   ├── auth.ts               # Strava OAuth handling
│   ├── strava-client.ts      # Strava API client
│   ├── http-server.ts        # Express HTTP server
│   ├── create-tools.ts       # Tool initialization
│   ├── db.ts                 # SQLite database (HTTP mode)
│   ├── auth/                 # HTTP auth module
│   │   ├── jwt.ts            # JWT utilities
│   │   ├── middleware.ts     # Auth middleware
│   │   └── routes.ts         # OAuth endpoints
│   ├── types/
│   │   └── strava.ts         # TypeScript definitions
│   ├── tools/                # MCP tool implementations
│   │   ├── activities.ts
│   │   ├── athlete.ts
│   │   ├── routes.ts
│   │   ├── segments.ts
│   │   ├── clubs.ts
│   │   └── gear.ts
│   └── utils/
│       └── data-reducer.ts   # Response optimization
├── data/                     # SQLite database (HTTP mode)
├── package.json
├── tsconfig.json
├── .env.example
└── README.md

Token Refresh

The server automatically refreshes access tokens when they expire:

  • stdio mode: Tokens are refreshed in memory

  • HTTP mode: Refreshed tokens are persisted to SQLite

Rate Limiting

Strava has rate limits:

  • 100 requests per 15 minutes

  • 1,000 requests per day

The server does not currently implement rate limiting, so use responsibly.

Troubleshooting

"No tokens available" error (stdio mode)

  • Ensure all STRAVA_* environment variables are set in .env

  • Run npm run setup to obtain new tokens

"JWT_SECRET required" error (HTTP mode)

  • Add JWT_SECRET to your .env file

  • Generate one with: openssl rand -base64 32

"No tokens found for user" error (HTTP mode)

  • User needs to re-authenticate at /auth/strava

  • Tokens may have been revoked by Strava

"Failed to refresh token" error

  • Your refresh token may have been revoked

  • Go through the OAuth flow again to get new tokens

Build errors

  • Ensure you're using Node.js 18+ LTS

  • Run npm install to ensure all dependencies are installed

License

MIT

Resources

Available Tools

22 tools
create_activityC

Create a new manual activity

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesActivity name
sport_typeYesSport type (e.g., Run, Ride, Swim)
start_date_localYesISO 8601 formatted date time
elapsed_timeYesActivity elapsed time in seconds
typeNoActivity type
descriptionNoActivity description
distanceNoActivity distance in meters
trainerNoWhether activity was on a trainer
commuteNoWhether activity was a commute

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 for behavioral disclosure. It states this is a creation operation, implying mutation, but doesn't address permissions needed, whether this creates permanent records, rate limits, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation coverage.

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 with zero wasted words. It's perfectly front-loaded and appropriately sized for a tool with comprehensive schema documentation.

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?

For a mutation tool with 9 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what a 'manual activity' means in this context, doesn't address behavioral aspects like permissions or side effects, and provides no guidance on usage versus siblings. The comprehensive schema helps but doesn't compensate for these gaps.

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%, so the schema already documents all 9 parameters thoroughly with descriptions and enums. The description adds no additional parameter information beyond what's in the schema, meeting the baseline expectation but not providing 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 action ('Create') and resource ('manual activity'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'update_activity' or explain what distinguishes a 'manual' activity from other types, which prevents a perfect score.

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 'update_activity' or 'get_activities'. It doesn't mention prerequisites, context for manual activities, or any exclusions, leaving the agent with minimal usage direction.

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

delete_activityC

Delete an activity

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID to delete

TDQS

C2.5/5.0
Behavior1/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. 'Delete an activity' implies a destructive, irreversible mutation, but it fails to disclose critical traits: whether deletion is permanent, what permissions or authentication are required, if there are rate limits, what happens to associated data (e.g., comments, kudos), or what the response looks like. For a destructive tool with zero annotation coverage, 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 extremely concise at three words, front-loaded with the core action ('Delete an activity'), and has no wasted sentences. It efficiently conveys the basic purpose without redundancy or fluff, 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 tool's complexity (a destructive mutation with no annotations and no output schema), the description is incomplete. It lacks necessary context: behavioral details like permanence or side effects, usage guidelines relative to siblings, and any output information. While the schema covers the single parameter, the overall description fails to provide enough information for safe and 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?

The input schema has 1 parameter with 100% description coverage ('Activity ID to delete'), so the schema fully documents the parameter. The description adds no meaning beyond this, as it doesn't explain the ID format, source, or constraints. With high schema coverage, the baseline is 3, and the description doesn't compensate or add value.

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

Purpose3/5

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

The description 'Delete an activity' clearly states the verb (delete) and resource (activity), making the basic purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'update_activity' or 'get_activity' beyond the obvious verb difference, nor does it specify what type of activity (e.g., Strava activity) or scope is involved. This is vague but not tautological.

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 prerequisites (e.g., needing an activity ID from 'get_activities'), exclusions (e.g., not for deleting comments), or comparisons to siblings like 'update_activity' for modifications. Usage is implied by the name alone, with no explicit context.

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

explore_segmentsC

Explore segments in a geographic area

ParametersJSON Schema
NameRequiredDescriptionDefault
boundsYesGeographic bounds [sw_lat, sw_lng, ne_lat, ne_lng]
activity_typeNoActivity type filter
min_catNoMinimum climb category
max_catNoMaximum climb category

TDQS

C2.6/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 but offers minimal behavioral insight. It mentions 'explore' but doesn't clarify if it's read-only, requires authentication, has rate limits, or what the output entails (e.g., list of segments). This leaves key operational traits undisclosed.

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 a single, straightforward sentence that efficiently conveys the core idea without fluff. It's front-loaded and appropriately sized for its purpose, though it could be more informative without sacrificing brevity.

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 lacks details on behavior, output format, and how it fits with siblings, making it inadequate for an agent to fully understand the tool's role and usage in context.

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 parameters are well-documented in the schema. The description adds no extra meaning beyond implying geographic filtering, which the schema already covers with 'bounds'. Thus, it meets the baseline but doesn't enhance understanding of parameter use or interactions.

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

Purpose3/5

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

The description states the action ('explore') and resource ('segments') with geographic context, which is clear but vague. It doesn't specify what 'explore' entails (e.g., list, search, or retrieve) or differentiate from sibling tools like 'get_segment' or 'get_segment_leaderboard', leaving ambiguity about its specific function.

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. With siblings like 'get_segment' (likely for single segments) and 'get_segment_leaderboard' (for rankings), the description lacks context on its role, such as for bulk retrieval or area-based queries, leaving agents without usage direction.

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

get_activitiesA

Get logged-in athlete activities with optional filters. Use minimal=true for large datasets to reduce context usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeNoUnix timestamp to retrieve activities before
afterNoUnix timestamp to retrieve activities after
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30, max: 200)
minimalNoReturn minimal activity data (strips social metrics, metadata) to reduce context usage

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 the full burden of behavioral disclosure. It adds value by mentioning the 'minimal' parameter's purpose to 'reduce context usage,' which hints at performance optimization. However, it lacks details on authentication needs, rate limits, pagination behavior (beyond schema defaults), or what 'activities' entail (e.g., types, fields). For a tool with no annotations, this is a moderate but insufficient disclosure.

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 highly concise and front-loaded, consisting of two sentences that directly address the tool's purpose and a key usage tip. Every sentence earns its place without redundancy or fluff, making it easy for an agent to parse 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?

Given 5 parameters with 100% schema coverage but no annotations and no output schema, the description is moderately complete. It covers the basic purpose and a performance tip, but for a data retrieval tool with multiple siblings, it lacks context on authentication, error handling, return format, or differentiation from alternatives. This leaves gaps in guiding the agent 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 all 5 parameters thoroughly. The description adds minimal value by briefly explaining the 'minimal' parameter's effect ('strips social metrics, metadata'), but this is redundant with the schema's description. No additional parameter semantics are provided beyond what the schema offers, meeting the baseline for high 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 tool's purpose: 'Get logged-in athlete activities with optional filters.' It specifies the verb ('Get'), resource ('logged-in athlete activities'), and scope ('with optional filters'). However, it doesn't explicitly differentiate from siblings like 'get_activity' (singular) or 'get_club_activities', leaving some ambiguity about when to use this versus those 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 provides some usage guidance by mentioning 'Use minimal=true for large datasets to reduce context usage,' which implies a performance consideration. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_activity' (for a single activity) or 'get_club_activities' (for club-specific activities). The guidance is helpful but incomplete for sibling differentiation.

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

get_activityB

Get detailed information about a specific activity by ID. Use minimal=true to reduce context usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID
include_all_effortsNoInclude all segment efforts (default: false)
minimalNoReturn minimal activity data (strips social metrics, metadata) to reduce context usage

TDQS

B3.3/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 that 'minimal=true' reduces context usage by stripping social metrics and metadata, which adds some behavioral context. However, it doesn't cover other critical aspects like rate limits, authentication needs, error handling, or what 'detailed information' includes (e.g., data format, pagination). For a read operation with no annotation coverage, this is insufficient.

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 highly concise and front-loaded: it states the core purpose in the first sentence and adds a practical tip in the second. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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 the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers the basic purpose and a key parameter tip, but lacks details on behavioral traits (e.g., auth, errors) and output format, which are important for a read tool. It's adequate as a minimum viable description but has clear gaps in context.

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 (id, include_all_efforts, minimal) with clear descriptions. The description adds minimal value by briefly mentioning 'minimal=true to reduce context usage,' which reinforces but doesn't significantly expand beyond the schema. This meets the baseline score when schema coverage is high.

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: 'Get detailed information about a specific activity by ID.' It specifies the verb ('Get'), resource ('activity'), and key constraint ('by ID'), making it easy to understand. However, it doesn't explicitly differentiate from siblings like 'get_activities' (which likely lists multiple activities) or 'get_activity_streams' (which might return different data types), so it doesn't reach the highest score.

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 provides some implied usage guidance by mentioning 'minimal=true to reduce context usage,' suggesting this parameter is useful for efficiency. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., 'get_activities' for lists or 'get_activity_streams' for specific data types) or any prerequisites, such as needing a valid activity ID. This leaves gaps in decision-making context.

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

get_activity_commentsC

Get comments for an activity

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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 but only states the basic action. It doesn't reveal whether this is a read-only operation (implied by 'Get'), if it requires authentication, has rate limits, returns paginated results (though parameters suggest it), or what the output format looks like. This leaves significant gaps for a tool with 3 parameters.

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 with zero wasted words. It's front-loaded with the core purpose ('Get comments for an activity'), making it immediately scannable and appropriately sized for the tool's complexity.

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 tool has 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain the behavioral context (e.g., pagination behavior implied by parameters), return values, or usage constraints, leaving the agent with inadequate information to use the tool effectively beyond basic parameter passing.

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 description mentions 'an activity' which aligns with the 'id' parameter (Activity ID), but adds no further semantic context beyond what the schema provides. Since schema description coverage is 100%, the baseline score is 3, as the schema adequately documents all parameters (id, page, per_page) with their purposes and defaults.

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 'Get comments for an activity' clearly states the verb ('Get') and resource ('comments for an activity'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_activity' or 'get_activity_kudos', which also retrieve activity-related data but for different resources.

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 prerequisites (e.g., needing an activity ID), exclusions, or comparisons with similar tools like 'get_activity' (which might include comments) or 'get_activity_streams' (which provides different activity data).

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

get_activity_kudosC

Get kudos for an activity

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

TDQS

C2.6/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. 'Get kudos' implies a read-only operation, but it doesn't specify whether authentication is required, if there are rate limits, what the return format is (e.g., list of users, counts), or if pagination is handled (though parameters suggest it). This leaves significant gaps for a tool with three parameters and no output schema.

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 a single, efficient sentence with no wasted words, making it appropriately concise. However, it's front-loaded with minimal information and lacks structure (e.g., no separation of purpose from details), which limits its effectiveness despite the brevity.

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 (3 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'kudos' are, how results are returned, or behavioral aspects like authentication needs. While the schema covers parameters, the overall context for an agent to use this tool effectively is lacking, especially compared to sibling tools that might offer overlapping functionality.

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 description adds no parameter semantics beyond what the input schema provides. The schema has 100% description coverage, clearly documenting 'id' as 'Activity ID' and pagination parameters with defaults. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but the description doesn't enhance understanding (e.g., explaining what 'kudos' entails or how pagination works in practice).

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

Purpose3/5

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

The description 'Get kudos for an activity' clearly states the verb ('Get') and resource ('kudos for an activity'), making the basic purpose understandable. However, it doesn't differentiate from sibling tools like 'get_activity_comments' or 'get_activity_streams' that also retrieve activity-related data, nor does it specify what 'kudos' represents (e.g., likes, appreciations). This makes it vague in context.

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 prerequisites (e.g., needing an activity ID), exclusions, or comparisons to similar tools like 'get_activity' (which might include kudos) or 'get_activities' (which lists activities). Without such context, an agent must infer usage from the tool name alone.

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

get_activity_streamsC

Get activity streams (GPS, heart rate, power, cadence, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID
keysNoStream types to retrieve (time, latlng, distance, altitude, heartrate, watts, cadence, etc.)
key_by_typeNoReturn streams keyed by type (default: true)

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 what the tool does but lacks behavioral details such as authentication requirements, rate limits, error conditions, or response format. The description doesn't contradict annotations (none exist), but it fails to disclose critical operational traits.

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 with zero wasted words. It front-loads the core purpose and includes helpful examples without redundancy. Every element earns its place.

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 for a tool with 3 parameters. It lacks details on return values, error handling, and behavioral constraints. While the schema covers inputs well, the overall context for safe and effective use is insufficient.

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%, providing clear documentation for all parameters (id, keys, key_by_type). The description adds minimal value beyond the schema by listing example stream types (e.g., heartrate, watts) but doesn't explain parameter interactions or usage nuances. Baseline 3 is appropriate given 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 ('Get') and resource ('activity streams') with specific examples of what streams contain (GPS, heart rate, power, cadence, etc.). It distinguishes from siblings like get_activity (which likely returns metadata) by focusing on stream data, 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 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 get_activity (for metadata) or get_activities (for lists). The description implies usage for retrieving sensor data streams but offers no explicit context, prerequisites, or exclusions.

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

get_athleteB

Get the authenticated athlete profile

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as authentication requirements (implied by 'authenticated'), rate limits, response format, or whether it's a read-only operation, which are critical for an agent to use it correctly.

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 purpose without any unnecessary words. It's front-loaded and wastes no space, making it easy for an agent 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 lacks details on what the profile includes, how authentication works, or error handling, which are essential for a tool that likely returns user-specific data in a complex API environment.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't add parameter details, aligning with the baseline for zero parameters, though it could hint at implicit context like authentication.

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 ('Get') and resource ('authenticated athlete profile'), making the purpose immediately understandable. It doesn't distinguish from siblings like 'get_athlete_stats' or 'get_athlete_zones', which would require more specificity about what aspect of the athlete is retrieved.

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. For example, it doesn't mention that this retrieves the current user's profile, unlike 'get_athlete_stats' for performance data or 'get_athlete_clubs' for club memberships, leaving the agent to infer usage from context.

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

get_athlete_clubsC

Get clubs the authenticated athlete belongs to

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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 mentions 'authenticated athlete', implying authentication is needed, but doesn't detail rate limits, pagination behavior (beyond what the schema covers), error conditions, or what the output looks like (e.g., list format, data fields). This leaves significant gaps for a read operation with no annotation support.

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 purpose without unnecessary words. It is front-loaded with the core action and resource, 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, no output schema, and a read operation with pagination parameters, the description is incomplete. It lacks details on authentication specifics, response format, error handling, and how it differs from sibling tools. For a tool with two parameters and behavioral nuances, this minimal description doesn't provide enough context 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 both parameters ('page' and 'per_page') well-documented in the schema. The description adds no additional parameter semantics beyond implying retrieval of clubs, which is already covered by the tool's purpose. Thus, it meets the baseline of 3 where the schema handles parameter documentation adequately.

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 'Get' and the resource 'clubs the authenticated athlete belongs to', which specifies what the tool does. However, it doesn't distinguish itself from sibling tools like 'get_club' or 'get_club_members', which also retrieve club-related information but with different scopes or filters.

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 sibling tools like 'get_club' (for specific club details) or 'get_club_members' (for club membership lists), nor does it specify prerequisites such as authentication requirements or context for retrieving athlete-specific clubs.

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

get_athlete_statsC

Get athlete statistics (totals and recent activities)

ParametersJSON Schema
NameRequiredDescriptionDefault
athlete_idYesAthlete ID

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 'Get' implies a read operation but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or response format. For a tool with no annotation coverage, this is a significant gap in transparency about how it behaves.

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 a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words and gets straight to the point. However, it could be slightly more structured by explicitly separating the tool's scope (e.g., 'Retrieves statistical data for an athlete').

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, no output schema, and a single parameter with full schema coverage, the description is incomplete. It lacks information on authentication, rate limits, error cases, and the structure of returned statistics (e.g., what 'totals and recent activities' includes). For a tool in this context, more behavioral and output details are needed.

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 single parameter 'athlete_id' documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides (e.g., it doesn't explain what 'athlete_id' refers to or valid ranges). 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.

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'athlete statistics', specifying it includes 'totals and recent activities'. This distinguishes it from sibling tools like 'get_athlete' (which likely returns profile info) or 'get_activities' (which lists activities). However, it doesn't explicitly differentiate from all siblings (e.g., 'get_athlete_zones' might overlap in athlete focus).

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 prerequisites (e.g., authentication), compare to siblings like 'get_athlete' or 'get_activities', or specify use cases (e.g., for performance analysis vs. general info). This leaves the agent to infer usage from the name alone.

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

get_athlete_zonesB

Get athlete zones (heart rate and power zones)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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. It states what the tool does but lacks behavioral details such as whether it requires authentication, returns real-time or stored data, has rate limits, or provides error handling. This is a significant gap for a tool with zero annotation coverage.

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 with zero waste. It is appropriately sized and front-loaded, 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.

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate. It covers the basic purpose but lacks completeness in behavioral context and usage guidelines, which are important for effective tool selection.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose without redundant parameter info, earning a baseline score of 4 for this context.

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 ('Get') and resource ('athlete zones'), specifying both heart rate and power zones. It distinguishes the type of data retrieved, though it doesn't explicitly differentiate from sibling tools like get_athlete or get_athlete_stats, which might provide overlapping athlete 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?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if this is for current zones, historical zones, or how it relates to tools like get_athlete (which might include zone data) or get_activity_streams (which could provide zone-related streams).

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

get_clubC

Get detailed information about a specific club

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClub ID

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 this is a read operation ('Get'), implying it's likely safe and non-destructive, but doesn't cover critical aspects like authentication requirements, rate limits, error conditions, or what 'detailed information' includes (e.g., fields returned, format). For a tool with zero annotation coverage, 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 a single, clear sentence with zero waste. It's front-loaded with the core purpose ('Get detailed information'), making it easy to parse quickly. Every word earns its place by conveying essential intent without redundancy.

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 tool's simplicity (1 parameter, 100% schema coverage) but lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' entails (e.g., club name, description, members), leaving the agent uncertain about the return value. For a read tool with no output schema, more context on the response is needed.

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 description doesn't add any parameter-specific information beyond what the schema provides. With 100% schema description coverage (the 'id' parameter is documented as 'Club ID'), the baseline is 3. The description doesn't elaborate on the 'id' parameter (e.g., where to find it, format, examples), so it doesn't compensate for or enhance the schema.

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 ('Get') and resource ('detailed information about a specific club'), making the purpose understandable. However, it doesn't distinguish this tool from potential sibling tools like 'get_club_activities' or 'get_club_members', which also retrieve club-related information but with different scopes.

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 prerequisites (e.g., needing a club ID), exclusions, or comparisons to sibling tools like 'get_athlete_clubs' (which might list clubs) or 'get_club_activities' (which focuses on activities). This leaves the agent to infer usage from context alone.

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

get_club_activitiesC

Get recent activities from club members

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClub ID
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

TDQS

C2.7/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. While 'Get recent activities' implies a read-only operation, the description doesn't address important behavioral aspects like pagination behavior (implied by page/per_page parameters but not explained), rate limits, authentication requirements, or what constitutes 'recent' (timeframe).

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 extremely concise at just 5 words ('Get recent activities from club members'). It's front-loaded with the core purpose and contains no unnecessary information or wasted words, making it highly efficient.

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?

For a tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'recent' means, what format the activities come in, whether there are sorting options, or how pagination works despite having page/per_page parameters. The agent would need to guess about important behavioral aspects.

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?

With 100% schema description coverage, the input schema already documents all three parameters (id, page, per_page) with clear descriptions. The tool description adds no additional parameter information beyond what's in the schema, so it meets the baseline expectation but doesn't provide extra value.

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

Purpose3/5

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

The description states the tool's purpose as 'Get recent activities from club members', which is a clear verb+resource combination. However, it doesn't distinguish this tool from its sibling 'get_activities' or 'get_activity', leaving ambiguity about what makes this specific club-focused tool different from general activity retrieval tools.

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. With multiple sibling tools like 'get_activities', 'get_activity', and 'get_club_members', there's no indication of when this club-specific activity retrieval is appropriate versus other activity or club-related tools.

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

get_club_membersC

Get members of a club

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClub ID
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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 offers minimal behavioral insight. It implies a read operation ('Get') but doesn't disclose pagination behavior (implied by parameters), rate limits, authentication needs, or what the return format looks like (no output schema).

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 with zero wasted words. It's front-loaded with the core purpose, making it highly concise and well-structured for quick comprehension.

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, no output schema, and a read operation with pagination parameters, the description is incomplete. It lacks context on return values, error conditions, or behavioral nuances like pagination defaults, which are critical for a tool with multiple parameters.

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 parameters are fully documented in the schema. The description adds no additional meaning beyond implying the 'id' parameter identifies a club, which is already clear from schema descriptions. 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 ('Get') and resource ('members of a club'), making the purpose immediately understandable. It doesn't explicitly distinguish from siblings like 'get_club' or 'get_club_activities', but the focus on members is specific enough to imply differentiation.

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 prerequisites (e.g., needing a club ID), exclusions, or comparisons to sibling tools like 'get_athlete_clubs' or 'get_club_activities', leaving usage context unclear.

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

get_gearB

Get detailed information about a specific piece of gear (bike, shoes, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGear ID

TDQS

B3.1/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 the tool retrieves 'detailed information,' implying a read-only operation, but doesn't specify what 'detailed' includes (e.g., metadata, usage stats), whether it requires authentication, rate limits, or error handling. For a tool with no annotations, 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 front-loads the core purpose ('Get detailed information about a specific piece of gear') and adds clarifying scope ('bike, shoes, etc.'). There is no wasted text, and it's appropriately sized for a simple tool with one parameter.

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 the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally complete. It covers the basic purpose but lacks details on usage guidelines, behavioral traits, and output expectations. Without an output schema, it should ideally hint at what 'detailed information' includes, but it doesn't, leaving room for improvement.

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 has 100% description coverage, with the 'id' parameter documented as 'Gear ID.' The description adds no additional meaning beyond this, such as format examples or sourcing instructions. With high schema coverage, the baseline is 3, as the schema already provides adequate parameter information.

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 ('Get') and resource ('gear'), and specifies the scope ('detailed information about a specific piece of gear'). It distinguishes itself from siblings like 'get_activities' or 'get_athlete' by focusing on gear. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_route' or 'get_segment'), so it's not a perfect 5.

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 prerequisites (e.g., needing a gear ID), exclusions, or comparisons to other tools like 'get_activities' (which might include gear info). Without such context, users must infer usage from the name and schema alone.

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

get_routeC

Get detailed information about a specific route

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRoute ID

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 the tool retrieves 'detailed information,' but doesn't specify what that includes (e.g., metadata, waypoints, elevation), whether it's a read-only operation, requires authentication, or has rate limits. This leaves significant gaps for a tool with no annotation coverage.

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 purpose without any wasted words. It's front-loaded with the core action and resource, 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' entails in the return values, nor does it cover behavioral aspects like authentication needs or error handling. For a tool with no structured data to rely on, this leaves the agent with insufficient context to use it 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 input schema has 100% description coverage, with the 'id' parameter documented as 'Route ID.' The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 ('Get') and resource ('detailed information about a specific route'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_routes' (plural) or 'explore_segments', which might retrieve similar route-related data, so it falls short of a perfect score.

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. For example, it doesn't specify if this is for retrieving a single route by ID while 'get_routes' is for listing multiple routes, or how it differs from 'explore_segments' for route exploration. The description lacks any context on prerequisites or exclusions.

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

get_routesC

Get athlete routes

ParametersJSON Schema
NameRequiredDescriptionDefault
athlete_idYesAthlete ID
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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. 'Get' implies a read operation, but it doesn't specify if this is a list operation, whether it's paginated (though schema hints at pagination), rate limits, authentication needs, or what the return format looks like. For a tool with no annotations, 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 extremely concise at just three words, front-loaded with the core action and resource. There is zero waste or redundancy, making it easy to parse quickly. This efficiency is commendable for a simple tool.

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 for a tool with three parameters. It doesn't explain the return values, error conditions, or behavioral traits like pagination. While the schema covers parameters, the overall context for using the tool effectively is lacking, especially compared to siblings that might offer more guidance.

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 three parameters (athlete_id, page, per_page) with descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining what 'routes' entail or how pagination works. 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.

Purpose4/5

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

The description 'Get athlete routes' clearly states the verb ('Get') and resource ('athlete routes'), making the purpose immediately understandable. It distinguishes from siblings like 'get_activities' or 'get_route' by specifying routes rather than activities or a single route. However, it doesn't specify whether this retrieves all routes for an athlete or filtered ones, which prevents a perfect score.

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 siblings like 'get_route' (singular) or 'get_activities', nor does it indicate prerequisites such as authentication or context for athlete_id. Without this, users must infer usage from the tool name alone.

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

get_segmentC

Get detailed information about a specific segment

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSegment ID

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 for behavioral disclosure. It states the tool retrieves detailed information but doesn't specify what 'detailed' includes, whether it requires authentication, rate limits, or error conditions. This leaves significant gaps for a read operation.

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 with no wasted words. It's front-loaded with the core purpose and appropriately sized for a simple retrieval tool, making it highly efficient.

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?

For a read tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'detailed information' includes, return format, or error handling. Given the context of sibling tools that might overlap (e.g., 'explore_segments'), more completeness is needed to guide proper 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?

The schema description coverage is 100%, with the 'id' parameter fully documented in the schema. The description adds no additional parameter details beyond implying it's for a 'specific segment', which aligns with the schema but doesn't provide extra semantic value. Baseline 3 is appropriate when 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 verb 'Get' and resource 'detailed information about a specific segment', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'explore_segments' or 'get_segment_leaderboard', which prevents a perfect score.

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 'explore_segments' for listing segments or 'get_segment_leaderboard' for leaderboard data. It lacks context about prerequisites or typical use cases, offering minimal usage direction.

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

get_segment_leaderboardC

Get segment leaderboard with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSegment ID
genderNoFilter by gender
age_groupNoAge group (e.g., "25_34")
weight_classNoWeight class (kg)
followingNoFilter by athletes you follow
club_idNoFilter by club ID
date_rangeNoDate range (e.g., "this_year", "this_month")
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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 the tool retrieves a leaderboard but doesn't explain what a 'segment leaderboard' entails (e.g., ranking of athletes, performance metrics), how data is returned (e.g., paginated results, format), or any constraints like rate limits or authentication needs. 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 extremely concise—a single sentence that efficiently conveys the core functionality. It's front-loaded with the main purpose and avoids unnecessary details, making it easy to parse quickly without wasted words.

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 (9 parameters, no annotations, no output schema), the description is insufficient. It doesn't explain what a 'segment leaderboard' is, how results are structured, or any behavioral traits like pagination defaults or error handling. For a tool with many parameters and no structured output information, more context is needed to ensure proper usage.

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 has 100% description coverage, with all parameters well-documented (e.g., 'Segment ID', 'Filter by gender'). The description adds minimal value beyond the schema by mentioning 'optional filters', which is already implied by the schema's optional parameters. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't significantly 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 tool's purpose: 'Get segment leaderboard with optional filters'. It specifies the verb ('Get') and resource ('segment leaderboard'), making it easy to understand what the tool does. However, it doesn't differentiate from sibling tools like 'get_segment' or 'explore_segments', which might also retrieve segment-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 mentions 'optional filters' but doesn't specify scenarios where this tool is preferred over siblings like 'get_segment' or 'explore_segments'. There's no mention of prerequisites, exclusions, or comparative contexts.

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

get_starred_segmentsC

Get athlete starred segments

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
per_pageNoNumber of items per page (default: 30)

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. While 'Get' implies a read operation, the description doesn't specify authentication requirements, rate limits, pagination behavior (beyond what's in the schema), or what 'starred' entails (e.g., user-specific favorites). This is inadequate for a tool with no annotation coverage.

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 with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple retrieval tool, earning the highest score for conciseness.

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 'starred segments' are, how they differ from regular segments, or what the return format looks like (e.g., list of segment objects). For a tool with no structured behavioral data, this leaves significant gaps in understanding.

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 both parameters ('page' and 'per_page') fully documented in the schema. The description adds no additional parameter information beyond what's already in the schema, so it meets the baseline score of 3 for high schema coverage without adding 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 'Get athlete starred segments' clearly states the verb ('Get') and resource ('athlete starred segments'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_segment' or 'explore_segments' that also retrieve segment-related data, so it doesn't reach the highest score.

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 prerequisites (e.g., authentication), context (e.g., what 'starred' means), or when other tools like 'get_segment' or 'explore_segments' might be more appropriate. This leaves the agent with minimal usage direction.

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

update_activityC

Update an existing activity

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesActivity ID
commuteNoWhether activity was a commute
trainerNoWhether activity was on a trainer
hide_from_homeNoHide activity from home feed
descriptionNoActivity description
nameNoActivity name
typeNoActivity type
sport_typeNoSport type
gear_idNoGear ID

TDQS

C2.7/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 for behavioral disclosure. 'Update an existing activity' implies a mutation operation but doesn't specify permissions required, whether updates are partial or complete, what happens to unspecified fields, or any rate limits/constraints. This leaves significant behavioral gaps for a mutation tool.

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 with zero wasted words. It's appropriately front-loaded with the core action and resource, 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?

For a mutation tool with 9 parameters, no annotations, and no output schema, the description is inadequate. It doesn't address behavioral aspects like permissions, partial updates, or response format, nor does it provide usage guidance relative to sibling tools. The schema handles parameter documentation, but the description fails to compensate for other gaps.

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 9 parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain relationships between parameters like 'type' and 'sport_type'). Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose3/5

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

The description 'Update an existing activity' clearly states the verb ('update') and resource ('activity'), but it's vague about what aspects can be updated and doesn't distinguish this tool from its sibling 'create_activity' beyond the obvious difference in operation type. It provides minimal but adequate purpose information.

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 about when to use this tool versus alternatives like 'create_activity' or 'delete_activity', nor are there any prerequisites mentioned (e.g., needing an existing activity ID). The description assumes context but offers no explicit usage instructions.

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

TDQS

B3.3/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources (activities, athlete, clubs, gear, routes, segments) and actions (get, create, update, delete, explore). There is no overlap or ambiguity between tools, making it easy for an agent to select the correct one.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., get_activity, create_activity, update_activity) with no deviations. The naming is uniform throughout, using snake_case and clear action-resource combinations.

Tool Count4/5

With 22 tools, the count is slightly high but reasonable for the Strava domain, which covers activities, athlete data, clubs, gear, routes, and segments. It provides comprehensive coverage without being excessive, though it borders on the heavy side.

Completeness5/5

The tool set offers complete CRUD/lifecycle coverage for key resources like activities (create, get, update, delete) and extensive read operations for athlete, clubs, gear, routes, and segments. There are no obvious gaps, supporting full agent workflows in the Strava ecosystem.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Integrates with the Strava API to allow AI assistants to access fitness data including athlete profiles, activity history, and segment statistics. It enables users to query detailed performance metrics and explore geographic segment data through natural language commands.
    8
    61
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables users to interact with their Strava data through natural language to analyze workouts, track fitness progress, and explore routes. It supports retrieving detailed activity stats, heart rate data, and segment insights directly within AI assistants.
    26
    445
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects Claude to the Strava API to provide direct access to fitness data, including athlete statistics, detailed activity logs, and time-series performance metrics. It enables users to analyze training progress, compare workouts, and retrieve specific segment details through natural language queries.
    8
    61
    ISC

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gcoombe/strava-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server