Kommo MCP by usefulapi
List leads, contacts, companies and tasks; create and update leads in Kommo.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"kommo": {
"url": "https://kommo.usefulapi.io/mcp"
}
}
}Remote endpoints
https://kommo.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢kommo_get_account(with)
Get the Kommo account: id, subdomain, country, currency and the current user id. Good first call to confirm the connection. GET /api/v4/account.
Input Schema
{
"type": "object",
"properties": {
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_pipelines
List the lead pipelines with their stages (status ids, names, sort order). Use it to find the pipeline_id and status_id values for lead filters and writes. GET /api/v4/leads/pipelines.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_users(with, page, limit)
List the users of the account with their ids, names, emails and roles. Use it to find responsible_user_id values. GET /api/v4/users.
Input Schema
{
"type": "object",
"properties": {
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_custom_fields(entity, page, limit)
List the custom fields of leads, contacts or companies (ids, names, types, enum options). Use it to find field ids before writing values. GET /api/v4/{entity}/custom_fields.
Input Schema
{
"type": "object",
"properties": {
"entity": {
"type": "string",
"enum": [
"leads",
"contacts",
"companies"
],
"description": "Entity type: leads, contacts or companies."
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"required": [
"entity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_leads(query, pipeline_id, responsible_user_id, updated_from, updated_to, ...)
List deals (leads) with price, stage, pipeline, responsible user and timestamps. Filter by text, pipeline, owner or the update window. One request per call. GET /api/v4/leads.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search text across the filled lead fields.",
"type": "string"
},
"pipeline_id": {
"description": "Only leads in this pipeline.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"responsible_user_id": {
"description": "Only leads owned by this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"updated_from": {
"description": "Only leads updated at or after this Unix time.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"updated_to": {
"description": "Only leads updated at or before this Unix time.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_updated_at": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_get_lead(lead_id, with)
Get one lead by id, with optional embedded data (contacts, loss_reason, source). GET /api/v4/leads/{id}.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Numeric Kommo id."
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_contacts(query, responsible_user_id, with, page, limit)
List contacts (people) with their names, custom fields (email, phone) and responsible user. One request per call. GET /api/v4/contacts.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search text, e.g. a name, email or phone.",
"type": "string"
},
"responsible_user_id": {
"description": "Only contacts owned by this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_get_contact(contact_id, with)
Get one contact by id, with optional embedded data (leads, companies). GET /api/v4/contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Numeric Kommo id."
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_companies(query, responsible_user_id, with, page, limit)
List companies (organisations) with their names, custom fields and responsible user. One request per call. GET /api/v4/companies.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search text, e.g. a company name.",
"type": "string"
},
"responsible_user_id": {
"description": "Only companies owned by this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_get_company(company_id, with)
Get one company by id, with optional embedded data (contacts, leads). GET /api/v4/companies/{id}.
Input Schema
{
"type": "object",
"properties": {
"company_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Numeric Kommo id."
},
"with": {
"description": "Comma-separated extra data to embed, e.g. 'contacts,loss_reason' (see the Kommo reference for each entity).",
"type": "string"
}
},
"required": [
"company_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_tasks(responsible_user_id, is_completed, entity_type, entity_id, page, ...)
List follow-up tasks, optionally only open ones, for one user or one linked entity. One request per call. GET /api/v4/tasks.
Input Schema
{
"type": "object",
"properties": {
"responsible_user_id": {
"description": "Only tasks for this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"is_completed": {
"description": "true = completed only; false = open only.",
"type": "boolean"
},
"entity_type": {
"description": "Only tasks linked to this entity type.",
"type": "string",
"enum": [
"leads",
"contacts",
"companies"
]
},
"entity_id": {
"description": "Only tasks linked to this entity id (use with entity_type).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kommo_list_notes(entity, entity_id, page, limit)
List the notes (comments, calls, status changes) of one lead, contact or company. One request per call. GET /api/v4/{entity}/{id}/notes.
Input Schema
{
"type": "object",
"properties": {
"entity": {
"type": "string",
"enum": [
"leads",
"contacts",
"companies"
],
"description": "Entity type: leads, contacts or companies."
},
"entity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Numeric Kommo id."
},
"page": {
"description": "Page number (default 1). Use _links.next in the result to see whether another page exists.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Entities per page (max 250; default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"required": [
"entity",
"entity_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kommo_create_lead(name, price, pipeline_id, status_id, responsible_user_id)
Create one lead (deal) in a pipeline stage. Creates a new record on every call: it does not check for duplicates. POST /api/v4/leads.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Lead name."
},
"price": {
"description": "Deal value.",
"type": "number",
"minimum": 0
},
"pipeline_id": {
"description": "Pipeline id (see kommo_list_pipelines).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status_id": {
"description": "Stage id inside the pipeline (see kommo_list_pipelines).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"responsible_user_id": {
"description": "Owner user id (see kommo_list_users).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡kommo_update_lead(lead_id, name, price, pipeline_id, status_id, ...)
Change one lead: name, value, pipeline, stage or owner. Only the given fields change. Repeating the same call gives the same result. PATCH /api/v4/leads/{id}.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Numeric Kommo id."
},
"name": {
"description": "New lead name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"price": {
"description": "New deal value.",
"type": "number",
"minimum": 0
},
"pipeline_id": {
"description": "Move to this pipeline id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status_id": {
"description": "Move to this stage id (inside the pipeline).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"responsible_user_id": {
"description": "New owner user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence