AI Endurance

Treinador de IA para corrida, ciclismo, triatlo

Documentação

Servidor MCP AI Endurance

Conecte sua plataforma de treinamento AI Endurance ao ChatGPT, Claude e outros assistentes de IA para acesso conversacional aos seus dados de treinamento, treinos e análises de desempenho, além de gerenciar seu plano de treinamento.

Visão Geral

O servidor MCP AI Endurance permite que assistentes de IA acessem seu plano de treinamento, histórico de atividades, previsões de desempenho, métricas de recuperação e zonas de treinamento por meio de conversa natural. Você pode visualizar, modificar e criar treinos estruturados para ciclismo, corrida e natação, analisar dados detalhados de atividades incluindo curvas de potência e tendências de ritmo, acompanhar sua recuperação usando VFC e frequência cardíaca de repouso, e obter previsões de tempo de prova baseadas em aprendizado de máquina.

Recursos

  • Gerenciamento de Plano de Treinamento - Visualize, modifique e crie treinos com intervalos estruturados
  • Análise de Atividades - Acesse métricas detalhadas de atividades de ciclismo, corrida e natação
  • Previsões de Desempenho - Previsões de tempo de prova baseadas em ML e projeções de condicionamento
  • Acompanhamento de Recuperação - Monitore VFC, frequência cardíaca de repouso e prontidão para treinar
  • Gerenciamento de Zonas - Atualize e visualize zonas de treinamento (ritmo, potência)
  • Agendamento de Treinos - Mova treinos, ajuste disponibilidade, acompanhe o progresso do plano
  • Metas de Prova - Gerencie objetivos de prova primários e secundários
  • Sinalizações de Atividade - Corrija detecção de indoor/virtual/erg e exclua atividades com sensores defeituosos da análise
  • Durabilidade - Veja como a potência ou o ritmo se sustentaram conforme o trabalho acumulado dentro de uma sessão, e como isso se compara à sua própria tendência
  • Análises Computadas de Atividades - Potência normalizada no servidor, fator de intensidade, tempo em zona, tabelas de ritmo/queda e divisões para qualquer atividade, sem ler streams brutos
  • Outros Esportes - Liste atividades de força, esqui, ioga, caminhada e outras que não sejam corrida/bike/natação

Plataformas Suportadas

ChatGPT

O AI Endurance está disponível no diretório de plugins do ChatGPT: https://chatgpt.com/plugins/plugin_asdk_app_69456fbb59d081918bcb148a12380f92

Configuração:

  1. Abra o diretório de plugins no ChatGPT e pesquise por "AI Endurance" (ou use o link acima)
  2. Selecione "Conectar"
  3. Autorize com sua conta AI Endurance
  4. Comece a fazer perguntas sobre seu treinamento

O ChatGPT também renderiza widgets interativos para a maioria das ferramentas, então treinos, atividades, recuperação e previsões retornam como cards ricos em vez de texto simples.

Exemplo:

You: "Show me my workouts for this week"
ChatGPT: [Lists your upcoming workouts with interactive widgets]

Claude.ai

Configuração:

  1. Navegue até as configurações do Claude.ai
  2. Vá para "Conectores"
  3. Selecione "Adicionar conector personalizado"
  4. Use a seguinte configuração:
Name: AI Endurance
Remote MCP Server URL: https://aiendurance.com/mcp
  1. Clique em "Adicionar"
  2. Autorize com sua conta AI Endurance
  3. Comece a fazer perguntas sobre seu treinamento

Exemplo:

You: "How was my ride yesterday?"
Claude: [Displays power distribution, External Stress Score, duration, and zone breakdown]

Outros Clientes Compatíveis com MCP

Qualquer cliente compatível com MCP 2025-06-18 pode se conectar usando:

Configuração HTTP Streamable (Recomendada):

{
  "url": "https://aiendurance.com/mcp",
  "transport": {
    "type": "http"
  },
  "auth": {
    "type": "oauth",
    "authorizationUrl": "https://aiendurance.com/authorize/",
    "tokenUrl": "https://aiendurance.com/api/o/token/",
    "scopes": ["read", "write"]
  }
}

Configuração de Transporte SSE (Legado):

{
  "url": "https://aiendurance.com/mcp",
  "transport": {
    "type": "sse"
  },
  "auth": {
    "type": "oauth",
    "authorizationUrl": "https://aiendurance.com/authorize/",
    "tokenUrl": "https://aiendurance.com/api/o/token/",
    "scopes": ["read", "write"]
  }
}

Clientes Compatíveis:

  • Claude Desktop (macOS, Windows)
  • Cursor (editor de código com IA)
  • Continue (extensão do VS Code)
  • Cline
  • Qualquer implementação personalizada de cliente MCP

