bitrix24-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KB_API_TOKEN | No | API token for the IT-Solution Knowledge Base app (optional, enables KB tools) | |
| ASR_CHUNK_SECONDS | No | Segment length for transcription (default: 30) | |
| PARAKEET_MODEL_DIR | No | Directory for the Parakeet ASR model | |
| KB_API_TOKEN_OP_REF | No | 1Password reference for the KB API token | |
| BITRIX24_WEBHOOK_URL | No | Full Bitrix24 inbound webhook URL (e.g. https://your-domain.bitrix24.ru/rest/USER_ID/SECRET/) | |
| B24_TRANSCRIBE_PYTHON | No | Python interpreter with onnx-asr installed (default: python3) | |
| B24_TRANSCRIBE_SCRIPT | No | Override path for transcription script | |
| BITRIX24_WEBHOOK_OP_REF | No | 1Password reference for the webhook URL (e.g. op://Vault/Item/field) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bitrix24_task_listB | List and filter Bitrix24 tasks. Filter by status, responsible user, workgroup, etc. |
| bitrix24_task_getA | Get a single Bitrix24 task by ID with full details |
| bitrix24_task_createB | Create a new Bitrix24 task |
| bitrix24_task_updateB | Update an existing Bitrix24 task |
| bitrix24_task_completeB | Mark a Bitrix24 task as completed |
| bitrix24_task_startA | Start working on a Bitrix24 task (set status to In Progress) |
| bitrix24_task_deferC | Defer a Bitrix24 task |
| bitrix24_task_attach_fileA | Attach a local file (docx, pdf, image, anything) to a Bitrix24 task. Use this for delivering briefs, reports, signed-off specs — anything that should land as a downloadable attachment in the task's Files tab. The file shows as « добавил файл» in chat but WITHOUT an image thumbnail/preview even for PNG/JPG (chat just shows filename). For screenshots / images you want INLINE-PREVIEWED in chat, use |
| bitrix24_task_post_imageA | Post chat message(s) to a Bitrix24 task with images that render INLINE as thumbnails (not just filename links). Use this for screenshots, design mockups, photo evidence — anything where the reader should see the image without clicking through. Each local file path is uploaded to disk, then a SEPARATE chat message is posted per image (Bitrix renders multi-image single-messages with broken second-image placeholders — verified 2026-05-19). The same |
| bitrix24_task_comment_listA | Read task chat messages (modern B24). In current Bitrix24, all task discussion happens in the task's IM chat (right panel). Legacy forum comments (left panel) are deprecated. This tool reads from IM chat first, falls back to forum comments for old tasks. |
| bitrix24_task_comment_addA | Add a comment to a Bitrix24 task. Uses legacy forum API which posts to both the task chat and the comment section. The message will appear in the task's IM chat for all participants. RETURNS the comment ID (numeric) — keep it: the same ID can later be passed to |
| bitrix24_task_comment_updateA | Edit the text of an existing Bitrix24 task comment. Pass the comment ID returned by |
| bitrix24_task_comment_deleteA | Delete a Bitrix24 task comment by ID. Pass the comment ID returned by |
| bitrix24_task_checklist_listB | List checklist items for a Bitrix24 task |
| bitrix24_task_checklist_addB | Add a checklist item to a Bitrix24 task |
| bitrix24_task_checklist_completeB | Mark a checklist item as complete |
| bitrix24_task_stages_listA | List Kanban stages for a workgroup/project (entityId=0 for personal Kanban) |
| bitrix24_task_stage_moveB | Move a task to a different Kanban stage |
| bitrix24_crm_deal_listB | List and filter CRM deals |
| bitrix24_crm_deal_getA | Get a single CRM deal by ID |
| bitrix24_crm_contact_listB | List and filter CRM contacts |
| bitrix24_crm_contact_getB | Get a single CRM contact by ID |
| bitrix24_crm_lead_listC | List and filter CRM leads |
| bitrix24_crm_lead_getB | Get a single CRM lead by ID |
| bitrix24_crm_activity_listA | List timeline activities (calls, emails, SMS, meetings) on a CRM lead/deal/contact/company. Use this to see a lead's call log: each phone call is one activity. Key fields: TYPE_ID (2=call, 4=email, 6=SMS, 1=meeting, 3=task), PROVIDER_TYPE_ID ('CALL' for phone), DIRECTION (1=incoming, 2=outgoing), START_TIME/END_TIME (subtract for duration), RESPONSIBLE_ID (the manager). FILES are ATTACHMENTS, not just call recordings: on an email activity they are the documents that were sent or received (счёт, спецификация, смета, КП, договор, ТЗ, чертежи). Raw Bitrix returns them as bare {id, url} with no name, so this tool resolves each one and adds name/size/kind plus a per-activity FILES_SUMMARY {documents, document_names, call_recordings, signature_images, images, other}. ALWAYS read FILES_SUMMARY.document_names before concluding that a manager sent no calculation, no price or no КП — the price is routinely in the attached PDF while the email body says only «направляю расчёт». Inline Outlook signature logos (image001.png and similar) are classified as signature_image and carry no meaning. CALL TRANSCRIPTS: the activity record itself has no transcript field (DESCRIPTION/PROVIDER_DATA are empty on calls, and Bitrix's own BitrixGPT call scoring is UI-only), but this portal runs a local speech-to-text pipeline that writes finished transcripts into the call's TIMELINE NOTE. So a missing transcript here does NOT mean there is none: check bitrix24_crm_timeline_note_get (itemId = the call activity ID) before concluding anything about a call, then fall back to bitrix24_crm_timeline_comment_list. Coverage of the note pipeline is partial (~16% of call activities, skewed to longer calls), so an absent note is not evidence that no conversation happened. For call duration/direction/recording-file-id use bitrix24_voximplant_statistic_get, which is authoritative over anything written in a note header. |
| bitrix24_voximplant_statistic_getA | Get telephony call statistics (Mango Office / Voximplant) — one row per call. Filter by CRM_ENTITY_ID (the lead/deal id), CRM_ACTIVITY_ID, CALL_ID, or PORTAL_USER_ID. Key fields: CALL_DURATION (seconds), CALL_TYPE (1=outbound, 2=inbound), CALL_START_DATE, PHONE_NUMBER, PORTAL_USER_ID (the manager), RECORD_FILE_ID (the audio recording's disk file id, null if not recorded), CALL_FAILED_CODE (200=answered, 304=missed), CALL_VOTE, REST_APP_NAME (the telephony connector). TRANSCRIPT_ID / TRANSCRIPT_PENDING stay null/'N' on this portal (re-verified 2026-07-28 across the 50 most recent calls): Bitrix's own transcription and BitrixGPT scoring are UI-only CoPilot features, not exposed via REST. To understand a call, first check the local pipeline's transcript in the timeline note (bitrix24_crm_timeline_note_get, itemId = CRM_ACTIVITY_ID); only if there is none, download the recording (RECORD_FILE_ID) and transcribe it with bitrix24_call_transcribe. This method is the authority on direction and duration — a note header that disagrees is wrong. |
| bitrix24_crm_timeline_comment_listA | List manual timeline comments (manager notes) on a CRM lead/deal/contact/company. These are the free-text notes a manager types into the entity timeline — separate from activities (calls/emails). Returns COMMENT (the note text), AUTHOR_ID (who wrote it), CREATED. Useful for reviewing what a manager recorded about a deal beyond the structured fields. |
| bitrix24_call_transcribeA | Transcribe a CRM call recording LOCALLY and fully offline (audio never leaves the machine). Resolves the call's recording (Voximplant/Mango RECORD_FILE_ID), downloads it, and decodes it with local Whisper large-v3 (strong Russian). Works out of the box — the MCP auto-bootstraps its own Python venv + model on first use (first call is slow: it downloads the ~3 GB model). A bounded worker pool serves calls, so firing hundreds at once just queues and drains N-at-a-time. This does NOT write anything to Bitrix — it only returns the transcript. To store it, the caller saves it with bitrix24_crm_timeline_note_save. Returns {text, segments, responsibleId, direction}: raw, unlabelled segments (Whisper splits by pause, not by speaker). For «who-said-what» labels the calling model decides — it has responsibleId (the manager) here and the client's name on the lead. Substitutes for Bitrix's UI-only call transcription/BitrixGPT scoring, which is NOT in the REST API. NOTE: phone audio is 8 kHz mono (mixed-speaker), so expect substance-accurate but imperfect text. |
| bitrix24_call_transcribe_maxA | MAX-quality transcription of a CRM call — the highest-fidelity pipeline, for when the basic bitrix24_call_transcribe isn't good enough. Runs THREE local models on the recording and returns the raw materials for you (the calling model) to reconcile into one clean transcript: • GigaAM v2 — Russian-native, never hallucinates, gets domain terms right (the reliable backbone) • Whisper large-v3 with condition_on_previous_text=False + domain hotwords — punctuation + proper nouns • pyannote diarization — speaker turns (who spoke when) Returns {whisper_text, gigaam_text, segments:[{start,speaker,text}], speakers, reconcile_hint}. YOU reconcile: keep Whisper for punctuation/proper-nouns, trust GigaAM where Whisper diverges into non-Russian garbage (hallucination), assign Менеджер/Клиент per speaker from content, fix diarization flips — then save with bitrix24_crm_timeline_note_save. Brand names are auto-normalised (V-LUX / вилюкс → Velux, etc.). REQUIRES: a heavy Python env (faster-whisper + gigaam + pyannote.audio + torch) at B24_MAX_PYTHON, and an HF token (env HF_TOKEN or B24_HF_TOKEN) whose account has accepted the pyannote gated-model terms. If any of that is missing the tool returns a clear, actionable error (error_type: missing_hf_token | missing_deps | model_not_approved) — fix that, then retry. Slower than basic (three models, no pooling). |
| bitrix24_call_transcribe_fastA | FAST transcription of a CRM call — the quickest, cheapest tier. Runs a SINGLE local model, GigaAM v2 (Russian-native RNNT): ~5x real-time on CPU, never hallucinates, gets Russian domain terms right. Trade-off vs the default bitrix24_call_transcribe (Whisper): raw lowercase, minimal punctuation, NO speaker labels. Use it when you want the gist fast/cheap and don't need Whisper's punctuation or the max tier's dual-transcript + diarization. The three tiers: fast = GigaAM only (this) · default = Whisper large-v3 (slower, punctuated, readable) · max = both + diarization reconciled (best, slowest). Audio is decoded LOCALLY (never leaves the machine). Returns {text, engine, responsibleId, direction}; brand names auto-normalised (вилюкс → Velux). REQUIRES a Python env (gigaam + soundfile + torch) at B24_FAST_PYTHON — if missing, returns a clear error (error_type: missing_deps). Does NOT write to Bitrix; save with bitrix24_crm_timeline_note_save. |
| bitrix24_crm_timeline_note_getA | Read the «заметка» note attached to a CRM timeline item (e.g. a specific call). Returns the note text, or null if there is none. Use this before saving to check whether a note already exists (so you don't clobber a human note or a prior transcript). |
| bitrix24_crm_timeline_note_saveA | Save the «заметка» note on a CRM timeline item (e.g. the note on a specific call, so it appears at the call, not as a loose lead comment). A timeline item has exactly ONE note — saving REPLACES it. Anti-clobber safeguard: in the default mode='create', if a note already exists this does NOT overwrite it — it writes your text to a local draft file and returns the existing note plus a recommendation, so the calling model can decide. Re-call with mode='replace' to overwrite, or mode='append' to keep both (existing + a separator + new). |
| bitrix24_user_getB | Get Bitrix24 user(s) by ID or filter |
| bitrix24_user_searchC | Search Bitrix24 users by name |
| bitrix24_workgroup_listC | List Bitrix24 workgroups and projects |
| bitrix24_im_chat_listA | List IM chats the current user participates in. Returns recent conversations sorted by last activity. Use to discover chat IDs for reading messages. |
| bitrix24_im_chat_messagesA | Read messages from a Bitrix24 IM chat. Use for reading task chats, group chats, or 1-on-1 dialogs. For task chats, the DIALOG_ID is 'chatNNN' where NNN is the task's chatId field. Messages with attachments carry a 'files' array (fileId, name, type, dimensions); image attachments are inlined as viewable images by default so you see what a human reading the chat sees. Non-image files and over-sized images are listed by metadata — fetch them with bitrix24_im_file_get. ⚠️ TEXT FIELDS: 'text' is the display-rendered form with BBCode/HTML stripped — it is LOSSY. A message containing [URL=https://…]#146426[/URL] comes back as bare '#146426', and [USER=…] mentions and [B]bold[/B] are flattened the same way. When the original markup exists, the message also carries 'textRaw' with it intact. NEVER rebuild a message for bitrix24_im_message_update from 'text' — you will silently destroy every link, mention and format in it (caught 2026-07-24: an edited ads report lost all 8 CRM deep links). Edit from 'textRaw', or re-author the BBCode explicitly. |
| bitrix24_im_message_sendA | Send a NEW Bitrix24 IM message. Use this to message a person privately (1-on-1) or post into a group/task chat — it's the send counterpart to bitrix24_im_message_update (edit) and bitrix24_im_message_delete. The message is sent under the webhook owner's identity. For a PRIVATE 1-on-1 message pass the recipient's numeric user ID as dialogId (e.g. '8' for Aleksandr); for a group/task chat pass 'chatNNN'. Returns the new message ID (reuse it with update/delete). FORMATTING — plain text + BBCode only; Bitrix does NOT parse Markdown (bold, |
| bitrix24_im_message_deleteA | Delete a message from a Bitrix24 IM chat (including task chats). Pass the numeric message ID as returned by bitrix24_im_chat_messages or bitrix24_task_comment_list. Only the message author or admins can delete. |
| bitrix24_im_message_updateA | Edit the text of a Bitrix24 IM chat message (including task chats). Pass the numeric message ID and the new text. Only the message author can edit. Same formatting rules as bitrix24_im_message_send: plain text + BBCode only (no Markdown), bullet lines start with a literal • (not [*]). Keep the «(написано агентом)» disclosure line as the final line of the edited text (owner rule, favor-group). ⚠️ The text you pass REPLACES the message wholesale — there is no merge. If you are editing an existing message, build the new text from that message's 'textRaw' (bitrix24_im_chat_messages), NOT from its 'text', which has BBCode stripped: round-tripping 'text' silently deletes every [URL=…] deep link, [USER=…] mention and [B]bold[/B]. Re-emit CRM references in full BBCode, e.g. [URL=https://fs-group.bitrix24.ru/crm/lead/details/NNNNN/]#NNNNN[/URL]. |
| bitrix24_im_chat_searchA | Search for IM chats by name/title. Useful for finding workgroup chats, project chats, or specific conversations. |
| bitrix24_im_file_getA | Fetch a single file attached to a Bitrix24 chat message by its fileId (from bitrix24_im_chat_messages files[].fileId). Images are returned as viewable image content; other file types return metadata plus a webhook-authenticated download URL. Use this for attachments bitrix24_im_chat_messages didn't inline (non-images, or images past the inline size/count cap). |
| bitrix24_im_post_fileA | Post local file(s) of ANY type into a Bitrix24 chat — .txt/.docx/.pdf/.zip/images alike — in a group/workgroup/project chat, a task chat, or a 1-on-1. This is the attachment counterpart to bitrix24_im_message_send (which is text-only) and the chat equivalent of bitrix24_task_attach_file / bitrix24_task_post_image (which only post into a TASK). IMAGES additionally render INLINE as a preview thumbnail; every other type posts as a normal downloadable file message with the caption — so use this whenever a file has to reach a chat, not just for pictures. Under the hood it uploads each file into the CHAT'S OWN disk folder and commits it (im.disk.folder.get → disk.folder.uploadfile → im.disk.file.commit) — the native-client flow, so every chat member can see it regardless of shared-folder permissions. One SEPARATE message is posted per file (Bitrix renders multiple images stacked in a single message with broken placeholders), and the same |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paskal/bitrix24-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server