Kommo MCP by usefulapi

List leads, contacts, companies and tasks; create and update leads in Kommo.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,928Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (2.29% of 128k context)

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-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools