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:
- Abra o diretório de plugins no ChatGPT e pesquise por "AI Endurance" (ou use o link acima)
- Selecione "Conectar"
- Autorize com sua conta AI Endurance
- 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:
- Navegue até as configurações do Claude.ai
- Vá para "Conectores"
- Selecione "Adicionar conector personalizado"
- Use a seguinte configuração:
Name: AI Endurance
Remote MCP Server URL: https://aiendurance.com/mcp
- Clique em "Adicionar"
- Autorize com sua conta AI Endurance
- 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 zonasEndurance: Limite superior (ex.: "5:31 /km" ou "200 W")Tempo: Limite superiorThreshold: Limite superiorVO2Max: 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 diasfullDetails(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_generalpor treino, indicando se existe uma estrutura legível por máquina (recupere-a comfullDetails)- 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 dadosnewDate: Nova data no formato AAAA-MM-DDtitle(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 dadostitle(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 dadosadvice: Instruções ou dicas adicionaistitle(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 campoworkout_idde um resultado degetPlannedWorkouts)ess: Novo escore de estresse de treinamento (obrigatório seintensityTimenão for fornecido)intensityTime: Novo tempo na intensidade em segundos (obrigatório seessnão for fornecido)repeats(opcional): Novo número de repetições na intensidadetitle(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-DDtitle: Nome do treinoactType: "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 destepsGeneralsuporta adicionalmentetargetType(POWER para watts, SPEED para ritmo em m/s, HEART_RATE para bpm, etc.), umtargetValuenumérico e limites explícitos detargetValueLow/targetValueHigh. Sem limites explícitos, o backend deriva uma faixa de +/-5% em torno detargetValue.
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-DDactType: "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 seintensityTimenão for fornecido; mais de cerca de 100 é um treino difícil)intensityTime: Tempo alvo na intensidade em segundos (obrigatório seessnão for fornecido)repeats(opcional): Número de repetições na intensidade, para Tempo e acimaisTaper(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-DDtitle: Nome do treinoswimSections: Matriz de objetos de seções de nataçãoisTaper(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-DDtitle: Nome do treinostrengthOtherText: A descrição/instruções do treino em texto livreisTaper(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-DDendDate(opcional): Formato AAAA-MM-DDwith_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 comoactivityIdparagetCyclingActivityDetailousetActivityFlags- 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-DDendDate(opcional): Formato AAAA-MM-DDwith_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 comoactivityIdparagetRunningActivityDetailousetActivityFlags- 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-DDendDate(opcional): formato AAAA-MM-DD
Retorna:
- Matriz de atividades de natação com métricas resumidas
id: o id da atividade - passe-o comoactivityIdparagetSwimmingActivityDetail- 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 campoidde um resultado degetCyclingActivity)with_dfa_alpha1(opcional): Booleano - adiciona os valores de limiar DFA alpha 1 edurability_driftwith_power_curve(opcional): Booleano - adiciona a curva de pico de potência, % do melhor recente, estrutura de esforço ewithin_session_durabilitywith_time_series_metrics(opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falsoresolution(opcional): amostragem para as matrizes brutas, portanto não tem efeito a menos quewith_time_series_metricsseja 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:
ide 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 umverdictsimples (more_durable,less_durable,typicaloumixed; nulo quando essa métrica tem poucos esforços no pedal para sustentar uma afirmação), e o objeto carrega um vereditooverallentre as métricas que possuem um. Precisa de R-R limpo, portanto está ausente em pedais sem isso
Com with_power_curve:
power_curveepct_of_recent_best(percentual do seu melhor recente em cada duração)effort_structure: tempo gasto por faixa de intensidade e duração do intervalowithin_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_alpha1também estiver definido), amostradas pararesolution
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 campoidde um resultado degetRunningActivity)with_dfa_alpha1(opcional): Booleano - adiciona os valores de limiar DFA alpha 1 edurability_driftwith_power_curve(opcional): Booleano - adiciona as curvas de pico de ritmo GAP e potência de corrida, % do melhor recente, estrutura de esforço ewithin_session_durabilitywith_time_series_metrics(opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falsoresolution(opcional): amostragem para as matrizes brutas (mesma do ciclismo), portanto não tem efeito a menos quewith_time_series_metricsseja verdadeiro
Retorna por padrão:
ide 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, comavg_pace_devicepor 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 mesmoverdictpor métrica e vereditooverallda ferramenta de ciclismo. Precisa de R-R limpo, portanto está ausente em corridas sem isso
Com with_power_curve:
pace_curve,running_power_curveepct_of_recent_besteffort_structure: tempo gasto por faixa de intensidade e duração do intervalowithin_session_durability, dividido por canal (gappara ritmo GAP,powerpara 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 emgap_unit), frequência cardíaca, potência de corrida, altitude, cadência, frequência respiratória (mais os canais a1 quandowith_dfa_alpha1também estiver definido), amostradas pararesolution
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 campoidde um resultado degetSwimmingActivity)with_time_series_metrics(opcional): Booleano - adiciona as matrizes brutas por amostra. Padrão falsoresolution(opcional): amostragem para as matrizes brutas (mesma do ciclismo), portanto não tem efeito a menos quewith_time_series_metricsseja 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 campoidde 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 viastart_s/end_sdas 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 intensidadeheart_rate,cadencee o canal de ritmo:gap_m_per_spara corridas (GAP),pace_m_per_spara nadospacing: médias da primeira vs segunda metade efade_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_zoneesegments
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-DDendDate(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 campoidde um resultado degetCyclingActivity/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 durabilidadeexcludeHrData(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çãoretrain_queued: se a mudança enfileirou um retreinamento do gêmeo digital (excludeFromModeleexcludeHrDatafazem;excludeHrDataadicionalmente 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
getNutritionModelRecupera 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
- O assistente de IA inicia o fluxo OAuth
- O usuário é redirecionado para a página de autorização do AI Endurance
- O usuário faz login com as credenciais do AI Endurance
- O usuário concede acesso ao escopo "read"
- O AI Endurance retorna o código de autorização
- O assistente de IA troca o código pelo token de acesso
- 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 detools/callretorna o JSON em um bloco de textocontente, de forma idêntica, emstructuredContent, que está em conformidade com esse esquema. Resultados comisError: truecarregam a mensagem apenas emcontent. - 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
- Documentação: https://aiendurance.com/docs/mcp
- E-mail de Suporte: info@aiendurance.com
- Site Principal: https://aiendurance.com
- Termos de Uso: https://aiendurance.com/termsofuse
- Política de Privacidade: https://aiendurance.com/privacypolicy
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
structuredContentpara todos os clientes, não apenas ChatGPT. Cada ferramenta declara umoutputSchema, 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 textocontentainda 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ãowith_dfa_alpha1emgetCyclingActivityDetailegetRunningActivityDetail) agora declara sua própria conclusão. Cada métrica carrega umverdict—more_durable,less_durable,typicaloumixed— e o objeto carrega um vereditooverallalém das contagens por trás dele (more_durable,less_durable,counted). Leia esses em vez de derivar uma direção demean_residual_vs_trend: a convenção de sinal é invertida para DFA a1 (maior = menos fadiga), o que é fácil de errar.- O
verdictde uma métrica énullquando essa sessão tem esforços demais insuficientes para sustentar uma afirmação, eoverallestá 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:
getRunningActivityegetRunningActivityDetail:activity_avpace->gradient_adjusted_pace- Voltas
getRunningActivityDetail:avg_pace->avg_pace_device(este é o ritmo BRUTO do relógio, direto do dispositivo — nunca compare comgradient_adjusted_pace) - Arrays brutos
getRunningActivityDetail: o fluxopace/pace_unit->gap/gap_unit analyzeActivityStreamem uma corrida:pace_m_per_s->gap_m_per_s, o segmento/janelaavg_speed_m_per_s->avg_gap_m_per_s, epacing.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 (esse/ouintensityTime), sem criar uma lista de passos. - Ferramenta
changeWorkoutIntensity: redimensiona um treino planejado existente de passeio ou corrida no lugar para um novoesse/ouintensityTime, preservando sua zona de intensidade. Treinos estruturados (steps_general) falham limpo comWORKOUT_HAS_NO_STEPSe 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,getRunningActivityegetSwimmingActivityagora carrega seuid. Passe-o comoactivityIdpara a ferramenta de detalhe correspondente ou parasetActivityFlags. Anteriormente, nenhuma resposta expunha um id, então as ferramentas de detalhe esetActivityFlagsnão podiam ser chamadas a partir de um resultado de lista. with_dfa_alpha1emgetCyclingActivityDetailegetRunningActivityDetail: os valores de limite do DFA alpha 1 maisdurability_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_curvenas mesmas duas ferramentas: a curva de potência/ritmo de pico, percentual do seu melhor recente, o resumo da estrutura de esforço ewithin_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_metricsem 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_metricspor amostra por padrão — definawith_time_series_metricspara 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. resolutionafeta apenas os arrays brutos, então é um no-op a menos quewith_time_series_metricsesteja 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
activityIdretornava 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, definirisIndoormanté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 paraexcludeHrData). - Os campos de flag agora são retornados em toda atividade em
getCyclingActivity,getRunningActivitye 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
fullDetailsemgetPlannedWorkouts: retorna a estrutura de passos legível por máquina e intervalos de natação sem truncamento. - Parâmetro
with_dfa_alpha1emgetCyclingActivityegetRunningActivity: retorna os campos DFA alpha 1 e de limite. - Parâmetro
days_backemgetRecoveryModel: 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:
getPlannedWorkoutsretorna descrições de treino legíveis por humanos mais uma flaghas_steps_generalem vez da estrutura completa de passos;getCyclingActivityegetRunningActivityretornam 20 atividades sem um intervalo de datas (40 com um) e omitem os campos DFA alpha 1;getRecoveryModelretorna 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-VersioneMCP-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_promptadicionado à saída da ferramentagetUserpara 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
- Perfil e Configurações:
- 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.