Skip to main content
Glama

FitSlot MCP Server

MCP (Model Context Protocol) server para integração com a API FitSlot, fornecendo funcionalidades de:

  • 🎫 Gerenciamento de tickets de suporte

  • 🤖 Chatbot com FAQs para suporte aos usuários

  • 📊 Análise de documentos PDF de bioimpedância

🚀 Características

Gestão de Tickets

  • Criar novos tickets de suporte

  • Listar tickets por usuário e status

  • Atualizar tickets existentes

  • Fechar tickets resolvidos

Suporte via Chatbot

  • Busca inteligente em base de FAQs

  • Respostas contextualizadas com ações sugeridas

  • Categorização de perguntas frequentes

  • Suporte em português

Análise de Bioimpedância

  • Extração automática de dados de PDFs

  • Análise de composição corporal

  • Cálculo de IMC e métricas de saúde

  • Recomendações personalizadas baseadas nos dados

📋 Requisitos

  • Node.js 18+ ou superior

  • npm ou yarn

🔧 Instalação

# Clonar o repositório
git clone https://github.com/osmarsant/fitslot-mcp.git
cd fitslot-mcp

# Instalar dependências
npm install

# Compilar o projeto
npm run build

⚙️ Configuração

Configure as variáveis de ambiente criando um arquivo .env na raiz do projeto:

# URL da API FitSlot
FITSLOT_API_URL=https://api.fitslot.com

# Chave de API (opcional)
FITSLOT_API_KEY=sua_chave_api_aqui

# Timeout para requisições (em ms)
FITSLOT_API_TIMEOUT=30000

# Nível de log (DEBUG, INFO, WARN, ERROR)
LOG_LEVEL=INFO

🎯 Uso

Desenvolvimento

npm run dev

Produção

npm start

Como Servidor MCP

Para usar com Claude Desktop ou outras aplicações MCP, adicione ao arquivo de configuração:

{
  "mcpServers": {
    "fitslot": {
      "command": "node",
      "args": ["/caminho/para/fitslot-mcp/dist/index.js"],
      "env": {
        "FITSLOT_API_URL": "https://api.fitslot.com",
        "FITSLOT_API_KEY": "sua_chave_aqui"
      }
    }
  }
}

🛠️ Ferramentas Disponíveis

Tickets

create_ticket

Cria um novo ticket de suporte.

Parâmetros:

  • title (string): Título do ticket

  • description (string): Descrição detalhada do problema

  • priority (enum): Prioridade - low, medium, high, urgent

  • userId (string): ID do usuário

list_tickets

Lista todos os tickets de um usuário.

Parâmetros:

  • userId (string): ID do usuário

  • status (enum, opcional): Filtrar por status - open, in_progress, resolved, closed

get_ticket

Obtém detalhes de um ticket específico.

Parâmetros:

  • ticketId (string): ID do ticket

update_ticket

Atualiza um ticket existente.

Parâmetros:

  • ticketId (string): ID do ticket

  • status (enum, opcional): Novo status

  • description (string, opcional): Nova descrição

  • priority (enum, opcional): Nova prioridade

close_ticket

Fecha um ticket.

Parâmetros:

  • ticketId (string): ID do ticket

Chatbot

ask_support

Faz uma pergunta ao suporte e recebe respostas com FAQs relacionadas.

Parâmetros:

  • query (string): Pergunta ou consulta do usuário

search_faqs

Busca FAQs por palavras-chave.

Parâmetros:

  • query (string): Termo de busca

  • limit (number, opcional): Número máximo de resultados (padrão: 5)

get_faq_categories

Lista todas as categorias de FAQs disponíveis.

get_faqs_by_category

Lista FAQs de uma categoria específica.

Parâmetros:

  • category (string): Nome da categoria

get_all_faqs

Retorna todas as FAQs disponíveis.

Análise de PDF

analyze_bioimpedance_pdf

Analisa um arquivo PDF de bioimpedância.

Parâmetros:

  • filePath (string): Caminho absoluto para o arquivo PDF

analyze_bioimpedance_pdf_base64

Analisa um PDF de bioimpedância a partir de dados base64.

