Skip to main content
Glama
Rip-07

bitrix24-mcp

by Rip-07

bitrix24-mcp

English · Русский

MCP server that lets AI agents (Claude, ChatGPT, Cursor, your own agents) work with a Bitrix24 portal: CRM deals, contacts, leads and tasks.

Unofficial project, not affiliated with 1C-Bitrix.


Русский

Что умеет

Инструмент

Что делает

Режим

whoami

от имени какого пользователя работает вебхук

чтение

list_deal_stages

стадии воронки (для фильтров и смены стадии)

чтение

list_deals

сделки с фильтрами по стадии, воронке, ответственному, названию

чтение

get_deal

все поля сделки

чтение

search_contacts

поиск контактов по телефону, email или имени

чтение

get_contact

карточка контакта

чтение

list_leads

лиды, в том числе по статусу

чтение

list_tasks

задачи по ответственному и статусу

чтение

create_lead

создать лид

запись

create_deal

создать сделку (по умолчанию в KZT)

запись

move_deal_stage

перевести сделку на другую стадию

запись

add_deal_comment

комментарий в таймлайн сделки

запись

create_task

создать задачу

запись

По умолчанию сервер только читает. Инструменты записи появляются при BITRIX24_READ_ONLY=false.

Быстрый старт

1. Создайте входящий вебхук в Bitrix24. Разработчикам → Другое → Входящий вебхук. Дайте только нужные права (crm, task, user). Скопируйте URL вида https://ваш-портал.bitrix24.kz/rest/1/xxxxxxxx/. Это секрет: с ним можно действовать в CRM от имени пользователя вебхука.

2. Подключите к Claude Code:

claude mcp add bitrix24 \
  -e BITRIX24_WEBHOOK_URL="https://ваш-портал.bitrix24.kz/rest/1/xxxxxxxx/" \
  -- uvx --from git+https://github.com/Rip-07/bitrix24-mcp bitrix24-mcp

Или к Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "bitrix24": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/Rip-07/bitrix24-mcp", "bitrix24-mcp"],
      "env": { "BITRIX24_WEBHOOK_URL": "https://ваш-портал.bitrix24.kz/rest/1/xxxxxxxx/" }
    }
  }
}

3. Спросите агента: «покажи сделки на стадии "Переговоры"» или «найди контакт по номеру +7 701 123 45 67».

Docker (HTTP-режим для удалённых агентов)

cp .env.example .env   # заполните BITRIX24_WEBHOOK_URL и MCP_AUTH_TOKEN
docker compose up -d --build
curl http://127.0.0.1:8000/health

MCP-эндпоинт: http://127.0.0.1:8000/mcp. Клиент должен передавать заголовок Authorization: Bearer <MCP_AUTH_TOKEN>. Без токена HTTP-режим не запустится. Наружу публикуйте только через обратный прокси с TLS.

Настройки

Переменная

По умолчанию

Описание

BITRIX24_WEBHOOK_URL

—

URL входящего вебхука (обязательно)

BITRIX24_READ_ONLY

true

false включает инструменты записи

BITRIX24_ALLOW_RAW_CALLS

false

инструмент call_method для любого метода REST API

MCP_TRANSPORT

stdio

stdio или http

MCP_HOST / MCP_PORT

127.0.0.1 / 8000

адрес HTTP-сервера

MCP_AUTH_TOKEN

—

Bearer-токен, обязателен для http

MCP_ALLOWED_HOSTS

—

разрешённые заголовки Host (защита от DNS rebinding)

LOG_LEVEL

INFO

уровень логов (пишутся в stderr)

Безопасность

  • Режим только чтения по умолчанию, запись включается явно.

  • Токен вебхука маскируется в логах и сообщениях об ошибках.

  • Имена методов проверяются, произвольные пути к API не принимаются.

  • HTTP-режим требует Bearer-токен. Docker-образ работает от непривилегированного пользователя.

  • Повторные запросы при лимите Bitrix24 (QUERY_LIMIT_EXCEEDED).

Частые проблемы

  • CERTIFICATE_VERIFY_FAILED на macOS с Python из python.org: выполните /Applications/Python 3.x/Install Certificates.command или задайте SSL_CERT_FILE=/etc/ssl/cert.pem.

Разработка

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest -q && ruff check .

Планы

Компании, товары в сделках, звонки и чат-боты (imbot), события через исходящие вебхуки, OAuth-приложение для Маркетплейса Bitrix24. Предложения и PR приветствуются.


Related MCP server: Bitrix24 MCP Server

English

MCP server for Bitrix24 CRM and tasks. Read-only by default; set BITRIX24_READ_ONLY=false to enable write tools (create leads, deals and tasks, move deal stages, add timeline comments).

Quick start (Claude Code):

claude mcp add bitrix24 \
  -e BITRIX24_WEBHOOK_URL="https://your-portal.bitrix24.com/rest/1/xxxxxxxx/" \
  -- uvx --from git+https://github.com/Rip-07/bitrix24-mcp bitrix24-mcp

Create the webhook under Developer resources → Other → Inbound webhook with only the scopes you need (crm, task, user). The URL is a secret.

Docker / remote agents: docker compose up -d serves Streamable HTTP at /mcp and requires Authorization: Bearer <MCP_AUTH_TOKEN>. See the settings table above for all environment variables.

Safety: webhook tokens are masked in logs and errors, method names are validated, rate-limit errors are retried with backoff, the Docker image runs as a non-root user.

Troubleshooting

  • CERTIFICATE_VERIFY_FAILED on macOS with the python.org installer: run /Applications/Python 3.x/Install Certificates.command or set SSL_CERT_FILE=/etc/ssl/cert.pem.

License

MIT © Askhat Akhtanov

Available Tools

8 tools
get_contactB
Read-only

Get one contact; phones and emails are returned as plain lists.

NameRequiredDescriptionDefault
contact_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The note that phones and emails come back as plain lists is genuine format context, but with an output schema present it partially restates structured data, and it says nothing about error behavior for a missing ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

One compact sentence with the core action front-loaded and no filler. The trailing clause about list-shaped return values is the only part that could be trimmed given the output schema.

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?

For a one-parameter read tool with annotations and an output schema, the main missing pieces are the provenance of contact_id and any not-found behavior. Adequate to make the call, but not sufficient to make it reliably on the first attempt.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for contact_id and adds nothing — it never identifies the parameter as a contact identifier or says where an agent would obtain a valid value. A single undocumented parameter leaves a real gap.

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?

Names a specific verb and resource: 'Get one contact' unambiguously identifies a single-record retrieval. It does not, however, distinguish itself from the sibling search_contacts, so an agent must infer that this is the by-ID lookup rather than the search path.

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

Usage Guidelines3/5

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

Usage is only implied by the singular 'one contact' phrasing and the required contact_id — there is no statement about when to prefer this over search_contacts or what to do when the ID is unknown. No exclusions or prerequisites are given.

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

get_dealC
Read-only

Get all fields of one deal.

NameRequiredDescriptionDefault
deal_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only that all fields are returned, saying nothing about not-found behavior, permissions, or error cases beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

A single short sentence with the key scope ('all fields') front-loaded and no wasted words.

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?

An output schema exists so return values needn't be described, but the single parameter is undocumented and no usage context is given. For a lookup tool with a foreign-key-style argument, this is thin.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain deal_id's format, source, or whether it must come from list_deals. The phrase 'one deal' only implies singular lookup, adding minimal value over the bare schema.

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 states a specific verb ('Get') and resource ('one deal') with scope ('all fields'). It does not distinguish itself from siblings like list_deals or search_contacts, which an agent must infer from plural naming alone.

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?

There is no guidance on when to use this versus list_deals or how to obtain the deal_id. No prerequisites, no exclusions, no alternatives are mentioned.

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

list_dealsB
Read-only

List deals, newest first. Filters are optional and combined with AND.

NameRequiredDescriptionDefault
limitNo
stage_idNo
category_idNo
assigned_by_idNo
title_containsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the sort order and the AND-combination semantics of filters, which is genuine added context, but it says nothing about pagination, the default limit of 20, or result volume — relevant for a list tool over an open-world dataset.

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?

Two sentences, no filler, with the ordering and filter behavior front-loaded. Nothing is wasted and nothing is buried.

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?

An output schema exists and read-only annotations cover safety, so return values needn't be described. Still, for a 5-parameter list tool with zero schema documentation, the description leaves meaningful gaps: pagination, the limit ceiling, and the meaning of the ambiguous id filters.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the burden and largely does not meet it. It only establishes that all filters are optional and ANDed together; it never explains whether stage_id is an opaque string id, whether assigned_by_id means "assigned to" or "assigned by," or that title_contains is a substring match.

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?

States a specific verb and resource ("List deals") plus a default ordering ("newest first"), which is enough to separate it from get_deal (single record) and list_deal_stages (different resource). It never names a sibling or clarifies why you'd pick this over a search tool, so it falls short of a 5.

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

Usage Guidelines3/5

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

"Filters are optional and combined with AND" gives real invocation context — you learn you can call it with zero arguments and that multiple filters narrow rather than broaden. However there is no when-to-use vs. alternative guidance, no mention of pagination strategy, and no indication of what an unfiltered call returns.

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

list_deal_stagesB
Read-only

List deal stages of a pipeline (category 0 is the default pipeline).

NameRequiredDescriptionDefault
category_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With readOnlyHint=true and openWorldHint=true already declared, the description's only added behavioral content is the default-pipeline note, which is really parameter semantics. It says nothing about ordering of returned stages, whether stage IDs are reusable elsewhere, or what an invalid category returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

One front-loaded sentence with the key resource first and the one clarifying detail in parentheses. No waste, though the 'category 0' phrasing is slightly ambiguous before the parameter name is read.

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?

A one-parameter read tool backed by an output schema and safety annotations needs little prose, and this is close to sufficient. It falls short only on how a caller learns valid category IDs and whether deal stages are workspace-scoped.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It does partially: 'category 0 is the default pipeline' explains that category_id selects a pipeline and that 0 is the default, but it never defines what a category is relative to a pipeline or how to discover valid IDs.

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?

States a specific verb and resource: 'List deal stages of a pipeline.' This is clearly distinct from siblings like list_deals and get_deal, which operate on deals rather than stage metadata, though the description never names those siblings explicitly.

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

Usage Guidelines3/5

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

The parenthetical '(category 0 is the default pipeline)' implies you can omit the argument to get the default pipeline, which is a usage hint, but there is no explicit when-to-use or when-not guidance and no mention of alternatives.

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

list_leadsA
Read-only

List leads, newest first, optionally by status (e.g. NEW, IN_PROCESS).

NameRequiredDescriptionDefault
limitNo
status_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the useful ordering trait ("newest first"), but says nothing about result volume, the default page size of 20, or how to page past it.

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?

A single sentence with the resource, ordering, and optional filter front-loaded in that order. No filler, no redundancy.

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?

An output schema exists, so return shape need not be explained, and the tool is simple with only two optional params. The gap is the undocumented limit/pagination semantics, which an agent needs to avoid silently truncating results at 20.

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 coverage is 0%, so the description must compensate. It does explain status_id with concrete example values (NEW, IN_PROCESS), which the schema lacks (it is just a nullable string). However, the limit parameter is never mentioned, leaving one of two params undocumented everywhere.

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?

States a specific verb and resource ("List leads") plus the default ordering ("newest first"), which is enough to distinguish it from the deal/contact/task siblings. It does not explicitly name a sibling alternative, but the resource is unambiguous.

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

Usage Guidelines3/5

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

"optionally by status" implies the filter is optional and gives example values, which implies when to use it. There is no explicit when-not guidance, no mention of pagination behavior, and no named alternative for fetching a single lead.

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

list_tasksB
Read-only

List tasks, newest first.

status: 2 pending, 3 in progress, 4 awaiting control, 5 completed, 6 deferred.

NameRequiredDescriptionDefault
limitNo
statusNo
responsible_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior context (default ordering newest-first) and the status code legend, but says nothing about pagination, default limit behavior, or whether results are truncated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Two short lines, front-loaded with the core action and ordering. The status legend is dense but earns its place given the 0% schema coverage. Slightly cryptic formatting ('status:' as a bare label) costs a point.

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?

An output schema exists, so return-value explanation is not needed. However, for a 3-parameter tool with zero schema description coverage, the definition omits the meaning of 'limit' and 'responsible_id' and doesn't clarify whether status filtering accepts a single value or a list — gaps an agent would hit at call time.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does document the status parameter's magic integer values well (2–6), but leaves 'limit' and 'responsible_id' entirely unexplained, and the status legend appears incomplete (values 0/1 are unaccounted for). Partial compensation only.

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?

States a specific verb and resource ('List tasks') plus a scope/ordering detail ('newest first'), which is enough to distinguish it from the sibling tools (deals, contacts, leads, deal stages). No sibling performs a similar task-listing function, so no explicit differentiation is required.

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

Usage Guidelines3/5

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

