Skip to main content
Glama

MCP EVO - Model Context Protocol para Academia EVO

Este projeto implementa um servidor MCP (Model Context Protocol) para integração com a API EVO, permitindo que você use todas as funcionalidades da academia diretamente no n8n ou outros clientes MCP.

🚀 Funcionalidades

Controle de Acesso

  • authorize_entry - Autoriza ou nega acesso de usuários à academia

  • get_turnstiles - Lista catracas disponíveis

Gestão de Membros

  • get_member_profile - Busca perfil de um membro

  • get_members - Lista todos os membros ativos

  • authenticate_member - Autentica membros com email/senha

  • update_member_card - Atualiza número do cartão

  • block_unblock_member - Bloqueia/desbloqueia membros

Atividades e Cronograma

  • get_activities - Lista atividades disponíveis

  • get_activity_schedule - Busca cronograma de atividades

  • enroll_member_in_activity - Inscreve membros em atividades

  • get_activity_spots - Verifica vagas disponíveis

Vendas e Carrinhos

  • get_cart - Busca carrinho por token

  • create_cart - Cria novo carrinho

  • get_sales - Lista vendas por período

  • create_sale - Cria nova venda

Treinos

  • get_workouts - Busca treinos de clientes

  • link_workout_to_client - Vincula treino ao cliente

  • update_workout - Atualiza dados do treino

Utilitários

  • health_check - Verifica status da API

  • get_configuration - Busca configurações da filial

Related MCP server: aidoo-mcp-server

📋 Pré-requisitos

  • Node.js 18+

  • npm ou yarn

  • Acesso à API EVO com credenciais válidas

🛠️ Instalação

  1. Clone o repositório e instale as dependências:

git clone <seu-repositorio>
cd evo-mcp
npm install
  1. Configure as variáveis de ambiente:

cp env.example .env

Edite o arquivo .env com suas credenciais:

EVO_API_URL=https://evo-integracao-api.w12app.com.br
EVO_DNS=a2academia
EVO_TOKEN=DA67E8B5-0628-40C2-B586-A20A0462F1E4
  1. Compile o projeto:

npm run build

🚀 Como usar

Executar localmente

npm start

Executar em modo desenvolvimento

npm run dev

🔧 Configuração no n8n

  1. Adicione a configuração MCP no seu n8n:

{
  "mcpServers": {
    "evo": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/caminho/para/seu/projeto/evo-mcp",
      "env": {
        "EVO_API_URL": "https://evo-integracao-api.w12app.com.br",
        "EVO_DNS": "a2academia",
        "EVO_TOKEN": "DA67E8B5-0628-40C2-B586-A20A0462F1E4"
      }
    }
  }
}
  1. Reinicie o n8n

  2. Use as ferramentas MCP nos seus workflows:

    • Controle de acesso automático

    • Gestão de membros

    • Agendamento de atividades

    • Relatórios de vendas

    • Gestão de treinos

📖 Exemplos de Uso

Autorizar Entrada de Membro

{
  "tool": "authorize_entry",
  "arguments": {
    "userId": 12345,
    "personType": 1,
    "device": 2,
    "turnstileId": 202,
    "temperature": 36.5,
    "climateId": 1
  }
}

Buscar Perfil de Membro

{
  "tool": "get_member_profile",
  "arguments": {
    "memberId": 12345
  }
}

Listar Atividades

{
  "tool": "get_activities",
  "arguments": {}
}

🔒 Segurança

  • Nunca compartilhe seu token EVO

  • Use variáveis de ambiente para credenciais

  • Mantenha o projeto atualizado

  • Monitore logs de acesso

🐛 Troubleshooting

Erro de Conexão

  • Verifique se a API EVO está acessível

  • Confirme se o DNS e token estão corretos

  • Teste com health_check

Erro de Compilação

  • Verifique se o Node.js está na versão 18+

  • Execute npm install novamente

  • Limpe a pasta dist e recompile

Erro no n8n

  • Verifique se o caminho do MCP está correto

  • Confirme se as variáveis de ambiente estão definidas

  • Verifique os logs do n8n