Parâmetros:

  • base64Data (string): Dados do PDF codificados em base64

  • patientId (string, opcional): ID do paciente para referência

📁 Estrutura do Projeto

fitslot-mcp/
├── src/
│   ├── index.ts              # Servidor MCP principal
│   ├── services/             # Camada de serviços
│   │   ├── fitslot-api.service.ts
│   │   ├── chatbot.service.ts
│   │   └── pdf-analysis.service.ts
│   ├── tools/                # Ferramentas MCP
│   │   ├── ticket.tools.ts
│   │   ├── chatbot.tools.ts
│   │   └── pdf.tools.ts
│   ├── types/                # Definições de tipos TypeScript
│   │   └── index.ts
│   └── utils/                # Utilitários
│       ├── logger.ts
│       └── validation.ts
├── dist/                     # Código compilado
├── package.json
├── tsconfig.json
└── README.md

🏗️ Arquitetura

O projeto segue as melhores práticas de engenharia de software:

  • TypeScript: Tipagem forte e segurança em tempo de compilação

  • Arquitetura em camadas: Separação clara entre serviços, ferramentas e utilitários

  • Logging estruturado: Sistema de logs com níveis configuráveis

  • Validação de entrada: Validação rigorosa de todos os inputs

  • Tratamento de erros: Gestão robusta de erros em todas as camadas

  • Código limpo: Código bem documentado e fácil de manter

🔒 Segurança

  • Validação de todas as entradas do usuário

  • Sanitização de dados para prevenir injeções

  • Gestão segura de credenciais via variáveis de ambiente

  • Tratamento adequado de erros sem expor informações sensíveis

📝 Exemplos de Uso

Criar um Ticket

{
  "tool": "create_ticket",
  "arguments": {
    "title": "Problema no agendamento",
    "description": "Não consigo agendar horário para sexta-feira",
    "priority": "high",
    "userId": "user123"
  }
}

Buscar Suporte

{
  "tool": "ask_support",
  "arguments": {
    "query": "Como faço para cancelar um agendamento?"
  }
}

Analisar PDF

{
  "tool": "analyze_bioimpedance_pdf",
  "arguments": {
    "filePath": "/caminho/para/documento.pdf"
  }
}

🤝 Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do projeto

  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)

  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')

  4. Push para a branch (git push origin feature/MinhaFeature)

  5. Abra um Pull Request

📄 Licença

ISC

📞 Suporte

Para suporte, abra uma issue no repositório ou entre em contato através dos canais oficiais do FitSlot.

Available Tools

12 tools
analyze_bioimpedance_pdfC

Analyze a bioimpedance PDF document and extract health metrics with recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYes

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 burden of behavioral disclosure. It mentions analysis and extraction but lacks details on what happens during processing (e.g., whether it modifies the file, requires specific permissions, has rate limits, or returns structured data). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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 that front-loads the core action and outcome without unnecessary words. Every part earns its place by specifying the resource, action, and result, making it appropriately sized for the tool's complexity.

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 tool's complexity (analyzing PDFs for health data), no annotations, no output schema, and minimal parameter details, the description is incomplete. It doesn't explain what health metrics are extracted, the format of recommendations, error handling, or dependencies, leaving the agent with insufficient context for reliable use.

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?

The description implies a PDF file is needed but doesn't add meaning beyond the input schema, which has 0% description coverage. The schema only documents 'filePath' as an absolute path, and the description doesn't elaborate on file requirements (e.g., format specifics, size limits) or how the analysis works. With one parameter and low schema coverage, the description provides minimal compensation, meeting the 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?

The description clearly states the verb 'analyze' and resource 'bioimpedance PDF document', along with the outcome 'extract health metrics with recommendations'. It distinguishes from sibling tools like 'analyze_bioimpedance_pdf_base64' by specifying the input format (PDF file vs. base64), but doesn't explicitly differentiate from other unrelated siblings like ticket or FAQ tools.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'analyze_bioimpedance_pdf_base64' (e.g., for local files vs. encoded data) or other siblings, nor does it specify prerequisites like file format requirements or when this analysis is appropriate.

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

analyze_bioimpedance_pdf_base64C

Analyze a bioimpedance PDF document from base64-encoded data

