Skip to main content
Glama
data-reducer.ts2.36 kB
import { StravaActivity } from '../types/strava.js'; /** * Minimal activity data for training analysis * Strips out social metrics, metadata, and privacy flags while keeping core training data */ export interface MinimalActivity { id: number; name: string; type: string; sport_type: string; start_date: string; start_date_local: string; distance: number; moving_time: number; elapsed_time: number; total_elevation_gain: number; average_speed: number; max_speed: number; average_cadence?: number; average_watts?: number; weighted_average_watts?: number; kilojoules?: number; average_heartrate?: number; max_heartrate?: number; trainer: boolean; commute: boolean; // Location data for geographic searches location_city: string | null; location_state: string | null; location_country: string | null; start_latlng: [number, number] | null; end_latlng: [number, number] | null; } /** * Reduce activity to minimal fields for training analysis * Removes: social data (kudos, comments), metadata, privacy flags, map polylines */ export function reduceActivity(activity: StravaActivity): MinimalActivity { return { id: activity.id, name: activity.name, type: activity.type, sport_type: activity.sport_type, start_date: activity.start_date, start_date_local: activity.start_date_local, distance: activity.distance, moving_time: activity.moving_time, elapsed_time: activity.elapsed_time, total_elevation_gain: activity.total_elevation_gain, average_speed: activity.average_speed, max_speed: activity.max_speed, average_cadence: activity.average_cadence, average_watts: activity.average_watts, weighted_average_watts: activity.weighted_average_watts, kilojoules: activity.kilojoules, average_heartrate: activity.average_heartrate, max_heartrate: activity.max_heartrate, trainer: activity.trainer, commute: activity.commute, location_city: activity.location_city, location_state: activity.location_state, location_country: activity.location_country, start_latlng: activity.start_latlng, end_latlng: activity.end_latlng, }; } /** * Reduce an array of activities to minimal fields */ export function reduceActivities(activities: StravaActivity[]): MinimalActivity[] { return activities.map(reduceActivity); }

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