📝 Logs

O MCP registra todas as operações:

  • Requisições à API EVO

  • Respostas e erros

  • Status de conexão

  • Operações realizadas

🤝 Contribuição

  1. Fork o projeto

  2. Crie uma branch para sua feature

  3. Commit suas mudanças

  4. Push para a branch

  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🆘 Suporte

Para suporte técnico:

  • Abra uma issue no GitHub

  • Consulte a documentação da API EVO

  • Verifique os logs de erro


Desenvolvido para integração com a API EVO - Sistema de Gestão para Academias

Available Tools

12 tools
authenticate_memberC

Autentica um membro com email e senha

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail do membro
passwordYesSenha do membro

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 behavioral burden and does not discharge it. It says nothing about what authentication produces (token, session, cookie), how failures are surfaced, rate limiting, or whether credentials are cached.

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?

A single short sentence with zero filler, front-loading the verb and resource. It is appropriately sized for the amount of content present, though that content is thin.

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?

No output schema and no annotations exist, so the description should explain what a successful authentication returns and how the agent should use it for subsequent calls. That critical detail is missing for what is a foundational auth tool.

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% and both parameters are documented in the schema itself, so the description only restates 'email e senha' without adding format or constraint detail. Baseline 3 applies 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?

Names a specific verb (Autentica) and resource (membro) with the credential inputs, so the agent knows it validates a member's identity. It does not differentiate itself from the sibling authorize_entry, which likely has an overlapping authorization role, leaving some ambiguity about which to call.

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 when-to-use guidance, no prerequisites, and no mention of the alternatives (authorize_entry, get_member_profile). While 'authenticate' is fairly self-explanatory, the presence of a similarly named sibling makes explicit routing guidance valuable and it is absent.

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

authorize_entryC

Autoriza ou nega acesso de um usuário à academia

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesTipo de dispositivo: 1=Digital, 2=QR Code, 3=Facial, 4=Teclado
userIdYesID do usuário
climateIdNoID do clima (opcional): 1=Ensolarado, 2=Frio, 3=Chuva, 4=Tempestades, 5=Neve, 6=Nublado, 7=Ventoso
personTypeYesTipo de pessoa: 1=Cliente, 2=Oportunidade, 3=Colaborador, 4=Personal
temperatureNoTemperatura (opcional)
turnstileIdYesID da catraca

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It does not disclose whether the call physically opens a turnstile, logs an access event, requires prior authentication, or what the decision response looks like — all critical for an access-control mutation. 'Autoriza ou nega' implies a decision but not its side effects.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though almost too terse for the complexity of the operation.

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?

With 6 parameters (4 required), no annotations, and no output schema, the description should explain the decision outcome and side effects. Instead it gives one sentence, leaving the agent without enough to call the tool confidently or interpret its result.

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 clear enum labels (device, personType, climateId) and descriptions, so the schema does the heavy lifting. The description adds no parameter meaning beyond that, which is the expected baseline when coverage is complete.

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 states a specific action and outcome: authorizing or denying a user's access to the gym. However, it does not differentiate this tool from the sibling authenticate_member, which an agent could easily confuse with it, so it falls short of a 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?

There is no guidance on when to call this tool versus authenticate_member or get_member_profile, no prerequisites, and no statement of what the caller is expected to supply as a pre-check. The agent must infer usage entirely.

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

create_cartC

Cria um novo carrinho de compras

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdNoID do membro (opcional)
prospectIdNoID do prospecto (opcional)

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 behavioral burden, yet it only restates that a cart is created. It says nothing about whether memberId or prospectId is required, whether the call is idempotent, what happens to an existing cart, or what authorization is needed.

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?

A single front-loaded sentence with no wasted words. It is efficient but so terse that useful context is omitted rather than trimmed.

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 no annotations and no output schema, the definition is under-specified: it omits prerequisites, side effects, and what the created cart contains. The description is too thin to guide correct invocation.

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 coverage is 100% and both parameters are documented as optional, so the baseline is 3. The description adds no meaning about the relationship or mutual exclusivity between memberId and prospectId, so it earns no credit above baseline.

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?