ParametersJSON Schema
NameRequiredDescriptionDefault
base64DataYes
patientIdNo

TDQS

C2.8/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 burden of behavioral disclosure but only states what the tool does without detailing how it behaves. It doesn't mention whether this is a read-only analysis, if it modifies data, what the output format might be, potential errors, or any performance considerations like rate limits or processing time.

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 that front-loads the core functionality without any wasted words. It's appropriately sized for a tool with a straightforward purpose, making it easy to parse quickly.

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 complexity of analyzing a bioimpedance PDF (which likely involves extracting and interpreting medical data), no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't address what the analysis entails, what results to expect, or any domain-specific considerations, leaving significant gaps for an AI agent to operate effectively.

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

Parameters2/5

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

The description mentions 'base64-encoded data' but doesn't add meaning beyond what the input schema's parameter names imply. With 0% schema description coverage, the description fails to compensate by explaining the purpose of 'base64Data' or 'patientId', leaving the agent to guess their roles based on naming alone.

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 clearly states the action ('analyze') and the resource ('bioimpedance PDF document from base64-encoded data'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'analyze_bioimpedance_pdf', which likely handles a different input format, leaving some ambiguity about when to choose one over the other.

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?

The description provides no guidance on when to use this tool versus alternatives, such as the sibling 'analyze_bioimpedance_pdf' or other document analysis tools. It lacks context about prerequisites, typical use cases, or any exclusions, leaving the agent to infer usage based on the tool name alone.

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

ask_supportC

Ask a support question and get helpful responses with related FAQs and suggested actions

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

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 burden of behavioral disclosure. It mentions the tool returns 'helpful responses with related FAQs and suggested actions', but it doesn't clarify operational aspects like whether this is a read-only query, if it requires authentication, rate limits, or error handling. This leaves significant gaps for a tool that likely interacts with support systems.

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 that front-loads the core action and outcome without unnecessary words. Every part of the sentence contributes directly to understanding the tool's function, making it highly concise and well-structured.

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 tool's complexity (interactive support querying), lack of annotations, no output schema, and minimal parameter semantics, the description is insufficient. It doesn't explain the response format, potential errors, or how it integrates with sibling tools, leaving the agent with incomplete information for reliable use.

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?

The input schema has 1 parameter with 0% description coverage, so the schema provides no semantic details. The description adds some context by stating the parameter is for 'The user's question or support query', but this is minimal and doesn't elaborate on format, length constraints, or examples. This partial compensation aligns with a baseline score.

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 clearly states the tool's purpose with a specific verb ('ask') and resource ('support question'), and it explains what the tool provides in return ('helpful responses with related FAQs and suggested actions'). However, it doesn't explicitly distinguish this tool from sibling tools like 'search_faqs' or 'create_ticket', which limits the score.

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?

The description provides no guidance on when to use this tool versus alternatives such as 'search_faqs' for FAQ lookups or 'create_ticket' for formal support requests. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred.

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

close_ticketB

Close a ticket by setting its status to closed

ParametersJSON Schema
NameRequiredDescriptionDefault
ticketIdYes

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. It states the tool performs a mutation ('close'), implying it changes data, but doesn't cover critical aspects like permissions required, whether the action is reversible, side effects (e.g., notifications sent), or error handling. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 that directly states the tool's function without unnecessary words. It is front-loaded with the core action, making it easy to parse. Every part of the sentence contributes to understanding the purpose, with zero waste.

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 tool's complexity (a mutation with no annotations, 1 parameter, no output schema), the description is incomplete. It lacks details on behavioral traits (e.g., permissions, reversibility), usage context, and expected outcomes. For a tool that modifies data, this minimal description leaves too many gaps for effective agent use.

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 input schema has 1 parameter with 0% description coverage, but the description adds no explicit parameter information. However, with only 1 parameter, the baseline is high (4) as the tool's purpose inherently clarifies the parameter's role ('ticketId' is the ticket to close). The description doesn't add syntax or format details, but the simplicity compensates for the lack of schema descriptions.

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 clearly states the action ('close') and resource ('a ticket'), specifying the method ('by setting its status to closed'). It distinguishes from siblings like 'create_ticket' and 'update_ticket' by focusing on closure, though it doesn't explicitly contrast with 'update_ticket' which might also modify status. The purpose is specific but could be more differentiated.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., ticket must be open), exclusions, or comparisons to siblings like 'update_ticket' (which might handle status changes more broadly). Usage is implied only by the action, with no explicit context or alternatives stated.

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

create_ticketC

Create a new support ticket in the FitSlot system

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
descriptionYes
priorityYes
userIdYes

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. It states 'Create a new support ticket,' implying a write/mutation operation, but doesn't disclose behavioral traits like whether it requires authentication, what happens on success (e.g., returns a ticket ID), error conditions, or side effects. This is a significant gap for a mutation tool with zero annotation coverage.

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 wasted words, clearly front-loading the core action. It's appropriately sized for the tool's purpose, making it easy to parse quickly without unnecessary elaboration.

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 complexity of a mutation tool with 4 required parameters, no annotations, and no output schema, the description is incomplete. It lacks crucial details like behavioral context, parameter meanings, and expected outcomes, making it inadequate for an AI agent to use the tool effectively without additional assumptions.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the schema provides no descriptions for parameters. The description adds no information about what the parameters mean beyond their names, failing to compensate for the coverage gap. For example, it doesn't explain what 'priority' levels entail or how 'userId' is obtained, leaving parameters undocumented.

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 clearly states the action ('Create a new support ticket') and the target system ('FitSlot system'), which is specific and unambiguous. It distinguishes from siblings like 'close_ticket' or 'update_ticket' by focusing on creation. However, it doesn't specify what a 'support ticket' entails beyond the basic concept, leaving some ambiguity about the resource's nature.

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?

The description provides no guidance on when to use this tool versus alternatives like 'ask_support' (which might be for queries) or 'update_ticket' (for modifications). It lacks context about prerequisites, such as whether the user must be authenticated or have specific permissions, or when creation is appropriate versus other actions.

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

get_all_faqsB

Get all available FAQs across all categories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 states the action but doesn't describe traits like whether this is a read-only operation, potential rate limits, authentication needs, or what the return format looks like (e.g., list structure, pagination). For a tool with zero annotation coverage, this is a significant gap in transparency.

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, clear sentence with no wasted words, efficiently conveying the core purpose. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

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?

Given the tool's simplicity (0 parameters, no annotations, no output schema), the description adequately covers the basic purpose. However, it lacks details on behavioral aspects like return format or operational constraints, which would be helpful for an agent to use it correctly. It's minimally viable but has clear gaps in context.

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 input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't add parameter details, which is appropriate here. Baseline is 4 for zero parameters, as the description doesn't need to compensate for any schema gaps.

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 clearly states the verb 'Get' and resource 'all available FAQs across all categories', making the purpose specific and understandable. It distinguishes from sibling tools like 'get_faqs_by_category' by emphasizing 'all categories' rather than filtering. However, it doesn't explicitly contrast with 'search_faqs', which might also retrieve FAQs, leaving slight ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying 'all categories', suggesting this tool is for broad retrieval without filtering. However, it doesn't explicitly state when to use this versus alternatives like 'get_faqs_by_category' (for category-specific FAQs) or 'search_faqs' (for keyword-based queries), nor does it mention prerequisites or exclusions, leaving usage context partially inferred.

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

get_faq_categoriesB

Get all available FAQ categories

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 burden of behavioral disclosure. It states the tool retrieves categories but doesn't describe return format (e.g., list structure, pagination), error conditions, or performance characteristics. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 that front-loads the core purpose without unnecessary words. It's appropriately sized for a simple tool with no parameters, making it easy to parse quickly. Every word earns its place by conveying essential information.

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?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks depth. It doesn't explain what 'FAQ categories' entail or how results are structured, which could help an agent use the output effectively. For a basic read tool, it meets the minimum but doesn't provide rich context.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is given since the schema fully handles parameters, and the description doesn't need to compensate.

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 clearly states the action ('Get') and resource ('all available FAQ categories'), making the purpose immediately understandable. It distinguishes from siblings like 'get_all_faqs' (which gets FAQ items) and 'get_faqs_by_category' (which filters by category), though it doesn't explicitly mention these distinctions. The description avoids tautology by specifying what is being retrieved.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_all_faqs' or 'search_faqs'. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage based on tool names alone. This lack of explicit guidance reduces effectiveness in tool selection.

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

get_faqs_by_categoryB

Get all FAQs for a specific category

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but reveals minimal behavioral traits. It states it 'gets' FAQs (likely a read operation) but doesn't disclose pagination behavior, rate limits, authentication requirements, error conditions, or what happens with invalid categories. The description doesn't contradict any annotations since none exist.

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 that states the core purpose without unnecessary words. It's front-loaded with the essential information and contains zero redundant or decorative language.

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 read operation with no annotations, no output schema, and minimal parameter documentation, the description is insufficient. It doesn't explain what constitutes a 'category', how results are returned (list format, limits), or error handling. Given the server context with multiple FAQ-related tools, more guidance on tool selection would be valuable.

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 0% (parameter 'category' has no description in schema), but the tool description adds meaningful context by specifying 'category name to filter FAQs'. This clarifies the parameter's purpose beyond just its name, though it doesn't provide format examples, valid values, or constraints. With 1 parameter and partial compensation for the schema gap, baseline 3 is appropriate.

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 clearly states the verb 'Get' and resource 'FAQs' with the qualifier 'for a specific category', making the purpose unambiguous. It distinguishes from sibling 'get_all_faqs' by specifying category filtering, though it doesn't explicitly mention sibling 'search_faqs' which might offer alternative filtering approaches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing FAQs filtered by category, but provides no explicit guidance on when to use this versus siblings like 'search_faqs' (which might offer more flexible filtering) or 'get_all_faqs' (which retrieves all FAQs without filtering). No prerequisites, exclusions, or alternatives are mentioned.

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

get_ticketC

Get detailed information about a specific ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
ticketIdYes

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 full burden for behavioral disclosure. It implies a read-only operation ('Get') but doesn't confirm safety aspects like whether it's idempotent, requires authentication, has rate limits, or what happens with invalid IDs. For a tool with zero annotation coverage, this is a significant gap in transparency.

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 that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place.

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 complexity (a read operation with 1 parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral traits, error handling, return format, or usage context. For a tool in a set with multiple ticket-related siblings, more guidance is needed to be fully helpful.

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 0%, so the schema provides no parameter descriptions. The description adds minimal value by implying a 'ticketId' parameter is needed ('about a specific ticket'), but doesn't explain format, constraints, or examples. With 1 parameter and low coverage, it partially compensates but remains vague.

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 clearly states the verb ('Get') and resource ('detailed information about a specific ticket'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list_tickets' (which likely returns multiple tickets) or 'create_ticket'/'update_ticket' (which are write operations), missing full sibling 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a ticket ID), contrast with 'list_tickets' for bulk retrieval, or specify use cases like viewing ticket details after creation. This leaves the agent without contextual usage cues.

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

list_ticketsC

List all tickets for a user, optionally filtered by status

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYes
statusNo

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 full burden. It states the tool lists tickets but doesn't disclose behavioral traits such as whether it requires authentication, returns paginated results, has rate limits, or what happens if the user ID is invalid. This leaves significant gaps for an agent to understand how to use it effectively.

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 zero wasted words. It front-loads the core purpose ('List all tickets for a user') and adds optional filtering as a concise modifier, making it easy to parse quickly.

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 no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It lacks details on authentication, error handling, return format, and usage context compared to siblings. For a tool with two parameters and no structured support, this minimal description doesn't provide enough information for reliable agent use.

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 0%, so the description must compensate. It mentions filtering by status, which aligns with the 'status' parameter, but doesn't explain the 'userId' parameter or provide additional context like format examples or constraints. This adds some value but doesn't fully cover the two parameters, resulting in a baseline score.

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 clearly states the verb ('List') and resource ('tickets for a user'), making the purpose specific and understandable. However, it doesn't distinguish this tool from sibling tools like 'get_ticket' or 'search_faqs' that might also retrieve ticket information, which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_ticket' (for a single ticket) or 'search_faqs' (for FAQs). It mentions optional filtering by status but doesn't explain when this filtering is appropriate or what happens without it.

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

search_faqsC

Search for FAQs based on keywords or questions

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, what the response format might be, potential rate limits, authentication needs, or error handling. The description is minimal and lacks essential operational 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?

The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple search tool and front-loads the core action. However, it could be more structured by explicitly separating purpose from parameters or usage context.

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 2 parameters with 0% schema coverage, no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain return values, error conditions, or how results are ranked/filtered. For a search tool in a FAQ system with alternatives, more context is needed to guide effective use.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds minimal value. It mentions 'keywords or questions' which loosely relates to the 'query' parameter but doesn't explain syntax, format, or examples. The 'limit' parameter is not addressed at all. The description fails to provide meaningful semantics beyond what's inferred from parameter names.

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 'Search for FAQs based on keywords or questions' clearly states the verb (search) and resource (FAQs), but it's vague about scope and doesn't distinguish from sibling tools like 'get_all_faqs' or 'get_faqs_by_category'. It specifies the search mechanism (keywords/questions) but lacks precision about what constitutes an FAQ in this context.

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 provided on when to use this tool versus alternatives like 'get_all_faqs' or 'get_faqs_by_category'. The description implies usage for keyword-based searches but doesn't mention exclusions, prerequisites, or comparative scenarios with sibling tools, leaving the agent without contextual decision-making help.

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

update_ticketC

Update an existing ticket (status, description, or priority)

ParametersJSON Schema
NameRequiredDescriptionDefault
ticketIdYes
statusNo
descriptionNo
priorityNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'update' implies mutation, it doesn't specify whether this requires specific permissions, if changes are reversible, what happens when only some fields are provided, or error conditions. The description mentions what can be updated but not how the update behaves or what the response 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.

Conciseness4/5

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

The description is a single, efficient sentence that gets straight to the point. It uses minimal words to convey the core functionality. However, it could be slightly more structured by front-loading the most critical information about the required ticketId parameter.

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 4 parameters, 0% schema description coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain the required ticketId parameter, provides minimal behavioral context, and offers no guidance on usage. The description should do much more to compensate for the lack of structured documentation.

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

Parameters1/5

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

Schema description coverage is 0%, meaning none of the 4 parameters have descriptions in the schema. The description only mentions three parameters (status, description, priority) but omits the required 'ticketId' parameter entirely. This leaves the most critical parameter undocumented and provides minimal semantic context for the optional parameters.

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 clearly states the verb 'update' and resource 'existing ticket' with specific fields mentioned (status, description, priority). It distinguishes from sibling tools like 'create_ticket' and 'close_ticket' by focusing on modifying existing tickets rather than creating new ones or closing them. However, it doesn't explicitly differentiate from 'get_ticket' or 'list_tickets' beyond the update action.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like needing an existing ticket ID, nor does it explain when to use 'update_ticket' versus 'close_ticket' for status changes. There's no context about appropriate use cases or limitations.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. For example, analyze_bioimpedance_pdf and analyze_bioimpedance_pdf_base64 handle different input formats for the same analysis, while support tools (create_ticket, update_ticket, close_ticket) and FAQ tools (get_all_faqs, search_faqs, etc.) are well-separated. An agent can easily distinguish between ticket management, FAQ retrieval, and document analysis functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case throughout. Examples include create_ticket, get_faq_categories, and analyze_bioimpedance_pdf. This predictability makes it easy for agents to understand tool purposes and navigate the set without confusion from mixed naming conventions.

Tool Count5/5

With 12 tools, the count is well-scoped for the server's purpose of handling support tickets, FAQs, and bioimpedance analysis. Each tool earns its place by covering distinct aspects of these domains, such as ticket lifecycle management, FAQ categorization and search, and document processing. This is neither too sparse nor bloated.

Completeness5/5

The tool set provides complete coverage for its inferred domains. For support tickets, it includes create, get, list, update, and close operations. For FAQs, it covers retrieval by category, search, and listing all. The bioimpedance analysis tools handle both file and base64 inputs. There are no obvious gaps, ensuring agents can perform end-to-end workflows without dead ends.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/osmarsant/fitslot-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server