# Kommo — how to use (mcp.ai)

Kommo CRM (formerly amoCRM), the conversation-first sales CRM (WhatsApp, Instagram, Telegram) used by SMBs and agencies. Read and write leads, contacts, companies, tasks, notes, pipelines, tags, custom fields, users, events, conversations and catalogs through the official v4 API. You provide your account subdomain and a Long-Lived Token and the platform operates on your account. Includes a raw call tool for any API endpoint.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_kommo?ms=1786693980000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `kommo_account`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/kommo`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/kommo/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/kommo/account` — Dados da conta Kommo conectada (id, nome, subdomínio, moeda, fuso, e opcionalmente usuários/campos/pipelines via `with`).
  - body: { with?: string, account?: string }
- `POST https://api.mcp.ai/api/kommo/catalogs/elements` — Catálogos (listas: produtos, etc.). action: list (todos os catálogos) | elements (itens de um catálogo, filtrável/buscável).
  - body: { catalog_id?: integer|string, page?: integer, limit?: integer, query?: string, filter?: string, account?: string, catalog_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/catalogs/list` — Catálogos (listas: produtos, etc.). action: list (todos os catálogos) | elements (itens de um catálogo, filtrável/buscável).
  - body: { catalog_id?: integer|string, page?: integer, limit?: integer, query?: string, filter?: string, account?: string, catalog_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/companies/create` — Companies do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/companies/get` — Companies do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/companies/list` — Companies do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/companies/update` — Companies do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/contacts/create` — Contacts do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/contacts/get` — Contacts do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/contacts/list` — Contacts do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/contacts/update` — Contacts do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/custom/fields` — Campos personalizados de um tipo de entidade (leads/contacts/companies/customers). Use os codes/ids retornados nos bodies de create/update.
  - body: { entity_type: string, page?: integer, limit?: integer, account?: string }
- `POST https://api.mcp.ai/api/kommo/customers/create` — Clientes (módulo de vendas recorrentes/RFM do Kommo). action: list | get | create | update. Requer o módulo de clientes ativo na conta.
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/customers/get` — Clientes (módulo de vendas recorrentes/RFM do Kommo). action: list | get | create | update. Requer o módulo de clientes ativo na conta.
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/customers/list` — Clientes (módulo de vendas recorrentes/RFM do Kommo). action: list | get | create | update. Requer o módulo de clientes ativo na conta.
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/customers/update` — Clientes (módulo de vendas recorrentes/RFM do Kommo). action: list | get | create | update. Requer o módulo de clientes ativo na conta.
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/events` — Eventos/atividades da conta (mudança de estágio, criação, etc.). Filtrável por tipo, entidade e período (`filter` JSON).
  - body: { page?: integer, limit?: integer, with?: string, filter?: string, order?: string, account?: string }
- `POST https://api.mcp.ai/api/kommo/leads/create` — Leads do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/leads/get` — Leads do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/leads/list` — Leads do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/leads/update` — Leads do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/links/link` — Vínculos entre entidades (ex.: ligar um contato a um lead). action: list (vínculos de um registro) | link | unlink (`data` = JSON com to_entity_id/to_entity_type).
  - body: { entity_type: string, entity_id: integer|string, page?: integer, limit?: integer, filter?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/links/list` — Vínculos entre entidades (ex.: ligar um contato a um lead). action: list (vínculos de um registro) | link | unlink (`data` = JSON com to_entity_id/to_entity_type).
  - body: { entity_type: string, entity_id: integer|string, page?: integer, limit?: integer, filter?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/links/unlink` — Vínculos entre entidades (ex.: ligar um contato a um lead). action: list (vínculos de um registro) | link | unlink (`data` = JSON com to_entity_id/to_entity_type).
  - body: { entity_type: string, entity_id: integer|string, page?: integer, limit?: integer, filter?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/list/accounts` — Lista as contas Kommo conectadas a este install (id/subdomínio, label). Use o id/subdomínio em `account` nas outras tools.
  - body: { account?: string }
- `POST https://api.mcp.ai/api/kommo/notes/create` — Notas de uma entidade. action: list (todas as notas do tipo de entidade), list_by_entity (notas de 1 registro), create (adiciona nota; `data` = JSON). Tipos comuns: common, call_in, call_out, sms_in/o
  - body: { entity_type: string, entity_id?: integer|string, page?: integer, limit?: integer, filter?: string, order?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/notes/list` — Notas de uma entidade. action: list (todas as notas do tipo de entidade), list_by_entity (notas de 1 registro), create (adiciona nota; `data` = JSON). Tipos comuns: common, call_in, call_out, sms_in/o
  - body: { entity_type: string, entity_id?: integer|string, page?: integer, limit?: integer, filter?: string, order?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/notes/list/by/entity` — Notas de uma entidade. action: list (todas as notas do tipo de entidade), list_by_entity (notas de 1 registro), create (adiciona nota; `data` = JSON). Tipos comuns: common, call_in, call_out, sms_in/o
  - body: { entity_type: string, entity_id?: integer|string, page?: integer, limit?: integer, filter?: string, order?: string, data?: string, account?: string, entity_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/pipelines/get` — Funis (pipelines) e seus estágios. action: list (todos os funis) | get (funil por id) | statuses (estágios de um funil).
  - body: { pipeline_id?: integer|string, page?: integer, limit?: integer, account?: string, pipeline_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/pipelines/list` — Funis (pipelines) e seus estágios. action: list (todos os funis) | get (funil por id) | statuses (estágios de um funil).
  - body: { pipeline_id?: integer|string, page?: integer, limit?: integer, account?: string, pipeline_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/pipelines/statuses` — Funis (pipelines) e seus estágios. action: list (todos os funis) | get (funil por id) | statuses (estágios de um funil).
  - body: { pipeline_id?: integer|string, page?: integer, limit?: integer, account?: string, pipeline_ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/request` — Chamada crua à API v4 do Kommo — qualquer endpoint, com o seu token. Use quando não houver uma tool dedicada (chats/Salesbot/arquivos/Kommo IA/webhooks/fontes/widgets/templates). `path` relativo (ex.:
  - body: { method: string, path: string, query_params?: string, body?: string, account?: string }
- `POST https://api.mcp.ai/api/kommo/tags/create` — Tags de um tipo de entidade. action: list (com busca) | create (cria tags; `data` = JSON, ex.: [{"name":"vip"}]).
  - body: { entity_type: string, page?: integer, limit?: integer, query?: string, filter?: string, data?: string, account?: string }
- `POST https://api.mcp.ai/api/kommo/tags/list` — Tags de um tipo de entidade. action: list (com busca) | create (cria tags; `data` = JSON, ex.: [{"name":"vip"}]).
  - body: { entity_type: string, page?: integer, limit?: integer, query?: string, filter?: string, data?: string, account?: string }
- `POST https://api.mcp.ai/api/kommo/talks/get` — Conversas (talks) do inbox unificado. action: list (filtrável por contact_id/entity_id/only_in_work via `filter` JSON) | get (por id). É o diferencial do Kommo: o histórico de conversa por WhatsApp/In
  - body: { id?: integer|string, page?: integer, limit?: integer, filter?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/talks/list` — Conversas (talks) do inbox unificado. action: list (filtrável por contact_id/entity_id/only_in_work via `filter` JSON) | get (por id). É o diferencial do Kommo: o histórico de conversa por WhatsApp/In
  - body: { id?: integer|string, page?: integer, limit?: integer, filter?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/tasks/create` — Tasks do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/tasks/get` — Tasks do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/tasks/list` — Tasks do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/tasks/update` — Tasks do Kommo. action: list (busca paginada com filtros), get (por id), create (cria, body em `data`), update (atualiza; com `id` = 1 item, sem `id` = bulk com array em `data`).
  - body: { id?: integer|string, page?: integer, limit?: integer, query?: string, with?: string, filter?: string, order?: string, data?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/users/get` — Usuários da conta. action: list | get (por id). `with`=role,group para incluir permissões/grupos.
  - body: { id?: integer|string, page?: integer, limit?: integer, with?: string, account?: string, ids?: integer|string[] }
- `POST https://api.mcp.ai/api/kommo/users/list` — Usuários da conta. action: list | get (por id). `with`=role,group para incluir permissões/grupos.
  - body: { id?: integer|string, page?: integer, limit?: integer, with?: string, account?: string, ids?: integer|string[] }

## Example prompts
- "List the leads in the sales pipeline stuck for more than 7 days"
- "Create a new lead for Maria with a phone and a follow-up task tomorrow"
- "Show the open conversations in the inbox and who's responsible"

## More
- Page: https://mcp.ai/kommo
- Agent spec (llms.txt): https://mcp.ai/kommo/llms.txt
- Postman collection: https://mcp.ai/kommo/postman.json