States a specific verb and resource ('Cria um novo carrinho de compras'), which lets an agent distinguish it from the read-oriented sibling get_cart. It does not explicitly name or contrast with any sibling, so it stops short of a 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?

No indication of when to create a cart versus using get_cart, nor any prerequisites such as requiring a member or prospect to exist. The agent must infer all usage context 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.

enroll_member_in_activityC

Inscreve um membro em uma atividade

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdYesID do membro
scheduleIdYesID do horário da atividade

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden yet discloses nothing beyond the implied mutating verb. It omits whether the member or schedule must already exist, capacity/limit rules, idempotency, permission requirements, or what failure looks like.

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

Conciseness3/5

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

A single short sentence with no waste, but it is terse to the point of being under-specified rather than genuinely well-structured. Nothing is front-loaded because there is essentially nothing to front-load.

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 two-parameter mutation with no annotations and no output schema, the description is far too thin. An agent cannot determine preconditions, side effects, or error behavior for an enrollment operation from this text.

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 both memberId and scheduleId are already documented in the schema. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose2/5

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

The description is a near-verbatim restatement of the tool name ('enroll_member_in_activity' → 'Inscreve um membro em uma atividade'). It confirms a verb+resource but adds no scope, mode, or differentiation from siblings like authorize_entry or create_cart.

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?

There is no indication of when to use this tool versus alternatives (e.g., authorize_entry), no prerequisites, and no exclusions. The agent receives no routing guidance at all.

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

get_activitiesB

Lista todas as atividades disponíveis na academia

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 the full burden of behavioral disclosure. It doesn't mention whether this is a read-only operation, what the return format looks like, or any other behavioral traits. The minimal description provides little beyond the basic action.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the essential information without any unnecessary 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?

For a tool with no parameters, no annotations, and no output schema, the description is quite sparse. It doesn't explain what 'atividades' includes, how they are returned, or any usage constraints, leaving significant gaps for an agent to call it correctly.

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

Parameters4/5

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

The tool has no parameters, so the baseline score of 4 applies. The description doesn't need to explain parameters, and it correctly doesn't.

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 states a clear verb (Lista) and resource (atividades), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from siblings, but the resource name is somewhat distinct.

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 given on when to use this tool versus alternatives like get_activity_schedule. The description merely states what it does, leaving the agent to infer appropriate usage contexts.

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

get_activity_scheduleB

Busca o cronograma de atividades da academia

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?

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it says nothing about authentication requirements, return format, or whether the schedule is filtered by member/date. For a no-parameter tool the risk is low, but the description still adds no behavioral context.

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?

A single short sentence with no filler and the resource front-loaded. It is appropriately sized, though the very terse phrasing leans toward under-specification rather than optimal conciseness.

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

Completeness3/5

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

For a simple zero-parameter read tool with no output schema, the description is minimally viable but leaves open how it differs from get_activities and whether any auth or scoping applies. Nothing is seriously misleading, but an agent has unanswered questions.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond the empty schema, which is itself complete at 100% 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 states a specific verb ('Busca') and resource ('cronograma de atividades da academia'), so an agent knows it retrieves the gym's activity schedule. However, it does not distinguish itself from the sibling tool get_activities, which sounds like it could return overlapping 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?

There is no guidance on when to call this tool versus get_activities or get_workouts, no prerequisites, and no exclusions. The agent must infer usage purely from the name.

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

get_cartC

Busca um carrinho de compras pelo token

ParametersJSON Schema
NameRequiredDescriptionDefault
cartTokenYesToken do carrinho

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 implies a read ('Busca') but says nothing about authentication requirements, what happens on an invalid/expired token, whether the cart is mutated, or what the response contains.

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?

A single front-loaded sentence with zero filler. It is efficient, though so terse that it forgoes the context a slightly longer description could have provided.

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

Completeness3/5

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