Pré-requisitos

  • Conta AI Endurance (cadastre-se em https://aiendurance.com)
  • Assinatura ativa do AI Endurance ou teste gratuito
  • ChatGPT, Claude ou qualquer outro cliente compatível com MCP

Exemplos de Conversas

Análise de Plano de Treinamento

You: "Show me my workouts for this week"
AI: [Lists 6 workouts with dates, types, durations, and training zones]

You: "What's my long run this weekend?"
AI: [Shows Saturday's 90-minute endurance run with pace zones]

You: "Move tomorrow's threshold workout to Friday"
AI: [Reschedules workout and confirms sync to Garmin/TrainingPeaks]

You: "Am I training enough at threshold?"
AI: [Analyzes plan progress showing actual vs prescribed threshold time]

Análises Detalhadas de Atividades

You: "How was my ride yesterday?"
AI: [Displays power distribution, normalized power, stress scores, duration, and zone breakdown]

You: "What was my average pace on runs this month?"
AI: [Analyzes all January runs and calculates average pace, weekly volume]

You: "Show me the power curve from my last cycling activity"
AI: [Provides detailed time-series power data with peak power efforts]

You: "Compare my last 3 long runs"
AI: [Pulls detailed metrics and compares pace, heart rate, duration trends]

You: "Yesterday's ride was on Zwift, not outdoors"
AI: [Marks the activity indoor and virtual, and updates the stored weather]

You: "My HR strap was dead on this run - don't use its heart rate"
AI: [Flags the heart rate data as unreliable and rebuilds the HRV aggregates]

Recuperação e Condicionamento

You: "Am I recovered enough for today's hard workout?"
AI: [Shows recovery score, HRV trend, resting HR, and training recommendation]

You: "What's my predicted half marathon time based on current fitness?"
AI: [Displays ML-based prediction with confidence intervals and improvement trajectory]

You: "How well am I following my training plan?"
AI: [Shows plan adherence by zone with actual vs prescribed training volume]

You: "What does my HRV trend say about my fitness?"
AI: [Analyzes recovery model data and provides insights on adaptation]

Criação de Treinos Personalizados

You: "Create a threshold run for tomorrow: 15min warmup, 3x8min at threshold with 2min recovery, 10min cooldown"
AI: [Creates structured workout with proper zones, syncs to Garmin/TrainingPeaks/Zwift]

You: "Build me a 60min tempo ride at 85% FTP for Sunday"
AI: [Creates power-based cycling workout with appropriate structure]

You: "Design a swim workout: 200m warmup, 5x100m at threshold pace with 20sec rest, 200m cooldown"
AI: [Creates detailed swim workout with sets, strokes, and pace zones]

Planejamento de Provas

You: "What are my upcoming race goals?"
AI: [Lists primary and secondary races with dates and target times]

You: "Based on my training, how realistic is my marathon goal?"
AI: [Analyzes predictions, current training load, and provides assessment]

You: "Show me my fitness trend over the last 8 weeks"
AI: [Displays prediction model history showing fitness progression]

Ferramentas Disponíveis (27)

Perfil e Configurações

getUser Visualize seu perfil incluindo zonas de treinamento, tipo de usuário (Corredor/Ciclista/Triatleta), unidades (Métrico/Imperial) e preferências.

Retorna:

  • Zonas de treinamento (potência no ciclismo, ritmo/potência na corrida)
  • Limiares de frequência cardíaca
  • Métricas físicas (peso, altura, ano de nascimento)
  • Preferências do usuário

setZones Atualize zonas de treinamento para ciclismo (potência) ou corrida (ritmo/potência). Gerencia automaticamente zonas de ritmo e potência para corredores que usam medidores de potência.

Parâmetros:

  • actType: "Corrida" ou "Pedal"
  • zones: Objeto com limites superiores das zonas
    • Endurance: Limite superior (ex.: "5:31 /km" ou "200 W")
    • Tempo: Limite superior
    • Threshold: Limite superior
    • VO2Max: Limite superior

Observação: Deve incluir a unidade em cada valor. Para corrida, use formato de ritmo "mm:ss /km" ou "mm:ss /mi", ou formato de potência "XXX W". Para ciclismo, use formato de potência "XXX W".

getAvailability Visualize horas semanais de treinamento e agenda diária de disponibilidade para cada tipo de atividade.

Retorna:

  • Distribuição de horas semanais (total e por esporte para triatletas)
  • Agenda diária com horários de treino disponíveis

Gerenciamento de Treinos

getPlannedWorkouts Recupere treinos planejados para um intervalo de datas (padrão: próximos 14 dias).

Parâmetros:

  • startDate (opcional): Data inicial no formato AAAA-MM-DD (padrão: hoje)
  • endDate (opcional): Data final no formato AAAA-MM-DD (padrão: hoje + 14 dias)
  • summaryMode (opcional): Booleano - se verdadeiro, retorna visão geral leve com campos mínimos, sem limite de 35 dias
  • fullDetails (opcional): Booleano - se verdadeiro, inclui a estrutura de etapas legível por máquina (steps_general, swim_sections, distribuição de zonas, dados de conformidade) e intervalos de natação sem truncamento

Retorna:

  • Matriz de treinos com data, título, tipo, duração e descrições legíveis de aquecimento/intervalos/desaquecimento
  • has_steps_general por treino, indicando se existe uma estrutura legível por máquina (recupere-a com fullDetails)
  • Métricas de densidade de treinos (treinos por semana)
  • Intervalo de datas aplicado

changeWorkoutDate Mova um treino para uma data diferente. Atualiza o agendamento de treinos e sincroniza com todas as plataformas conectadas (Garmin, TrainingPeaks, Zwift, etc.).

Parâmetros:

  • workoutId: ID do treino no banco de dados
  • newDate: Nova data no formato AAAA-MM-DD
  • title (opcional): Título do treino para exibição

Retorna:

  • Confirmação de sucesso
  • Datas antiga e nova

skipWorkout Remova um treino do plano de treinamento. Marca o treino como pulado e sincroniza a exclusão com as plataformas conectadas.

Parâmetros:

  • workoutId: ID do treino no banco de dados
  • title (opcional): Título do treino para exibição

Retorna:

  • Confirmação de sucesso
  • Detalhes do treino

changeWorkoutAdvice Adicione ou atualize orientações de treinador para um treino específico sem modificar a estrutura do treino.

Parâmetros:

  • workoutId: ID do treino no banco de dados
  • advice: Instruções ou dicas adicionais
  • title (opcional): Título do treino para exibição

Retorna:

  • Confirmação de sucesso
  • Texto de orientação atualizado

changeWorkoutIntensity Altere a intensidade (carga) de um treino planejado existente de pedal ou corrida no local. A zona de intensidade do treino é preservada - as durações das etapas são recalculadas na nova carga.

Parâmetros:

  • workoutId: ID do treino no banco de dados (o campo workout_id de um resultado de getPlannedWorkouts)
  • ess: Novo escore de estresse de treinamento (obrigatório se intensityTime não for fornecido)
  • intensityTime: Novo tempo na intensidade em segundos (obrigatório se ess não for fornecido)
  • repeats (opcional): Novo número de repetições na intensidade
  • title (opcional): Título do treino para exibição

Retorna:

  • Confirmação de sucesso com o título, data e estresse de treinamento atualizados

Observação: funciona apenas em treinos com estrutura de etapas escalável (treinos gerados por algoritmo e treinos de createRideRunWorkoutByIntensity são elegíveis - has_steps_general é falso em getPlannedWorkouts). Em um treino estruturado, falha limpa com WORKOUT_HAS_NO_STEPS; pule o treino e recrie-o com createRideRunWorkout ou createRideRunWorkoutByIntensity.

createRideRunWorkout Crie treino estruturado personalizado para ciclismo ou corrida com intervalos, repetições e zonas.

Parâmetros:

  • dateStr: Data no formato AAAA-MM-DD
  • title: Nome do treino
  • actType: "Pedal" ou "Corrida"
  • stepsGeneral: Matriz de objetos de etapas (metas baseadas em zonas)
  • isTaper (opcional): Booleano, marca como treino de afinação (padrão falso)
  • advice (opcional): Notas de treinamento

Retorna:

  • Confirmação de sucesso
  • ID do treino criado

createRideRunWorkoutAdvanced Crie um treino de pedal ou corrida com metas numéricas precisas de potência ou ritmo - testes de rampa, testes de FTP, intervalos acima/abaixo, sessões de watt exato ou ritmo exato. Para treinos simples baseados em zonas, use createRideRunWorkout.

Parâmetros:

  • Mesmos de createRideRunWorkout, exceto que cada etapa de stepsGeneral suporta adicionalmente targetType (POWER para watts, SPEED para ritmo em m/s, HEART_RATE para bpm, etc.), um targetValue numérico e limites explícitos de targetValueLow/targetValueHigh. Sem limites explícitos, o backend deriva uma faixa de +/-5% em torno de targetValue.

Retorna:

  • Confirmação de sucesso
  • ID do treino criado

createRideRunWorkoutByIntensity Crie um treino simples de pedal ou corrida a partir de uma zona de intensidade mais uma carga alvo - sem necessidade de estrutura de etapas. Para treinos estruturados com etapas personalizadas de aquecimento/intervalo/desaquecimento, use createRideRunWorkout.

Parâmetros:

  • dateStr: Data no formato AAAA-MM-DD
  • actType: "Pedal" ou "Corrida" (deve corresponder ao esporte do usuário: usuários Corredores apenas Corrida, usuários Ciclistas apenas Pedal, usuários Triatletas ambos)
  • intensityType: "Endurance", "Tempo", "Limiar", "VO2Max" ou "Anaeróbico"
  • ess: Escore de estresse de treinamento alvo (obrigatório se intensityTime não for fornecido; mais de cerca de 100 é um treino difícil)
  • intensityTime: Tempo alvo na intensidade em segundos (obrigatório se ess não for fornecido)
  • repeats (opcional): Número de repetições na intensidade, para Tempo e acima
  • isTaper (opcional): Booleano, marca como treino de afinação (padrão falso)

Retorna:

  • Confirmação de sucesso
  • ID e título do treino criado

Observação: se já existir um treino com a mesma data, esporte e carga, esse treino existente é retornado em vez de uma duplicata.

createSwimWorkout Crie treino de natação personalizado com seções estruturadas (aquecimento, preparação, principal, desaquecimento), séries, intervalos, estilos e equipamentos.

Parâmetros:

  • dateStr: Data no formato AAAA-MM-DD
  • title: Nome do treino
  • swimSections: Matriz de objetos de seções de natação
  • isTaper (opcional): Booleano, marca como treino de afinação (padrão falso)
  • advice (opcional): Notas de treinamento

Retorna:

  • Confirmação de sucesso
  • ID do treino criado

createStrengthOtherWorkout Crie treino personalizado de força ou outro que não seja natação/bike/corrida, ex.: esqui cross-country, ioga, caminhada.

Parâmetros:

  • dateStr: Data no formato AAAA-MM-DD
  • title: Nome do treino
  • strengthOtherText: A descrição/instruções do treino em texto livre
  • isTaper (opcional): Booleano, marca como treino de afinação (padrão falso)

Retorna:

  • Confirmação de sucesso
  • ID do treino criado

Histórico de Atividades

getCyclingActivity Liste atividades recentes de ciclismo. Retorna os 20 pedais mais recentes se nenhum intervalo de datas for especificado, até 40 com intervalo de datas.

Parâmetros:

  • startDate (opcional): Formato AAAA-MM-DD
  • endDate (opcional): Formato AAAA-MM-DD
  • with_dfa_alpha1 (opcional): Booleano - se verdadeiro, inclui os campos DFA alpha 1 e limiares aeróbico/anaeróbico por atividade

Retorna:

  • Matriz de atividades de ciclismo com métricas resumidas
  • id: o id da atividade - passe-o como activityId para getCyclingActivityDetail ou setActivityFlags
  • Nome da atividade, data, duração, distância, potência, frequência cardíaca, Escore de Estresse Externo (ESS), clima

getRunningActivity Liste atividades recentes de corrida. Retorna as 20 corridas mais recentes se nenhum intervalo de datas for especificado, até 40 com intervalo de datas.

Parâmetros:

  • startDate (opcional): Formato AAAA-MM-DD
  • endDate (opcional): Formato AAAA-MM-DD
  • with_dfa_alpha1 (opcional): Booleano - se verdadeiro, inclui os campos DFA alpha 1 e limiares aeróbico/anaeróbico por atividade Retorna:
  • Matriz de atividades em execução com métricas resumidas
  • id: o id da atividade - passe-o como activityId para getRunningActivityDetail ou setActivityFlags
  • Nome da atividade, data, duração, gradient_adjusted_pace (GAP - o único ritmo informado para corridas), frequência cardíaca, potência de corrida, clima

getSwimmingActivity Lista atividades recentes de natação. Retorna até 40 nados mais recentes se nenhum intervalo de datas for especificado.

Parâmetros:

  • startDate (opcional): formato AAAA-MM-DD
  • endDate (opcional): formato AAAA-MM-DD

Retorna:

  • Matriz de atividades de natação com métricas resumidas
  • id: o id da atividade - passe-o como activityId para getSwimmingActivityDetail
  • Nome da atividade, data, duração, distância, ritmo, frequência de braçadas

getCyclingActivityDetail Dados detalhados para uma atividade de ciclismo. A resposta padrão é deliberadamente leve; os dados de durabilidade, curva de potência e amostras brutas são opcionais.

Parâmetros:

  • activityId: o id da atividade (o campo id de um resultado de getCyclingActivity)
  • with_dfa_alpha1 (opcional): Booleano - adiciona os valores de limiar DFA alpha 1 e durability_drift
  • with_power_curve (opcional): Booleano - adiciona a curva de pico de potência, % do melhor recente, estrutura de esforço e within_session_durability
  • with_time_series_metrics (opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falso
  • resolution (opcional): amostragem para as matrizes brutas, portanto não tem efeito a menos que with_time_series_metrics seja verdadeiro
    • "low": ~200 pontos, ~5KB, ~1.250 tokens (padrão)
    • "medium": ~500 pontos, ~12KB, ~3.000 tokens
    • "high": ~1000 pontos, ~25KB, ~6.250 tokens
    • "full": Todos os pontos de dados (18k-125k tokens - use com moderação!)

Retorna por padrão:

  • id e os metadados completos da atividade (data, duração, distância, potência/FC média, pontuações de estresse, clima, os sinalizadores da atividade)
  • laps: as voltas que o computador de bike registrou, com potência, FC, cadência e respiração por volta

Com with_dfa_alpha1:

  • Os valores de limiar aeróbico/anaeróbico, os escalares a1 e a média de a1 de cada volta
  • durability_drift: como a deriva interna deste pedal (frequência cardíaca, DFA a1, frequência respiratória) se posicionou em relação à sua própria tendência ajustada de ~6 semanas em trabalho equivalente - resíduo médio, posição versus a faixa de confiança, a perda percentual da tendência nas âncoras e o número de pedais atrás da tendência. Cada métrica também carrega um verdict simples (more_durable, less_durable, typical ou mixed; nulo quando essa métrica tem poucos esforços no pedal para sustentar uma afirmação), e o objeto carrega um veredito overall entre as métricas que possuem um. Precisa de R-R limpo, portanto está ausente em pedais sem isso

Com with_power_curve:

  • power_curve e pct_of_recent_best (percentual do seu melhor recente em cada duração)
  • effort_structure: tempo gasto por faixa de intensidade e duração do intervalo
  • within_session_durability: o quanto a potência sustentada caiu conforme o trabalho acumulou dentro do pedal, ao longo do próprio eixo de kJ do pedal. Não precisa de VFC, portanto está disponível em praticamente qualquer pedal com potência

Com with_time_series_metrics:

  • As matrizes brutas por amostra: potência, frequência cardíaca, cadência, altitude, frequência respiratória (mais os canais a1 quando with_dfa_alpha1 também estiver definido), amostradas para resolution

getRunningActivityDetail Dados detalhados para uma atividade de corrida. Mesma estrutura opcional da ferramenta de detalhes de ciclismo.

Parâmetros:

  • activityId: o id da atividade (o campo id de um resultado de getRunningActivity)
  • with_dfa_alpha1 (opcional): Booleano - adiciona os valores de limiar DFA alpha 1 e durability_drift
  • with_power_curve (opcional): Booleano - adiciona as curvas de pico de ritmo GAP e potência de corrida, % do melhor recente, estrutura de esforço e within_session_durability
  • with_time_series_metrics (opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falso
  • resolution (opcional): amostragem para as matrizes brutas (mesma do ciclismo), portanto não tem efeito a menos que with_time_series_metrics seja verdadeiro

Retorna por padrão:

  • id e os metadados completos da atividade (data, duração, distância, ritmo/potência/FC média, pontuações de estresse, clima, os sinalizadores da atividade)
  • laps: as voltas que o relógio registrou, com avg_pace_device por volta (o ritmo bruto do relógio, não GAP), potência, FC, cadência e respiração

Com with_dfa_alpha1:

  • Os valores de limiar aeróbico/anaeróbico, os escalares a1 e a média de a1 de cada volta
  • durability_drift: a deriva interna desta corrida (frequência cardíaca, DFA a1, frequência respiratória) contra sua própria tendência ajustada de ~6 semanas em trabalho equivalente, com o mesmo verdict por métrica e veredito overall da ferramenta de ciclismo. Precisa de R-R limpo, portanto está ausente em corridas sem isso

Com with_power_curve:

  • pace_curve, running_power_curve e pct_of_recent_best
  • effort_structure: tempo gasto por faixa de intensidade e duração do intervalo
  • within_session_durability, dividido por canal (gap para ritmo GAP, power para potência de corrida): o quanto o ritmo ou a potência sustentada caiu conforme a distância acumulou dentro da corrida, ao longo do próprio eixo GAP-km. Não precisa de VFC, portanto está disponível em praticamente qualquer corrida

Com with_time_series_metrics:

  • As matrizes brutas por amostra: gap (o fluxo GAP, com sua unidade em gap_unit), frequência cardíaca, potência de corrida, altitude, cadência, frequência respiratória (mais os canais a1 quando with_dfa_alpha1 também estiver definido), amostradas para resolution

getSwimmingActivityDetail Métricas detalhadas para uma atividade específica de natação, incluindo dados de série temporal (ritmo, frequência de braçadas, distância por braçada).

Parâmetros:

  • activityId: o id da atividade (o campo id de um resultado de getSwimmingActivity)
  • with_time_series_metrics (opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falso
  • resolution (opcional): amostragem para as matrizes brutas (mesma do ciclismo), portanto não tem efeito a menos que with_time_series_metrics seja verdadeiro

Retorna:

  • Metadados completos da atividade
  • Métricas de série temporal: ritmo, frequência de braçadas, distância por braçada, comprimento da piscina
  • Detalhamento volta a volta
  • Análise de braçadas

analyzeActivityStream Calcula análises quantitativas para uma atividade no servidor e retorna um resumo compacto. Prefira esta ferramenta em vez das ferramentas de detalhes sempre que quiser números - potência normalizada, fator de intensidade, variabilidade, tempo em zona, ritmo/queda (primeira vs segunda metade) ou extremos de canal (média/máx/mín de potência, frequência cardíaca, cadência, ritmo). Não serve para durabilidade, limiares DFA alpha 1 ou a curva média-máxima - esses ficam atrás dos sinalizadores opcionais das ferramentas de detalhes.

Parâmetros:

  • activityId: o id da atividade (o campo id de um resultado de lista de atividades)
  • activityType: "Ride", "Run" ou "Swim"
  • segments (opcional): "auto" (padrão) adiciona uma pequena tabela de divisões de janela de tempo igual (potência/velocidade média + FC por janela); "none" pula isso. São janelas calculadas, não as voltas do dispositivo.
  • range (opcional): {"type": "time_seconds", "from": seconds, "to": seconds} restringe toda a análise a uma janela de tempo - por exemplo, os primeiros 30 minutos, ou uma volta do dispositivo via start_s/end_s das ferramentas de detalhes

Retorna (blocos omitidos quando a atividade não tem os dados):

  • Visão geral: tempo em movimento/decorrido, distância, ganho de elevação
  • power: média/máx/mín, potência normalizada, índice de variabilidade, fator de intensidade
  • heart_rate, cadence e o canal de ritmo: gap_m_per_s para corridas (GAP), pace_m_per_s para nados
  • pacing: médias da primeira vs segunda metade e fade_pct (positivo = potência mais baixa / mais lento na segunda metade; ingênuo em relação ao terreno, então verifique a subida/descida por metade antes de chamar a queda de fisiológica)
  • time_in_zone e segments

getOtherActivity Lista atividades de qualquer esporte fora corrida, ciclismo e natação - treino de força, esqui cross-country, ioga, caminhada, trilha. Retorna as 20 mais recentes se nenhum intervalo de datas for especificado, até 40 com um intervalo de datas.

Parâmetros:

  • startDate (opcional): formato AAAA-MM-DD
  • endDate (opcional): formato AAAA-MM-DD

Retorna:

  • Matriz de atividades com nome, tipo, data, duração, frequência cardíaca média, pontuações de estresse, ganho de elevação, distância, calorias

Nota: outras atividades são apenas de duração. Não há dados de série temporal/fluxo e nenhuma ferramenta de detalhes para elas, portanto não espere potência, ritmo, VFC ou métricas por segundo.

Sinalizadores de Atividade

setActivityFlags Define sinalizadores por atividade em uma atividade de ciclismo ou corrida: indoor, virtual, modo erg e exclusões de análise em tempo de leitura. Use quando uma atividade foi detectada incorretamente (um pedal indoor tratado como outdoor) ou quando dados ruins de sensor devem ser mantidos fora das análises. Apenas os sinalizadores que você passar mudam; os outros permanecem intactos.

Parâmetros:

  • activityId: o id da atividade (o campo id de um resultado de getCyclingActivity / getRunningActivity)
  • sport: "cycling" ou "running"
  • isIndoor (opcional): A atividade foi realizada em ambiente indoor (treinador/esteira/virtual). Também troca o clima armazenado pelo marcador indoor, ou busca novamente o clima externo quando revertido para outdoor.
  • isVirtual (opcional): Pedal/corrida virtual (Zwift, Rouvy, etc.). Implica indoor.
  • isErgMode (opcional): Gravado em modo erg (o treinador controla a potência)
  • excludeFromCurves (opcional): Excluir das curvas agregadas de potência/ritmo-duração e comparações de melhor recente (por exemplo, mau funcionamento do medidor de potência)
  • excludeFromModel (opcional): Excluir dos dados de treinamento do modelo de gêmeo digital (GRU)
  • excludeFromDurability (opcional): Excluir da agregação da curva de durabilidade
  • excludeHrData (opcional): Os dados de frequência cardíaca não são confiáveis (por exemplo, falha da alça) - exclui a atividade da agregação de VFC/alpha 1 e do treinamento do modelo, mantendo as análises de potência/ritmo

Retorna:

  • Confirmação de sucesso e um resumo legível do que mudou
  • flags: valores atuais de todos os sete sinalizadores após a atualização
  • retrain_queued: se a mudança enfileirou um retreinamento do gêmeo digital (excludeFromModel e excludeHrData fazem; excludeHrData adicionalmente reconstrói os agregados de VFC armazenados)

Notas: sinalizadores definidos manualmente são fixados, portanto a detecção automática posterior não os sobrescreverá. Os valores dos sinalizadores também são retornados em cada atividade nos resultados de lista e detalhes de getCyclingActivity / getRunningActivity.

Análises e Insights

getRaceGoalEvent Visualiza eventos de meta de corrida primários e secundários com previsões de desempenho e prioridades.

Retorna:

  • Meta de corrida primária (nome, data, distância, prioridade, tempo previsto)
  • Metas de corrida secundárias (se configuradas)
  • Dias até cada corrida
  • Tempos de chegada alvo

getPrediction Previsões de desempenho baseadas em ML, incluindo previsões futuras, dados históricos e métricas de validação do modelo.

Retorna:

  • Previsões futuras (próximas 12 semanas de trajetória de condicionamento)
  • Previsões históricas (comparação real vs previsto)
  • Pontuações de validação do modelo
  • Intervalos de confiança
  • Impacto do treino nas previsões

getRecoveryModel Dados do modelo de recuperação, incluindo:

  • Pontuação de recuperação cardíaca
  • DFA alpha 1 (métrica autonômica cardíaca da análise de VFC)
  • rMSSD (variabilidade da frequência cardíaca - atividade parassimpática)
  • Tendências da frequência cardíaca em repouso
  • Pontuação de estresse externo
  • Recuperação ortopédica (recuperação articular/muscular para ciclismo, corrida, natação)

Parâmetros:

  • days_back (opcional): Quantos dias de dados diários de recuperação retornar, 1-90 (padrão 14)

Retorna:

  • Dados de série temporal mostrando tendências de recuperação (últimos 14 dias por padrão)
  • Status atual de recuperação
  • Fatores de recuperação (o que está limitando a recuperação hoje)
  • Recuperação ortopédica específica da atividade

getPlanProgress Progresso do plano de treino mostrando adesão às zonas de treino prescritas.

Retorna:

  • Percentual de correspondência (adesão geral ao plano)
  • Detalhamento zona por zona:
    • Endurance: horas reais vs horas prescritas
    • Tempo: real vs prescrito
    • Limiar: real vs prescrito
    • VO2Max: real vs prescrito
    • Anaeróbico: real vs prescrito
  • Para triatletas: progresso separado para Ride, Run, Swim getNutritionModel Recupera o modelo de nutrição do usuário com requisitos diários de calorias e macronutrientes (proteína, gordura, carboidratos), incluindo limites inferior e superior.

Retorna:

  • Requisitos diários de calorias e macronutrientes para 6 dias (1 dia passado + hoje + 5 dias futuros)
  • Requisitos de proteína (limites inferior e superior em gramas)
  • Requisitos de gordura (limites inferior e superior em gramas)
  • Requisitos de carboidratos (limites inferior e superior em gramas)
  • Baseado nos treinos planejados e na fisiologia do usuário

Autenticação e Segurança

Fluxo OAuth 2.0

  1. O assistente de IA inicia o fluxo OAuth
  2. O usuário é redirecionado para a página de autorização do AI Endurance
  3. O usuário faz login com as credenciais do AI Endurance
  4. O usuário concede acesso ao escopo "read"
  5. O AI Endurance retorna o código de autorização
  6. O assistente de IA troca o código pelo token de acesso
  7. Todas as requisições à API são autenticadas via token Bearer

Escopos

  • read: Visualizar dados de treino, treinos, atividades, zonas, previsões e métricas de recuperação
  • write: Criar, modificar e excluir treinos; atualizar zonas de treino; gerenciar agenda de treinos

Acesso a Dados

O servidor MCP tem acesso a:

  • Perfil e preferências do usuário
  • Zonas de treino (visualizar e modificar)
  • Treinos planejados (visualizar, modificar agenda, criar novos)
  • Histórico de atividades (ciclismo, corrida, natação)
  • Previsões de desempenho
  • Métricas de recuperação
  • Metas de prova

O servidor MCP não pode:

  • Iniciar a geração de planos de treino
  • Criar ou modificar exclusões de dados por intervalo de datas (flags por atividade são configuráveis com setActivityFlags)
  • Alterar suas conexões com plataformas de terceiros (Garmin, Strava, etc.)
  • Excluir sua conta
  • Modificar configurações de cobrança da conta
  • Acessar informações de pagamento
  • Excluir atividades históricas (só pode pular treinos futuros)

Revogação

Desconecte o acesso a qualquer momento no seu cliente mcp.

Especificações Técnicas

  • Versão do Protocolo: MCP 2025-06-18
  • Transporte: HTTP Streamable (preferido) ou SSE (legado)
  • Autenticação: OAuth 2.0
  • Formato de Mensagem: JSON-RPC 2.0
  • Resultados de Ferramentas: toda ferramenta declara um outputSchema. Um resultado bem-sucedido de tools/call retorna o JSON em um bloco de texto content e, de forma idêntica, em structuredContent, que está em conformidade com esse esquema. Resultados com isError: true carregam a mensagem apenas em content.
  • URL Base: https://aiendurance.com/mcp
  • Endpoint de Mensagens: https://aiendurance.com/mcp/messages
  • Manifesto: https://aiendurance.com/.well-known/ai-plugin.json

Limites de Taxa

Nenhum limite de taxa explícito é aplicado atualmente. As diretrizes padrão de uso da API se aplicam — evite requisições excessivas em períodos curtos de tempo.

Tratamento de Erros

Erros retornados em formato compatível com MCP:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "Error message here"
    }],
    "isError": true
  }
}

Códigos de erro comuns:

  • 401: Autenticação necessária ou token expirado
  • 403: Permissões insuficientes
  • 404: Treino/atividade não encontrado
  • 422: Erro de validação (parâmetros inválidos)
  • 500: Erro interno do servidor

Suporte e Recursos

Compatibilidade de Plataformas

Testado e Funcionando

  • ChatGPT (web, iOS, Android — a partir do diretório de plugins, com widgets interativos)
  • Claude.ai (interface web)
  • Claude Desktop (macOS)

Compatível (não testado oficialmente)

  • Qualquer cliente compatível com MCP 2025-06-18 que use transporte HTTP Streamable ou SSE
  • Cursor, Continue, Cline (ferramentas de desenvolvedor)
  • Clientes que validam resultados contra outputSchema, como o proxy MCP LiteLLM e o Hermes Agent
  • Implementações personalizadas de cliente MCP

Changelog

Versão 1.3.1 (2026-09-04)

Corrigido:

  • Todo resultado de ferramenta agora carrega structuredContent para todos os clientes, não apenas ChatGPT. Cada ferramenta declara um outputSchema, e a especificação MCP então exige que o resultado inclua conteúdo estruturado que corresponda a ele. Clientes construídos sobre os SDKs oficiais do MCP, como o proxy MCP LiteLLM e o Hermes Agent, aplicam essa regra e estavam rejeitando toda chamada com "has an output schema but did not return structured content". Claude.ai e Claude Desktop não validam e não foram afetados. O bloco de texto content ainda contém o mesmo JSON, então um cliente que lê texto não vê mudança.

Versão 1.3.0 (2026-08-26)

Adicionado:

  • durability_drift (a visão with_dfa_alpha1 em getCyclingActivityDetail e getRunningActivityDetail) agora declara sua própria conclusão. Cada métrica carrega um verdict — more_durable, less_durable, typical ou mixed — e o objeto carrega um veredito overall além das contagens por trás dele (more_durable, less_durable, counted). Leia esses em vez de derivar uma direção de mean_residual_vs_trend: a convenção de sinal é invertida para DFA a1 (maior = menos fadiga), o que é fácil de errar.
  • O verdict de uma métrica é null quando essa sessão tem esforços demais insuficientes para sustentar uma afirmação, e overall está ausente quando nenhuma métrica se qualifica. Trate null como "sem leitura", não como "típico".

Alterado:

  • Os campos de ritmo de corrida foram renomeados para dizer o que realmente são. Todo ritmo que o AI Endurance deriva para uma corrida é GAP (Ritmo Ajustado por Gradiente, normalizado para o gradiente), que em corridas com subidas lê mais rápido que o ritmo bruto do relógio por design. Sob seus antigos nomes neutros, esses eram reportados como ritmo simples e misturados com os valores brutos por volta. Renomeados, apenas em corridas:
    • getRunningActivity e getRunningActivityDetail: activity_avpace -> gradient_adjusted_pace
    • Voltas getRunningActivityDetail: avg_pace -> avg_pace_device (este é o ritmo BRUTO do relógio, direto do dispositivo — nunca compare com gradient_adjusted_pace)
    • Arrays brutos getRunningActivityDetail: o fluxo pace / pace_unit -> gap / gap_unit
    • analyzeActivityStream em uma corrida: pace_m_per_s -> gap_m_per_s, o segmento/janela avg_speed_m_per_s -> avg_gap_m_per_s, e pacing.basis -> gap_m_per_s
    • Natação não foi alterada: seu canal de ritmo realmente é ritmo bruto e mantém os nomes simples. Passeios não têm canal de ritmo.
  • O widget de detalhes de atividade não mostra mais uma métrica de durabilidade que tem esforços demais insuficientes por trás, em vez de declarar uma direção que os dados não sustentam. Sessões finas mostram menos do que antes.

Um cliente que analisou qualquer um dos campos de ritmo de corrida renomeados deve atualizar: os nomes antigos se foram, não estão obsoletos. Nada mais foi removido.

Versão 1.2.0 (2026-08-25)

Adicionado:

  • Ferramenta analyzeActivityStream: análises computadas no servidor para uma atividade — potência normalizada, fator de intensidade, variabilidade, tempo em zona, ritmo/queda primeira-vs-segunda metade, extremos de canal e divisões opcionais por janelas de tempo iguais, com um intervalo de tempo opcional (ex.: uma volta do dispositivo). Este é o caminho recomendado para perguntas quantitativas; os arrays brutos das ferramentas de detalhe permanecem desligados por padrão.
  • Ferramenta getOtherActivity: lista atividades de qualquer esporte fora corrida, ciclismo e natação (força, esqui, ioga, trilha, ...). Apenas duração — sem dados de fluxo e sem ferramenta de detalhe.
  • Ferramenta createRideRunWorkoutByIntensity: cria um treino simples de passeio ou corrida a partir de uma zona de intensidade mais uma carga alvo (ess e/ou intensityTime), sem criar uma lista de passos.
  • Ferramenta changeWorkoutIntensity: redimensiona um treino planejado existente de passeio ou corrida no lugar para um novo ess e/ou intensityTime, preservando sua zona de intensidade. Treinos estruturados (steps_general) falham limpo com WORKOUT_HAS_NO_STEPS e devem ser pulados e recriados em vez disso.

Isso traz a superfície de ferramentas MCP para paridade com as ferramentas de backend do chatbot do AI Endurance.

Versão 1.1.0 (2026-08-25)

Adicionado:

  • Toda atividade em getCyclingActivity, getRunningActivity e getSwimmingActivity agora carrega seu id. Passe-o como activityId para a ferramenta de detalhe correspondente ou para setActivityFlags. Anteriormente, nenhuma resposta expunha um id, então as ferramentas de detalhe e setActivityFlags não podiam ser chamadas a partir de um resultado de lista.
  • with_dfa_alpha1 em getCyclingActivityDetail e getRunningActivityDetail: os valores de limite do DFA alpha 1 mais durability_drift — como a deriva interna daquela sessão (frequência cardíaca, DFA a1, frequência respiratória) se posicionou contra sua própria tendência ajustada de ~6 semanas em trabalho correspondente. Precisa de dados R-R limpos.
  • with_power_curve nas mesmas duas ferramentas: a curva de potência/ritmo de pico, percentual do seu melhor recente, o resumo da estrutura de esforço e within_session_durability — quanto a potência ou ritmo sustentado caiu conforme o trabalho se acumulou dentro da sessão, ao longo de seu próprio eixo de kJ ou GAP-km. Não precisa de HRV, então está disponível em praticamente todo passeio e corrida.
  • with_time_series_metrics em todas as três ferramentas de detalhe: retorna os arrays brutos por amostra.

Alterado:

  • As ferramentas de detalhe não retornam mais os arrays brutos time_series_metrics por amostra por padrão — defina with_time_series_metrics para obtê-los. Os objetos derivados acima respondem perguntas de ritmo, queda e durabilidade sem eles.
  • Os valores de limite do DFA alpha 1 nas ferramentas de detalhe agora exigem with_dfa_alpha1, correspondendo a como as ferramentas de resumo os controlam desde 1.0.5.
  • resolution afeta apenas os arrays brutos, então é um no-op a menos que with_time_series_metrics esteja definido.

Nada foi removido: ambas as mudanças são opt-in, mas um cliente que analisou os arrays brutos ou os valores a1 de uma resposta de detalhe agora deve passar a flag correspondente.

Corrigido:

  • Uma ferramenta de detalhe chamada sem um activityId retornava um erro genérico "Tool execution failed" em vez de um resultado vazio.

Versão 1.0.6 (2026-08-20)

Adicionado:

  • Ferramenta setActivityFlags: define as flags por atividade em uma atividade de ciclismo ou corrida — indoor, virtual, modo erg, e as exclusões de análise em tempo de leitura (curvas de potência/ritmo, treinamento do modelo digital twin, durabilidade, dados de frequência cardíaca não confiáveis). Flags definidas manualmente são fixadas contra detecção automática posterior, definir isIndoor mantém o clima da atividade armazenada consistente, e as exclusões que mudam os dados de treino enfileiram um retreino do digital twin (mais uma reconstrução agregada de HRV para excludeHrData).
  • Os campos de flag agora são retornados em toda atividade em getCyclingActivity, getRunningActivity e nos resultados de detalhe correspondentes.

Versão 1.0.5 (2026-08-06)

Adicionado:

  • Ferramenta createRideRunWorkoutAdvanced: cria treinos de passeio/corrida com alvos numéricos precisos de potência ou ritmo (testes de ramp, testes de FTP, over/unders, sessões de watt exato ou ritmo exato).
  • Parâmetro fullDetails em getPlannedWorkouts: retorna a estrutura de passos legível por máquina e intervalos de natação sem truncamento.
  • Parâmetro with_dfa_alpha1 em getCyclingActivity e getRunningActivity: retorna os campos DFA alpha 1 e de limite.
  • Parâmetro days_back em getRecoveryModel: amplia a janela retornada até 90 dias.
  • Clima no início da atividade nos resumos de atividades de ciclismo e corrida.

Alterado:

  • Respostas padrão mais enxutas para manter os resultados de ferramentas pequenos: getPlannedWorkouts retorna descrições de treino legíveis por humanos mais uma flag has_steps_general em vez da estrutura completa de passos; getCyclingActivity e getRunningActivity retornam 20 atividades sem um intervalo de datas (40 com um) e omitem os campos DFA alpha 1; getRecoveryModel retorna os últimos 14 dias em vez do histórico completo. Cada um é restaurado pelo parâmetro correspondente acima.

Versão 1.0.4 (2026-03-23)

Removido:

  • Ferramenta markWorkout: Esta ferramenta não existe mais.

Versão 1.0.3 (2026-01-30)

Alterado:

  • Atualizado para a versão de protocolo MCP 2025-06-18
  • Adicionado suporte a transporte HTTP Streamable (preferido para novos clientes)
  • Transporte SSE mantido para compatibilidade retroativa
  • Adicionados cabeçalhos de resposta MCP-Protocol-Version e MCP-Session-Id

Versão 1.0.2 (2025-01-20)

Adicionado:

  • Ferramenta getNutritionModel: Recupera requisitos diários de calorias e macronutrientes (proteína, gordura, carboidratos) com limites inferior/superior para 6 dias (1 passado + hoje + 5 futuros) baseados em treinos planejados e fisiologia do usuário.
  • training_plan_generation_system_prompt adicionado à saída da ferramenta getUser para contexto de LLM ao gerar recomendações de treino.

Versão 1.0.1 (2025-12-03)

  • Ferramenta createStrengthOtherWorkout: nova ferramenta para criar treinos de força e outros tipos (ex.: esqui cross-country, ioga, trilha)

Versão 1.0.0 (2025-11-21)

Lançamento Inicial

  • Protocolo MCP: Implementação da especificação MCP 2025-03-26 com transporte SSE
  • Autenticação OAuth 2.0: Fluxo OAuth completo com registro dinâmico de cliente (RFC 7591)
  • 20 Ferramentas: Conjunto completo de gerenciamento de treinos
    • Perfil e Configurações: getUser, setZones, getAvailability
    • Gerenciamento de Treinos: getPlannedWorkouts, changeWorkoutDate, skipWorkout, markWorkout, changeWorkoutAdvice, createRideRunWorkout, createSwimWorkout
    • Histórico de Atividades: getCyclingActivity, getRunningActivity, getSwimmingActivity, getCyclingActivityDetail, getRunningActivityDetail, getSwimmingActivityDetail
    • Análises e Insights: getRaceGoalEvent, getPrediction, getRecoveryModel, getPlanProgress
  • 20 Recursos: Componentes de UI do SDK de Apps OpenAI para widgets ricos do ChatGPT
  • 5 Prompts: Modelos de conversa para fluxos de treino comuns
    • Análise de Plano de Treino
    • Análise de Atividade
    • Verificação de Recuperação
    • Criação de Treino Personalizado
    • Planejamento de Prova
  • Suporte a Multiesportes: Ciclismo, corrida, natação e triatlo
  • Suporte a Plataformas: Claude.ai, Claude Desktop (macOS)
  • Documentação: Documentação abrangente da API em https://github.com/ai-endurance/mcp

Desenvolvido por AI Endurance - Treinamento orientado por dados com IA para corredores, ciclistas e triatletas.