evo-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@evo-mcpauthorize entry for member 12345"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 à academiaget_turnstiles- Lista catracas disponíveis
Gestão de Membros
get_member_profile- Busca perfil de um membroget_members- Lista todos os membros ativosauthenticate_member- Autentica membros com email/senhaupdate_member_card- Atualiza número do cartãoblock_unblock_member- Bloqueia/desbloqueia membros
Atividades e Cronograma
get_activities- Lista atividades disponíveisget_activity_schedule- Busca cronograma de atividadesenroll_member_in_activity- Inscreve membros em atividadesget_activity_spots- Verifica vagas disponíveis
Vendas e Carrinhos
get_cart- Busca carrinho por tokencreate_cart- Cria novo carrinhoget_sales- Lista vendas por períodocreate_sale- Cria nova venda
Treinos
get_workouts- Busca treinos de clienteslink_workout_to_client- Vincula treino ao clienteupdate_workout- Atualiza dados do treino
Utilitários
health_check- Verifica status da APIget_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
Clone o repositório e instale as dependências:
git clone <seu-repositorio>
cd evo-mcp
npm installConfigure as variáveis de ambiente:
cp env.example .envEdite 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-A20A0462F1E4Compile o projeto:
npm run build🚀 Como usar
Executar localmente
npm startExecutar em modo desenvolvimento
npm run dev🔧 Configuração no n8n
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"
}
}
}
}Reinicie o n8n
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 installnovamenteLimpe a pasta
diste 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
Fork o projeto
Crie uma branch para sua feature
Commit suas mudanças
Push para a branch
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 toolsauthenticate_memberC
Autentica um membro com email e senha
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email do membro | ||
| password | Yes | Senha do membro |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Tipo de dispositivo: 1=Digital, 2=QR Code, 3=Facial, 4=Teclado | |
| userId | Yes | ID do usuário | |
| climateId | No | ID do clima (opcional): 1=Ensolarado, 2=Frio, 3=Chuva, 4=Tempestades, 5=Neve, 6=Nublado, 7=Ventoso | |
| personType | Yes | Tipo de pessoa: 1=Cliente, 2=Oportunidade, 3=Colaborador, 4=Personal | |
| temperature | No | Temperatura (opcional) | |
| turnstileId | Yes | ID da catraca |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | No | ID do membro (opcional) | |
| prospectId | No | ID do prospecto (opcional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | Yes | ID do membro | |
| scheduleId | Yes | ID do horário da atividade |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| cartToken | Yes | Token do carrinho |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | Yes | ID do membro |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| branchId | No | ID da filial (opcional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Data de fim (YYYY-MM-DD) | |
| startDate | No | Data de início (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Ano (opcional) | |
| month | No | Mês (1-12, opcional) | |
| clientId | No | ID do cliente (opcional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
v1.0.0- First observed
authenticate_member - First observed
authorize_entry - First observed
create_cart - First observed
enroll_member_in_activity - First observed
get_activities - First observed
get_activity_schedule - First observed
get_cart - First observed
get_member_profile - First observed
get_members - First observed
get_sales - First observed
get_workouts - First observed
health_check
TDQS
Scored across 12 tools
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.
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.
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.
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
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
MCP server for Zooza — class scheduling, attendance, and booking for activity businesses.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn 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.-
- FlicenseBqualityDmaintenanceMCP server for Aidoo fitness studio management software, enabling access to members, contracts, classes, bookings, and more directly from Claude.25-
- FlicenseBqualityDmaintenanceMCP server for interacting with the Eventin booking system, enabling natural language management of bookings, events, and venues.2-
- AlicenseAqualityDmaintenanceAn MCP server that interfaces with the Hevy fitness tracking API, enabling AI assistants to manage workouts, routines, exercise templates, and more via natural language.2658,400 npmMIT