For a simple one-parameter read against a fully described schema, the description is minimally adequate. With no annotations and no output schema, it leaves the auth/prerequisite and failure behavior gaps that the structured fields cannot fill.

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 single cartToken parameter is already documented. The description only restates that lookup is 'pelo token' and does not clarify the token's origin or format, so it adds no meaning beyond 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?

States a specific verb and resource ('Busca um carrinho de compras') plus the lookup key ('pelo token'), which lets an agent distinguish it from create_cart among the siblings. It is clear but does not explicitly name the sibling it complements or the write counterpart.

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 when-to-use or when-not-to-use guidance. The only routing signal is implicit (read via token vs. create_cart), and the description never says whether the token must come from create_cart or an authorize_entry flow.

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

get_member_profileC

Busca o perfil de um membro da academia

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdYesID do membro

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 behavioral burden. It implies a read, but does not state whether the operation is read-only, whether authorization as a member is required, what happens for a nonexistent memberId, or what data the profile contains. For a tool with zero annotation coverage this is a notable gap.

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?

A single short sentence with no filler, front-loading verb and resource. It is efficient, though its brevity is partly a symptom of missing guidance rather than disciplined trimming.

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

Completeness3/5

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

For a one-parameter read tool with no output schema, the description is minimally viable: the agent can call it with just memberId. But with no annotations and no indication of auth requirements or return shape, it falls short of complete.

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

Parameters3/5

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

Schema description coverage is 100% — memberId is typed as a number and documented as 'ID do membro' in the schema itself. The description adds no format, range, or sourcing detail beyond that, so the baseline 3 applies.

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 states a specific verb and resource ('Busca o perfil de um membro da academia'), so the agent knows it retrieves a single member's profile. It does not, however, distinguish itself from the sibling get_members (plural list) or explain the singular-vs-plural distinction.

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?

There is no when-to-use guidance, no mention of prerequisites (e.g., authentication) and no routing to or away from siblings such as get_members. The agent must infer from the name alone that this is the single-record lookup.

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

get_membersC

Lista todos os membros ativos da academia

