Skip to main content
Glama
Miguelgbastos

Kommo CRM MCP Server

Kommo MCP Server

English documentation

CI License: MIT Node.js PRs Welcome Contributor Covenant

Servidor MCP (Model Context Protocol) para integração com o Kommo CRM. Expõe tools, resources e prompts para clientes MCP (Cursor, Claude Desktop, etc.).

Sumário

Related MCP server: Kommo MCP Server

Funcionalidades

  • MCP moderno e compatível: revisão 2026-07-28 pelo SDK oficial, com compatibilidade stateless para clientes da família 2025

  • Dois transportes oficiais: Streamable HTTP para serviços remotos e stdio para clientes locais

  • 23 tools: leads, contatos, empresas, tarefas, pipelines, notas, relatórios, dashboard, Salesbot, motivos de perda

  • 5 resources: relatório de vendas, pipelines, motivos de perda, dashboard, conta

  • 4 prompts: templates para análise de vendas, leads, pipelines e motivos de perda

  • ask_kommo: interface conversacional em linguagem natural

  • Arquitetura modular: código organizado em módulos (kommo-api, mcp/, ask-kommo)

  • Segurança: validação de Origin, validação dos argumentos das tools e autenticação obrigatória fora de localhost

Pré-requisitos

  • Node.js 22.13+

  • Docker (opcional)

  • Token de acesso do Kommo (integração privada ou OAuth2) — ver documentação do Kommo

Início rápido

git clone https://github.com/Miguelgbastos/Kommo-MCP.git
cd Kommo-MCP
npm install
cp env.example .env
# edite .env com KOMMO_BASE_URL e KOMMO_ACCESS_TOKEN
npm run build
npm start

O servidor sobe em http://127.0.0.1:3001/mcp.

Configuração

  1. Copie o arquivo de exemplo:

    cp env.example .env
  2. Configure no .env:

    KOMMO_BASE_URL=https://seu-dominio.kommo.com
    KOMMO_ACCESS_TOKEN=seu-token-aqui

Variáveis de ambiente

Variável

Descrição

Default

KOMMO_BASE_URL