Usage is implied by the verb — an agent knows to call this when it needs tasks — but there is no explicit statement of when to use it versus alternatives, no prerequisites, and no note on how to combine the status and responsible_id filters. Adequate but thin.

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

search_contactsA
Read-only

Find contacts by phone, email or name.

A query with '@' searches email, a query with 6+ digits searches phone, anything else searches first and last name.

NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint), so the description's job is to add matching behavior — and it does, disclosing the field-routing heuristic the agent cannot infer elsewhere. It stays silent on partial vs exact matching, ordering, and how the default limit truncates results, which keeps it from a 5.

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?

Two short sentences, front-loaded purpose followed by the dispatch rules, with zero filler. Every clause carries information the agent needs to build a valid query.

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

Completeness5/5

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

An output schema exists, so return values needn't be explained, and annotations cover the safety profile. For a two-parameter search tool, the description supplies everything needed to select and invoke it correctly apart from `limit` behavior, which is minor.

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?

Schema description coverage is 0% (only titles and a default), so the description must compensate — and it fully specifies the semantics of the required `query` parameter via the '@'/digit/name rules. The `limit` parameter is left entirely undocumented beyond its default of 10, so compensation is incomplete for one of the two params.

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?

States a specific verb and resource ('Find contacts') plus the three attributes searched (phone, email, name). However, it never distinguishes itself from the sibling get_contact, which an agent could reasonably consider for single-record lookups.

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

Usage Guidelines3/5

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

The description gives strong guidance on how to construct the query ('@' for email, 6+ digits for phone, otherwise name), which is effectively usage guidance for the single critical parameter. But it offers no when-to-use/when-not framing versus alternatives such as get_contact or list_leads; usage is only implied by the query format rules.

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

whoamiA
Read-only

Return the Bitrix24 user the webhook acts as (ID, name, email).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=true already declares a safe read and openWorldHint=true signals an external boundary, so the description's burden is light. It adds the return-field list, but that duplicates the output schema and it says nothing about failure behavior (e.g., invalid or expired webhook) or response envelope.

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?

A single sentence with no waste, front-loading the action and immediately disambiguating which user is returned. Nothing could be cut without losing meaning.

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

Completeness4/5

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

With no inputs, annotations declaring the read-only external nature, and an output schema documenting return values, the description covers nearly everything an agent needs. The only gap is error/authentication-failure behavior for a webhook-scoped identity call.

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 takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The field list in the description is about output, not inputs, and does not change this.

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

Purpose5/5

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

States a specific verb ('Return') and a precisely scoped resource: the Bitrix24 user the webhook is acting as, not an arbitrary user. The 'webhook acts as' qualifier plus the returned fields (ID, name, email) make it unmistakable against the deal/contact/lead/task siblings.

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

Usage Guidelines3/5

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

The use case is implied (identify the authenticated identity behind the webhook), but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. Because no sibling tool overlaps this function, the omission is low-risk, so a 3 rather than 2.

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. 8 tool updatesv0.1.0
    • First observedget_contact
    • First observedget_deal
    • First observedlist_deal_stages
    • First observedlist_deals
    • First observedlist_leads
    • First observedlist_tasks
    • First observedsearch_contacts
    • First observedwhoami

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool maps to a distinct resource/action: identity, deal stages, deals list/get, contact search/get, leads, and tasks. The only near-neighbor pair is list_deals/list_deal_stages, but their descriptions make the boundary clear.

Naming Consistency4/5

Seven of eight tools follow a predictable verb_noun snake_case pattern such as list_deals, get_deal, and search_contacts. whoami is an idiomatic exception, but otherwise singular/plural usage is consistent with the list-vs-get convention.

Tool Count5/5

Eight tools is well within the recommended 3-15 range and each covers a distinct operation. There are no redundant or filler tools for the apparent read-only Bitrix24 subset.

Completeness2/5

The surface is almost entirely read-only: there are no create, update, or delete operations for deals, contacts, leads, or tasks. It also lacks get_lead, get_task, and a general list_contacts, so agents cannot complete mutating CRM workflows or inspect individual leads/tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    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
    8 npm
    34
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables language models to interact with Bitrix24 CRM, providing tools to manage deals, leads, contacts, tasks, activities, users, files, chat messages, and live chat sessions.
    8 npm
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with Bitrix24 CRM through standardized MCP tools, including searching and managing contacts, deals, leads, tasks, and replying in chats.
    MIT