ParametersJSON Schema
NameRequiredDescriptionDefault
branchIdNoID da filial (opcional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses only one behavioral trait — the implicit 'ativos' filter — and says nothing about pagination, result size, ordering, or required permissions for a list endpoint that could return a large collection.

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?

One short, front-loaded sentence with no filler. It is efficient, though its brevity is partly a symptom of the missing behavioral and usage detail rather than deliberate tightness.

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

Completeness3/5

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

For a simple no-annotation read/list tool with a fully documented single optional parameter and no output schema, the description is minimally adequate. It omits pagination and return-shape expectations, which an agent calling a collection endpoint would benefit from knowing.

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 single optional branchId parameter is already documented in the schema. The description adds no syntax, default, or scoping detail beyond that, which is the baseline case for fully covered schemas.

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 states a specific verb and resource: 'Lista todos os membros ativos da academia' (lists all active members of the gym). The plural 'membros' and singular sibling 'get_member_profile' imply a collection-vs-individual distinction, but the description never explicitly routes the agent against that sibling.

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?

There is no when-to-use guidance, no mention of alternatives such as get_member_profile, and no stated preconditions. The agent must infer that this is the bulk-list tool from the plural noun alone.

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

get_salesC

Busca vendas por período

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoData de fim (YYYY-MM-DD)
startDateNoData de início (YYYY-MM-DD)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Busca' implies a read, but there is no statement about permissions, pagination, default date range behavior, or result size limits.

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

Conciseness3/5

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

A single short sentence that is front-loaded and waste-free, but at this length it borders on under-specification rather than genuine 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?

With no annotations and no output schema, the description should at least describe the return shape and what happens when the non-required date parameters are omitted. Neither is addressed, leaving a real gap for a tool whose two params are optional.

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% and both parameters already document their YYYY-MM-DD format, so the schema does the heavy lifting. The description adds only the notion of a period filter, which is baseline-level 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?

States a specific verb and resource ('Busca vendas') plus the filtering dimension ('por período'), so the purpose is unambiguous. It does not differentiate from any sibling, but no sibling in the list is sales-related, so the risk of confusion is low.

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?

Contains no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent gets the what but nothing about the context in which this is the right call.

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

get_workoutsC

Busca treinos de um cliente

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoAno (opcional)
monthNoMês (1-12, opcional)
clientIdNoID do cliente (opcional)

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. It doesn't state whether this is a read-only operation, what happens with missing parameters, or any constraints like rate limits. For a retrieval 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, efficient sentence with no waste. It is front-loaded and directly states the tool's function.

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 should do more to explain the return format, pagination, or filtering behavior. It is incomplete for a tool with three optional parameters and no structured behavioral hints.

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 (year, month, clientId) with their types and optional status. The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

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 a clear verb (busca) and resource (treinos de um cliente), so the purpose is understandable. However, it's very terse and doesn't differentiate from sibling tools like get_activities, which might also return workout-like data. It leaves ambiguity about what a 'treino' includes versus an 'activity'.

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?

There is no guidance on when to use this tool versus alternatives such as get_activities or get_activity_schedule. No context about prerequisites, such as whether clientId is necessary for a meaningful search, is provided.

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

health_checkB

Verifica o status da API EVO

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 behavioral burden. It implies a read-only probe but never says what is checked, what a failure looks like, or whether the call has side effects or rate limits.

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

Conciseness5/5

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

A single short sentence with no filler, front-loading the verb and the target resource. Nothing could be trimmed without losing meaning.

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?

With no parameters, no annotations, and no output schema, the description is nearly the entire contract. It says what it checks but not what it returns (status codes, uptime, dependency checks), which an agent invoking a health endpoint would want.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there are no parameter semantics to document. Baseline 4 applies since nothing is missing on this dimension.

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?

States a specific verb ('Verifica') and resource ('status da API EVO'), so the agent knows this is a service-health probe. It is clearly distinguishable from every sibling, which all deal with member, activity, cart, or sales data. It lacks any further scope detail (e.g. which API surface), so it stops short of a 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?

There is no guidance on when to call this tool, what a healthy vs unhealthy result implies, or how it relates to the other operations. For a diagnostic tool that is the point of the call, that omission matters.

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

Tool Schema Changelog

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

  1. 12 tool updatesv1.0.0
    • First observedauthenticate_member
    • First observedauthorize_entry
    • First observedcreate_cart
    • First observedenroll_member_in_activity
    • First observedget_activities
    • First observedget_activity_schedule
    • First observedget_cart
    • First observedget_member_profile
    • First observedget_members
    • First observedget_sales
    • First observedget_workouts
    • First observedhealth_check

TDQS

B3.1/5.0

Scored across 12 tools

Disambiguation4/5

Tools target mostly distinct resources and actions—member lookup, authentication, entry authorization, activities, carts, sales, and workouts are separable. Minor potential overlap exists between authenticate_member and authorize_entry, and between member listing and profile retrieval, but descriptions clarify the boundaries.

Naming Consistency4/5

Mostly snake_case with a verb_noun pattern (get_members, create_cart, enroll_member_in_activity), but health_check is a noun phrase and authorize_entry/authenticate_member vary slightly from the get_* style. Overall still readable and mostly predictable.

Tool Count5/5

12 tools is well-scoped for a gym/member API, with each tool mapping to a plausible operation. There is no obvious redundancy or excessive surface area.

Completeness3/5

The set covers read paths for members, activities, schedules, workouts, and sales, plus cart creation/retrieval, enrollment, entry authorization, and health checks. However, it lacks update/delete operations for members and activities, and cart item/checkout operations, leaving notable lifecycle gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects AI clients to the Hevy workout tracking app, allowing users to manage routines and exercises. It enables reading workout history and logging new fitness sessions through simple natural language commands.
    -
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for Aidoo fitness studio management software, enabling access to members, contracts, classes, bookings, and more directly from Claude.
    25
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that interfaces with the Hevy fitness tracking API, enabling AI assistants to manage workouts, routines, exercise templates, and more via natural language.
    26
    58,400 npm
    MIT