URL da conta Kommo (https://<subdominio>.kommo.com)

KOMMO_ACCESS_TOKEN

Token de acesso (integração privada ou OAuth2)

KOMMO_TIMEOUT_MS

Timeout de cada requisição ao Kommo

15000

KOMMO_MAX_RETRIES

Retentativas de leituras em 429/5xx

3

KOMMO_REQUESTS_PER_SECOND

Limite coordenado de chamadas por processo (máximo 6)

6

KOMMO_TIMEZONE

Fuso IANA dos relatórios; por padrão usa o fuso da conta

conta Kommo

PORT

Porta HTTP do servidor MCP

3001

MCP_HOST

Host de binding

127.0.0.1

MCP_ALLOWED_ORIGINS

Origens permitidas (separadas por vírgula)

MCP_AUTH_TOKEN

Protege /mcp; obrigatório quando MCP_HOST não é loopback

MCP_CONFIRM_WRITES

Exige confirm=true nas tools que alteram dados

false

LOG_LEVEL

Nível de log

info

Execução

Desenvolvimento:

npm install
npm run dev        # ts-node
# ou
npm run build && npm start

Cliente local via stdio:

npm run build
npm run start:stdio

Docker:

docker build -t kommo-mcp-server .
docker run -d -p 3001:3001 \
  -e KOMMO_BASE_URL=https://seu-dominio.kommo.com \
  -e KOMMO_ACCESS_TOKEN=seu-token \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_AUTH_TOKEN=gere-um-segredo-longo \
  --name kommo-mcp-server kommo-mcp-server

Em produção, coloque o servidor atrás de um reverse proxy com TLS e defina MCP_AUTH_TOKEN + MCP_ALLOWED_ORIGINS. O servidor se recusa a iniciar em um endereço não local sem MCP_AUTH_TOKEN.

Ative MCP_CONFIRM_WRITES=true quando o cliente permitir confirmação explícita. As tools de escrita anunciam destructiveHint; as consultas anunciam readOnlyHint pelo protocolo MCP.

Integração com clientes MCP

Cursor

O pacote npm ainda não foi publicado. Até a release v3, compile o projeto e adicione ao ~/.cursor/mcp.json o caminho absoluto do arquivo gerado:

{
  "mcpServers": {
    "kommo": {
      "command": "node",
      "args": ["/caminho/absoluto/Kommo-MCP/dist/stdio.js"],
      "env": {
        "KOMMO_BASE_URL": "https://seu-dominio.kommo.com",
        "KOMMO_ACCESS_TOKEN": "seu-token-aqui"
      }
    }
  }
}

Para o servidor HTTP:

Adicione ao arquivo ~/.cursor/mcp.json (ou nas configurações do projeto em .cursor/mcp.json):

{
  "mcpServers": {
    "kommo": {
      "url": "http://127.0.0.1:3001/mcp"
    }
  }
}

Claude Desktop

Para uma implantação remota com HTTPS, abra Settings → Connectors → Add connector e informe a URL pública do endpoint, por exemplo https://mcp.seudominio.com/mcp.

Para execução local, use a mesma configuração command/args/env acima no claude_desktop_config.json. Servidores HTTP remotos devem ser adicionados pela tela de Connectors.

Endpoints

  • MCP: POST http://localhost:3001/mcp — negociação moderna via server/discover

  • Health: GET http://localhost:3001/health

  • Readiness: GET http://localhost:3001/ready — verifica se URL e token obrigatórios foram configurados

Ferramentas MCP

Conta e dashboard

Tool

Descrição

get_account

Informações da conta Kommo

get_dashboard

Dashboard calculado com endpoints públicos do Kommo

Leads

Tool

Descrição

get_leads

Listar leads (limit, page, query)

get_lead

Obter lead por ID

create_lead

Criar lead (name, price, status_id, pipeline_id)

update_lead

Atualizar lead existente

move_lead

Mover lead para outro status/pipeline

Pipelines e relatórios

Tool

Descrição

get_pipelines

Listar pipelines (com status opcional por pipeline_id)

get_sales_report

Relatório de vendas (dateFrom, dateTo)

Contatos, empresas e tarefas

Tool

Descrição

get_contacts

Listar contatos

get_companies

Listar empresas

get_tasks

Listar tarefas

create_task

Criar tarefa vinculada a entidade

get_users

Listar usuários da conta

Notas

Tool

Descrição

get_notes

Listar notas de lead/contato/empresa

add_note

Adicionar nota de texto

pin_note

Fixar nota

unpin_note

Desafixar nota

Motivos de perda e Salesbot

Tool

Descrição

get_loss_reasons

Listar motivos da perda de leads

get_loss_reason

Obter motivo de perda por ID

run_salesbot

Iniciar Salesbot (bot_id, entity_id, entity_type=leads)

stop_salesbot

Parar Salesbot (bot_id, entity_id, entity_type=leads)

IA conversacional

Tool

Descrição

ask_kommo

Perguntas em linguagem natural sobre o CRM

Resources

URI

Descrição

kommo://reports/sales

Relatório de vendas (último mês)

kommo://pipelines

Lista de pipelines

kommo://loss_reasons

Motivos da perda de leads

kommo://dashboard

Dados do dashboard

kommo://account

Informações da conta

Prompts

Nome

Descrição

analisar_vendas_mes

Analisar vendas do mês

resumo_leads_status

Resumo de leads por status

analise_pipeline

Analisar performance de pipeline

motivos_perda

Analisar motivos de perda

Estrutura do projeto

src/
├── kommo-api.ts             # Cliente da API Kommo
├── ask-kommo.ts             # Lógica conversacional ask_kommo
├── http-streamable.ts       # Servidor MCP HTTP
├── stdio.ts                 # Servidor MCP local por stdin/stdout
└── mcp/
    ├── server.ts            # Definição oficial do servidor MCP
    ├── types.ts             # Tipos MCP
    ├── tool-definitions.ts  # Schemas das tools
    ├── tool-handlers.ts     # Execução das tools
    ├── resources.ts         # Resources MCP
    └── prompts.ts           # Prompts MCP

Exemplos de uso

Clientes compatíveis negociam a revisão automaticamente por server/discover. Ao usar o cliente TypeScript oficial, fixe a revisão para evitar fallback silencioso para servidores antigos:

import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';

const client = new Client(
  { name: 'minha-integracao', version: '1.0.0' },
  { versionNegotiation: { mode: { pin: '2026-07-28' } } },
);

const transport = new StreamableHTTPClientTransport(new URL('http://127.0.0.1:3001/mcp'));

await client.connect(transport);
const { tools } = await client.listTools();

Clientes da família 2025 são atendidos automaticamente pelo modo stateless. Clientes modernos podem fixar 2026-07-28 conforme o exemplo acima.

Troubleshooting

  • 401 Unauthorized da API do Kommo — verifique se KOMMO_ACCESS_TOKEN está válido e se KOMMO_BASE_URL aponta para o subdomínio correto da sua conta.

  • Cliente MCP não conecta — confirme se MCP_HOST permite conexões do cliente (0.0.0.0 para acesso remoto) e se MCP_ALLOWED_ORIGINS inclui a origem do cliente, quando definido.

  • 403 no /mcp — se MCP_AUTH_TOKEN estiver definido, é preciso enviar Authorization: Bearer <token> ou X-API-Key: <token>.

  • 503 no /ready — configure KOMMO_BASE_URL com HTTPS e defina KOMMO_ACCESS_TOKEN antes de iniciar o serviço real.

  • 429 do Kommo — todas as chamadas compartilham um limitador coordenado; leituras usam backoff e Retry-After, enquanto escritas não são repetidas automaticamente para evitar duplicidade.

  • Docker HEALTHCHECK falha — a imagem usa node --eval para o healthcheck, verifique se a porta interna corresponde a PORT.

  • Erros de build TypeScript — rode npm run typecheck para ver mensagens detalhadas. Requer Node.js 22.13+.

Documentação

Compatibilidade e suporte

Componente

Suporte atual

Node.js

22.13+; CI em Node 22 e 24

Protocolo MCP

2026-07-28 e família 2025 stateless

Transporte

Streamable HTTP e stdio oficiais

Cursor

stdio local ou HTTP

Claude Desktop

stdio local ou conector remoto

Instalação

Git e Docker; npm após a release v3

Suporte comunitário ocorre por Issues e Discussions, sem garantia de tempo de resposta. Veja as responsabilidades em MAINTAINERS.md.

Contribuindo

Contribuições são muito bem-vindas! Leia o CONTRIBUTING.md para o fluxo completo e o Código de Conduta para as regras da comunidade.

Sugestões rápidas:

  • Abra uma issue usando os templates.

  • Envie um PR pequeno e focado, com descrição do que muda e por quê.

  • Rode npm run typecheck, npm run lint, npm test, npm run format:check e npm run audit:prod antes de enviar.

Segurança

Para reportar vulnerabilidades, veja SECURITY.md. Não abra issues públicas para problemas de segurança.

Licença

Distribuído sob a licença MIT.

Available Tools

22 tools
create_contact_activityC

Create a new activity for a contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesID of the contact
responsible_user_idNoID of responsible user
textNoActivity description
typeYesType of activity

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 but provides minimal information. It states this is a creation operation but doesn't mention what happens after creation, whether there are permissions required, rate limits, error conditions, or what the response contains. For a mutation tool with zero annotation coverage, this leaves significant behavioral unknowns.

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 extremely concise - a single sentence that directly states the tool's function without any unnecessary words. It's front-loaded with the core purpose and wastes no space on redundant information. This is an excellent example of efficient communication.

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 creation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what constitutes a valid 'activity,' what happens after creation, whether there are side effects, or what the tool returns. Given the mutation nature of the operation and the lack of structured behavioral information, the description should provide more context about the tool's behavior and outcomes.

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 100% description coverage, so all parameters are documented in the structured schema. The tool description adds no additional parameter information beyond what's already in the schema. This meets the baseline expectation when schema coverage is complete, but doesn't provide any extra context about parameter relationships or usage patterns.

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') and target resource ('new activity for a contact'), making the purpose immediately understandable. However, it doesn't distinguish this tool from similar siblings like 'create_lead_event' or 'create_lead_status' - all three appear to create records for different entities, but the description doesn't clarify this 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. With siblings like 'create_lead_event' and 'create_lead_status' that appear to serve similar creation functions for different entities, the agent receives no help in choosing between them. There's no mention of prerequisites, constraints, or appropriate contexts for this specific tool.

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

create_lead_eventC

Create a new event for a lead

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesID of the lead
responsible_user_idNoID of responsible user
textNoEvent description
typeYesType of event

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 states 'create' implying a write operation, but doesn't cover permissions, side effects, error handling, or response format. This is inadequate for a mutation tool without annotation support.

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 purpose without unnecessary words. It's appropriately sized and front-loaded with essential information.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks critical behavioral details like permissions, side effects, and response expectations, leaving significant gaps for agent understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional parameter context beyond the basic purpose, meeting the baseline for high schema coverage without enhancing understanding.

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') and resource ('new event for a lead'), making the purpose immediately understandable. It distinguishes from siblings like 'create_contact_activity' by specifying 'lead' events, though it doesn't explicitly contrast with similar tools like 'create_lead_status'.

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. It doesn't mention prerequisites, appropriate contexts, or differentiate from sibling tools like 'create_lead_status' or 'create_contact_activity', leaving the agent to infer usage scenarios.

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

create_lead_statusC

Create a new status for a pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColor of the status (hex code)
nameYesName of the status
pipeline_idYesID of the pipeline
sortNoSort order

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Create a new status,' implying a write operation, but doesn't cover permissions, side effects (e.g., impact on existing leads), rate limits, or response format. This is inadequate 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 that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for its content, 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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral details (e.g., permissions, effects), usage context, and output information, making it insufficient for an agent to use the tool effectively without additional inference.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning about the parameters beyond implying they relate to creating a status. Baseline 3 is appropriate as the schema does the heavy lifting, but no extra context is provided.

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 status') and the target resource ('for a pipeline'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'move_lead_to_status' or 'get_lead_statuses', which would require mentioning that this creates rather than modifies or retrieves statuses.

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 an existing pipeline), exclusions, or compare it to siblings like 'move_lead_to_status' for modifying statuses or 'get_lead_statuses' for retrieval, leaving the agent to infer usage context.

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

get_account_infoC

Get Kommo account information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get') without detailing traits like whether it requires authentication, has rate limits, returns structured data, or involves side effects. 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 with no wasted words. It is front-loaded with the core action and resource, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain what 'account information' entails (e.g., data format, scope) or behavioral aspects like error handling. For a tool in a server with many siblings, 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.

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description does not add parameter-specific information, but since no parameters exist, a baseline of 4 is appropriate as no compensation is needed for missing details.

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 'Get Kommo account information' states a clear verb ('Get') and resource ('Kommo account information'), providing a basic purpose. However, it lacks specificity about what account information is retrieved (e.g., user details, billing info, settings) and does not distinguish this from sibling tools like 'get_users' or 'get_dashboard_data', making it vague in 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions, such as whether it retrieves personal vs. organizational account data or if it should be used for authentication checks. This leaves the agent without usage direction.

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

get_companiesC

Get list of companies from Kommo CRM

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of companies to return (max 250)
pageNoPage number for pagination

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 'Get list' which implies a read operation, but doesn't cover important aspects like whether it requires authentication, rate limits, pagination behavior beyond the schema parameters, or what the return format looks like (e.g., array of company objects).

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 purpose without any unnecessary words. It's appropriately sized and front-loaded with the essential information.

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 list-retrieval tool with no annotations and no output schema, the description is insufficient. It doesn't explain what data is returned (company fields, structure), how pagination works in practice, or any constraints beyond the schema parameters. Given the complexity of CRM data and lack of structured output information, more context is needed.

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 schema description coverage is 100%, with both parameters ('limit' and 'page') well-documented in the schema itself. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline for adequate coverage without adding value.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('list of companies from Kommo CRM'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_contacts' or 'get_leads' beyond specifying the resource type, which is why it doesn't reach 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?

No guidance is provided on when to use this tool versus alternatives like 'get_contacts' or 'get_leads'. The description only states what it does, not when it's appropriate or what distinguishes it from other list-retrieval tools in the CRM context.

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

get_contact_activitiesC

Get activities for a specific contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesID of the contact
limitNoNumber of activities to return
pageNoPage number for pagination

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 for behavioral disclosure. It states the tool retrieves activities but lacks details on permissions required, rate limits, pagination behavior beyond parameters, or what happens if the contact ID is invalid. This is inadequate for a tool with mutation-like data access.

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, direct sentence with zero wasted words, front-loading the core purpose efficiently. It avoids redundancy and is 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 no annotations and no output schema, the description is incomplete. It does not explain what 'activities' entail (e.g., types, structure), how results are returned, or error handling, leaving gaps for the agent to operate effectively with this data retrieval tool.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter documentation in the input schema (contact_id, limit, page). The description adds no additional meaning beyond implying 'contact_id' targets a specific contact, which is already covered. Baseline 3 is appropriate as the schema handles parameter semantics effectively.

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 target resource ('activities for a specific contact'), making the purpose understandable. However, it does not differentiate from sibling tools like 'get_lead_events' or 'get_lead_statuses' that also retrieve activity-like data, missing specificity about what types of activities are included (e.g., calls, emails, tasks).

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 does not mention prerequisites (e.g., needing a valid contact ID), exclusions, or comparisons to siblings like 'get_lead_events' for lead-specific activities, leaving the agent to infer usage from context alone.

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

get_contactsC

Get list of contacts from Kommo CRM

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of contacts to return (max 250)
pageNoPage number for pagination

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. While 'Get list' implies a read-only operation, it doesn't mention important behavioral aspects like pagination behavior (implied by the 'page' parameter but not explained), rate limits, authentication requirements, or what happens when no contacts exist. The description is too minimal for a tool with behavioral implications.

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 extremely concise - a single sentence that states exactly what the tool does without any unnecessary words. It's front-loaded with the core purpose and wastes no space on redundant information. This is an excellent example of efficient communication.

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 data retrieval tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the contacts are returned in, what fields they contain, whether the list is filtered or sorted, or how pagination works in practice. The agent would need to guess about important operational details.

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 100% description coverage, with both parameters ('limit' and 'page') clearly documented in the schema itself. The description adds no parameter information beyond what's already in the schema, so it meets the baseline expectation but doesn't provide additional semantic context about how these parameters affect the contact retrieval.

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 ('list of contacts from Kommo CRM'), making the purpose immediately understandable. However, it doesn't distinguish this tool from other contact-related tools like 'get_contact_activities' or 'get_companies', which could also retrieve contact data in different contexts.

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. With sibling tools like 'get_contact_activities' and 'get_companies' that might provide overlapping or related contact information, there's no indication of when this specific contact listing tool is appropriate versus other data retrieval options.

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

get_dashboard_dataC

Get dashboard data and key metrics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get') without detailing whether this is a read-only operation, if it requires authentication, what the return format might be, or any rate limits. This leaves critical behavioral traits unspecified for a tool that likely fetches data.

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 extremely concise with just one short phrase: 'Get dashboard data and key metrics'. It's front-loaded and wastes no words, making it easy to parse quickly. Every word contributes directly to the purpose 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 implied by fetching 'dashboard data and key metrics' (which could involve aggregated or varied data), the description is incomplete. With no annotations and no output schema, it fails to explain what kind of data is returned, the structure, or any prerequisites. This leaves significant gaps for an agent to understand the tool's full context and usage.

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, meaning no parameters are documented in the schema. The description doesn't mention any parameters, which is appropriate since there are none. This aligns with the baseline score of 4 for zero parameters, as there's no need to compensate for missing param info.

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 'Get dashboard data and key metrics' states the action (get) and resource (dashboard data/key metrics), providing a basic purpose. However, it's vague about what specific dashboard or metrics are involved, and it doesn't distinguish this tool from sibling tools like get_lead_analytics or get_pipeline_analytics, which might overlap in scope.

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. With sibling tools like get_lead_analytics and get_pipeline_analytics available, there's no indication of whether this tool is more general, aggregated, or serves a different context, leaving the agent to guess based on the name alone.

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

get_lead_analyticsC

Get analytics for a specific lead

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesID of the lead

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'gets' analytics, implying a read-only operation, but does not specify permissions required, rate limits, data format returned, or whether it's a real-time or historical query. 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, direct sentence with no wasted words. It is appropriately sized for a simple tool and front-loaded with the core action, making it efficient and easy to parse.

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

Completeness2/5

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

Given the lack of annotations and no output schema, the description is incomplete. It does not explain what 'analytics' includes (e.g., metrics, timeframes, or data types), leaving the agent uncertain about the tool's behavior and output. For a tool with no structured behavioral data, more descriptive context is needed.

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 100% description coverage, with 'lead_id' clearly documented as 'ID of the lead'. The description does not add any additional meaning beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description 'Get analytics for a specific lead' clearly states the verb ('Get') and resource ('analytics for a specific lead'), making the purpose understandable. However, it does not differentiate from sibling tools like 'get_lead_conversion_report' or 'get_pipeline_analytics', leaving ambiguity about what specific analytics it provides compared to alternatives.

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 'get_lead_conversion_report' or 'get_pipeline_analytics'. It lacks context about prerequisites, timing, or exclusions, leaving the agent to infer usage from 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.

get_lead_conversion_reportB

Get lead conversion report for a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromYesStart date (YYYY-MM-DD)
date_toYesEnd date (YYYY-MM-DD)

TDQS

B3.1/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 lacks behavioral details. It doesn't disclose whether this is a read-only operation, what permissions are needed, how data is returned, or any rate limits. The description merely states the action without 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded with the core 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.

Completeness3/5

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

Given the simple 2-parameter input schema with full coverage and no output schema, the description is minimally adequate. However, as a reporting tool with no annotations, it should ideally explain what the report contains or its format to be more complete for 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 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying date-range filtering, which is already clear from the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'lead conversion report', specifying it's for a date range. It distinguishes from siblings like get_lead_analytics or get_sales_report by focusing specifically on conversion metrics, though it doesn't explicitly contrast them.

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_lead_analytics or get_sales_report. The description only states what it does without context about appropriate scenarios or exclusions.

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

get_lead_eventsC

Get events for a specific lead

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesID of the lead
limitNoNumber of events to return
pageNoPage number for pagination

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without details on permissions, rate limits, error handling, or response format. This is inadequate for a tool with parameters and no output schema, as it leaves key behavioral traits unspecified.

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, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently conveys the core purpose 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 tool has 3 parameters, no annotations, and no output schema, the description is incomplete. It fails to address behavioral aspects like what 'events' entail, response structure, or error conditions, making it insufficient for effective agent use without additional context.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents parameters like 'lead_id', 'limit', and 'page'. The description adds no additional meaning beyond this, such as explaining event types or pagination behavior, resulting in a baseline score of 3.

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 the resource 'events for a specific lead', making the purpose understandable. However, it does not differentiate from siblings like 'get_contact_activities' or 'get_lead_statuses', which might retrieve related but different data, so it lacks 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. For example, it does not specify if this is for historical events, real-time updates, or how it differs from 'get_lead_analytics' or 'create_lead_event', leaving usage context unclear.

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

get_leadsC

Get list of leads from Kommo CRM

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of leads to return (max 250)
pageNoPage number for pagination

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a list but doesn't mention pagination behavior (implied by the 'page' parameter), rate limits, authentication requirements, or what data fields are included in the leads. For a read operation with no 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 directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness in tool selection.

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 CRM tool with no annotations and no output schema, the description is insufficient. It doesn't explain the return format (e.g., structure of lead objects), error handling, or how it integrates with sibling tools. For a tool that likely returns structured data, more context is needed to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, with clear documentation for 'limit' (max 250) and 'page' (pagination). The description adds no additional parameter semantics beyond what the schema provides, such as default values or interaction between parameters. This meets the baseline for high schema coverage but doesn't enhance understanding.

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 list of') and resource ('leads from Kommo CRM'), making the purpose immediately understandable. However, it doesn't differentiate this tool from other lead-related siblings like 'get_lead_analytics' or 'get_lead_conversion_report', which would require more specificity about scope or data returned.

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. With multiple sibling tools related to leads (e.g., 'get_lead_analytics', 'get_lead_conversion_report'), there's no indication of whether this is for basic lead listing versus analytical or filtered views, leaving the agent to guess based on tool names alone.

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

get_lead_statusesC

Get statuses for a specific pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
pipeline_idYesID of the pipeline

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it is likely safe, but does not cover aspects like authentication needs, rate limits, response format, or error handling, which are critical for a tool with no structured safety hints.

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. It is appropriately sized and front-loaded, directly stating the tool's purpose 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 lack of annotations and output schema, the description is incomplete. It does not explain what 'statuses' entail, the return format, or any behavioral traits, leaving gaps for a tool that retrieves data from a pipeline without structured context.

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 schema description coverage is 100%, with the parameter 'pipeline_id' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as explaining what a 'pipeline' is or how statuses are structured, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('statuses for a specific pipeline'), making the purpose evident. However, it does not differentiate from sibling tools like 'get_lead_events' or 'get_lead_analytics', which also retrieve lead-related data, so it lacks 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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context, or exclusions, such as when to use 'get_lead_statuses' over 'get_lead_events' or 'get_pipelines', leaving usage unclear.

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

get_pipeline_analyticsC

Get analytics for a specific pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromNoStart date (YYYY-MM-DD)
date_toNoEnd date (YYYY-MM-DD)
pipeline_idYesID of the pipeline

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 but only states the action without behavioral details. It doesn't disclose whether this is a read-only operation, requires authentication, has rate limits, returns paginated data, or what the analytics include (e.g., metrics, format). This leaves significant gaps for an agent to understand operational traits.

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 purpose, making it easy to parse quickly, though this conciseness comes at the cost of depth in other dimensions.

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 analytics tools and lack of annotations or output schema, the description is insufficient. It doesn't explain what analytics are returned, how to interpret results, or handle edge cases (e.g., invalid dates). For a tool with three parameters and no structured output, more context is needed for effective 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 100%, with clear documentation of all three parameters (date_from, date_to, pipeline_id) in the input schema. The description adds no additional meaning beyond the schema, such as explaining parameter interactions or default behaviors, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'analytics for a specific pipeline', making the purpose understandable. It distinguishes from general analytics tools like 'get_lead_analytics' by specifying 'pipeline' scope, but doesn't explicitly differentiate from similar sibling 'get_pipeline_performance_report', which might overlap in function.

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_pipeline_performance_report' or 'get_lead_analytics'. The description implies usage for pipeline-specific analytics but lacks context on prerequisites, exclusions, or comparative scenarios with sibling tools.

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

get_pipeline_performance_reportC

Get pipeline performance report for a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromYesStart date (YYYY-MM-DD)
date_toYesEnd date (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, what format the report returns, if there are rate limits, or any other behavioral traits. The description is minimal and lacks necessary context for a reporting tool.

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 purpose without any unnecessary words. It's appropriately sized and front-loaded with the essential information.

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 reporting tool with no annotations and no output schema, the description is insufficient. It doesn't explain what a 'pipeline performance report' contains, how results are structured, or any behavioral considerations. Given the complexity of performance reporting and lack of structured metadata, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters clearly documented in the schema. The description mentions 'date range' which aligns with the parameters but adds no additional semantic meaning beyond what the schema already provides. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('pipeline performance report') with scope ('for a date range'), making the purpose understandable. It distinguishes from some siblings like 'get_pipelines' or 'get_pipeline_analytics' by specifying 'performance report', but doesn't explicitly differentiate from all similar tools like 'get_sales_report' or 'get_lead_conversion_report'.

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. With siblings like 'get_pipeline_analytics', 'get_sales_report', and 'get_lead_conversion_report', there's no indication of what makes this tool distinct or when it should be preferred over other reporting tools.

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

get_pipelinesB

Get list of pipelines from Kommo CRM

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a list but doesn't mention any behavioral traits such as pagination, rate limits, authentication requirements, or what happens if no pipelines exist. This leaves significant gaps for a read operation.

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 purpose without any unnecessary words. It's front-loaded and wastes no space, making it easy for an agent 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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the returned list contains (e.g., pipeline IDs, names, statuses) or any behavioral aspects like error handling. For a tool with no structured support, more context is needed to guide the agent effectively.

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, but it doesn't compensate for any gaps since there are none. A baseline of 4 is given for tools with zero 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 action ('Get list of') and resource ('pipelines from Kommo CRM'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_pipeline_analytics' or 'get_pipeline_performance_report', which also involve pipelines but serve different purposes.

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. With siblings like 'get_pipeline_analytics' and 'get_pipeline_performance_report' available, there's no indication that this tool is for raw pipeline listing rather than analytical data, leaving the agent to infer usage context.

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

get_sales_reportC

Get sales report for a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromYesStart date (YYYY-MM-DD)
date_toYesEnd date (YYYY-MM-DD)

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 retrieves data ('Get'), implying a read operation, but doesn't disclose behavioral traits like authentication needs, rate limits, pagination, error handling, or what the report contains. For a tool with no annotations, this leaves significant gaps in understanding how it 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 with zero waste—'Get sales report for a date range'—front-loading the core action and scope appropriately. Every word earns its place without redundancy or 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 no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what the sales report contains, how it's formatted, or any behavioral aspects like data freshness or access permissions. For a report tool in a context with many similar siblings, more detail 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.

Parameters3/5

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

Schema description coverage is 100%, with both parameters clearly documented in the schema (date_from and date_to with format YYYY-MM-DD). The description adds minimal value by mentioning 'date range', which aligns with the schema but doesn't provide additional semantic context beyond what's already structured.

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 'sales report' with scope 'for a date range', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_lead_conversion_report' or 'get_pipeline_performance_report' that also retrieve reports, leaving some ambiguity about when this specific sales report is appropriate versus other report types.

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. With multiple sibling report tools (e.g., get_lead_conversion_report, get_pipeline_performance_report), there's no indication of what distinguishes a 'sales report' from these other reports, nor any prerequisites or context for usage.

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

get_tasksC

Get list of tasks from Kommo CRM

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of tasks to return (max 250)
pageNoPage number for pagination

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action ('Get list of tasks') without mentioning permissions, rate limits, pagination behavior (implied by parameters but not explained), or what the returned list includes. This is inadequate for a tool with parameters and no output schema.

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. It's front-loaded with the core purpose, making it easy to scan and understand 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 lack of annotations and output schema, the description is incomplete. It doesn't explain the tool's behavior, return format, or how it differs from siblings, leaving significant gaps for an agent to use it effectively in a CRM context with multiple similar retrieval tools.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'limit' and 'page' parameters. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 without compensating or detracting.

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 ('list of tasks from Kommo CRM'), making the purpose understandable. However, it doesn't distinguish this tool from other 'get_' siblings like get_contacts or get_leads, which follow a similar pattern but target different resources.

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. With many sibling tools (e.g., get_contacts, get_leads), there's no indication of whether this is for general task retrieval or specific contexts, leaving the agent to infer usage 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.

get_user_performance_statsC

Get performance statistics for a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromNoStart date (YYYY-MM-DD)
date_toNoEnd date (YYYY-MM-DD)
user_idYesID of the user

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but does not disclose any behavioral traits such as authentication requirements, rate limits, data format, or potential side effects. This is inadequate for a tool with no annotation coverage, as critical operational details are missing.

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 that directly states the tool's function without unnecessary words. It is front-loaded with the core purpose, making it efficient and easy to parse, with no wasted information.

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 (retrieving user performance data with three parameters) and the lack of annotations and output schema, the description is incomplete. It does not explain what 'performance statistics' include, the format of the returned data, or any behavioral aspects like error handling. This leaves significant gaps for an agent to understand and use the tool effectively.

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 100% description coverage, clearly documenting all three parameters (date_from, date_to, user_id) with their types and requirements. The description adds no additional semantic meaning beyond what the schema provides, such as explaining what 'performance statistics' entail or how dates affect the output. With high schema coverage, the baseline score of 3 is appropriate as the schema handles parameter documentation effectively.

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 as 'Get performance statistics for a specific user', which includes a specific verb ('Get') and resource ('performance statistics') with a target ('specific user'). However, it does not differentiate from sibling tools like 'get_users' or 'get_dashboard_data', which might also involve user-related data retrieval, leaving some ambiguity about its unique scope.

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. For example, it does not specify if this is for detailed user metrics compared to broader reports like 'get_dashboard_data' or 'get_sales_report', nor does it mention prerequisites or exclusions, leaving the agent without context for tool selection.

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

get_usersB

Get list of users from Kommo CRM

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 action ('Get list of users') but lacks details on permissions required, rate limits, pagination, sorting, or what specific user data is returned (e.g., fields like name, email, role). This is a significant gap for a 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. It is front-loaded with the core purpose ('Get list of users from Kommo CRM'), making it easy to understand at a glance without unnecessary elaboration.

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 complexity (simple retrieval with no parameters) and the absence of annotations and output schema, the description is minimally adequate. It states what the tool does but lacks completeness in behavioral aspects like return format or usage context, leaving gaps for an AI agent to infer details.

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 any parameter details, which is appropriate here. A baseline of 4 is applied since the schema fully handles the parameter semantics, 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 verb 'Get' and the resource 'list of users from Kommo CRM', making the purpose specific and understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'get_account_info' or 'get_user_performance_stats', which also retrieve user-related data but with different scopes or formats.

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 any prerequisites, exclusions, or comparisons to sibling tools such as 'get_user_performance_stats' (which might provide aggregated metrics) or 'get_account_info' (which could include user details in a broader context).

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

move_lead_to_pipelineC

Move a lead to a specific pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesID of the lead
pipeline_idYesID of the target pipeline
status_idNoID of the target status (optional)

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 states the action ('Move') but doesn't explain what this operation entails—whether it's a destructive mutation, what permissions are required, how it affects lead history, or what happens if the move fails. This leaves significant gaps for an agent to understand the tool's 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 directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple operation and front-loads the core action.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't address behavioral aspects like side effects, error conditions, or return values. Given the complexity of moving business entities between pipelines, more context about what 'move' entails would be necessary for complete understanding.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters clearly documented in the schema. The description doesn't add any meaningful semantic context beyond what's already in the schema (e.g., explaining relationships between lead_id, pipeline_id, and optional status_id). The baseline score of 3 reflects adequate but minimal value addition.

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 ('Move') and the resource ('a lead to a specific pipeline'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'move_lead_to_status', which appears to serve a similar but distinct function in the same domain.

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 'move_lead_to_status' or other lead management tools. It lacks context about prerequisites, constraints, or typical scenarios for moving leads between pipelines.

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

move_lead_to_statusC

Move a lead to a specific status

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesID of the lead
status_idYesID of the target status

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. 'Move' implies a state change operation, but the description doesn't disclose whether this requires specific permissions, whether the operation is reversible, what happens to the lead's previous status, or any rate limits. For a mutation tool with zero annotation coverage, this is inadequate.

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's appropriately sized for a simple operation and front-loads the essential information immediately.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens during the move operation, what the response looks like, or any side effects. Given the complexity of state transitions and the lack of structured safety information, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are documented in the schema. The description doesn't add any meaningful parameter semantics beyond what the schema already provides (lead_id and status_id). The baseline score of 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('move') and resource ('lead to a specific status'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'move_lead_to_pipeline' or 'create_lead_status', but the verb+resource combination is specific enough for basic understanding.

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, when not to use it, or how it differs from sibling tools like 'move_lead_to_pipeline' or 'create_lead_status' that also manipulate lead states.

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

Tool Schema Changelog

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

  1. 22 tool updatesv1.0.0
    • First observedcreate_contact_activity
    • First observedcreate_lead_event
    • First observedcreate_lead_status
    • First observedget_account_info
    • First observedget_companies
    • First observedget_contact_activities
    • First observedget_contacts
    • First observedget_dashboard_data
    • First observedget_lead_analytics
    • First observedget_lead_conversion_report
    • First observedget_lead_events
    • First observedget_lead_statuses
    • First observedget_leads
    • First observedget_pipeline_analytics
    • First observedget_pipeline_performance_report
    • First observedget_pipelines
    • First observedget_sales_report
    • First observedget_tasks
    • First observedget_user_performance_stats
    • First observedget_users
    • First observedmove_lead_to_pipeline
    • First observedmove_lead_to_status

TDQS

B3.2/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources (contacts, leads, pipelines, etc.) with clear action differentiation. However, some overlap exists between 'get_lead_analytics' and 'get_pipeline_analytics' which could cause confusion about their specific focus, and 'move_lead_to_pipeline' vs 'move_lead_to_status' might be ambiguous without understanding the CRM's pipeline/status hierarchy.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case throughout. The verbs are clear and appropriate (create, get, move), and nouns consistently describe the target resources (contact_activities, lead_events, pipeline_analytics, etc.). This makes the tool set highly predictable and readable.

Tool Count3/5

With 22 tools, this is borderline heavy for a CRM server. While it covers many aspects of CRM operations, the count feels slightly excessive as some tools could potentially be consolidated (e.g., multiple analytics/report tools). However, given the comprehensive domain coverage, it's not unreasonable.

Completeness4/5

The tool set provides excellent coverage for CRM operations including contact management, lead tracking, pipeline analytics, and reporting. Minor gaps exist in update/delete operations (only create and get operations are present for most resources) and task management lacks creation capabilities, but agents can work around these limitations for most workflows.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables AI agents to interact with Bitrix24 CRM through comprehensive tools for managing contacts, deals, leads, companies, tasks, and users, with advanced filtering, search capabilities, and sales team performance monitoring.
    50
    3 npm
    33
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with Kommo CRM to manage leads, add notes and tasks, update custom fields, and list pipelines. Supports multi-tenant authentication and includes an approval system for bulk operations.
    2
    -
  • F
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to autonomously interact with Kommo CRM, providing tools for managing pipelines, leads, contacts, and custom fields via the Kommo API v4.
    27
    1
    -