Skip to main content
Glama
paskal

bitrix24-mcp-server

by paskal

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KB_API_TOKENNoAPI token for the IT-Solution Knowledge Base app (optional, enables KB tools)
ASR_CHUNK_SECONDSNoSegment length for transcription (default: 30)
PARAKEET_MODEL_DIRNoDirectory for the Parakeet ASR model
KB_API_TOKEN_OP_REFNo1Password reference for the KB API token
BITRIX24_WEBHOOK_URLNoFull Bitrix24 inbound webhook URL (e.g. https://your-domain.bitrix24.ru/rest/USER_ID/SECRET/)
B24_TRANSCRIBE_PYTHONNoPython interpreter with onnx-asr installed (default: python3)
B24_TRANSCRIBE_SCRIPTNoOverride path for transcription script
BITRIX24_WEBHOOK_OP_REFNo1Password reference for the webhook URL (e.g. op://Vault/Item/field)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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_image instead — that posts a proper chat message with IMAGE attachment blocks that render as thumbnails. Stays linked to UF_TASK_WEBDAV_FILES. SAFE: existing attachments are preserved (read-merge-write); your file is appended, not replaced. Two-step under the hood: disk.folder.uploadfile → multipart POST → tasks.task.update with the merged UF_TASK_WEBDAV_FILES list (each id encoded as 'n').

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 message caption is reused on each image's message; if you want per-image captions, call this tool once per image with a distinct message. Returns array of IM message IDs (one per image). Files are saved to B24 disk (folder 732896 by default) so they're permanently accessible, but NOT added to UF_TASK_WEBDAV_FILES — for that, use bitrix24_task_attach_file separately.

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_update to edit, bitrix24_task_comment_delete to remove, or bitrix24_im_message_update/bitrix24_im_message_delete (same underlying message). To ATTACH A FILE to the task (docx brief, screenshot, pdf, etc.), do NOT try to inline it in the comment — use bitrix24_task_attach_file separately. Typical pattern: (1) attach the file, then (2) post a short comment referencing the attached file name. Comment text supports BBCode but NOT Markdown (backticks render literally, ** doesn't bold). Use [B]…[/B], [I]…[/I], [URL=…]…[/URL], [USER=ID]Name[/USER] for mentions. For bullet lists in a COMMENT put a literal • at the line start — []/[LIST] render literally («[]») in comments (they only format inside task DESCRIPTIONS, not comments). DISCLOSURE — the comment text MUST end with a final line, on its own, reading exactly «(написано агентом)»: it posts under the human owner's account but is agent-written (owner rule, favor-group).

bitrix24_task_comment_updateA

Edit the text of an existing Bitrix24 task comment. Pass the comment ID returned by bitrix24_task_comment_add (it equals the IM message ID — task comments mirror 1:1 to the task's IM chat). Use this instead of posting a follow-up «UPD:» comment when you need to correct an earlier message. Only the comment's author can edit. Note: task.commentitem.update direct REST returns ACTION_NOT_ALLOWED for typical webhook scopes, so this tool internally calls im.message.update which works.

bitrix24_task_comment_deleteA

Delete a Bitrix24 task comment by ID. Pass the comment ID returned by bitrix24_task_comment_add. The deleted comment is replaced by a «Это сообщение было удалено» placeholder in the task chat. Only the author or admins can delete. Internally calls im.message.delete (same reason as comment_update — direct task.commentitem.delete is action-not-allowed via webhook scope).

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, backticks, # headings render literally). Supported: [B]bold[/B], [I]italic[/I], [U]under[/U], [S]strike[/S], [URL=...]text[/URL], [USER=ID]Name[/USER] mentions. For bullet lists put a literal • at the line start — []/[LIST] do NOT render in chat (they show as literal «[]»); no tag exists for inline code/filename, wrap in «…». When attaching a file to a chat (the disk im.disk.file.commit MESSAGE caption), keep the caption to ONE short line and post any long explanation as a SEPARATE following message — captions render in an oversized font, so a multi-paragraph caption becomes a wall of text. To post a comment onto a TASK specifically, prefer bitrix24_task_comment_add (it also shows in the task comment section). DISCLOSURE — the message text MUST end with a final line, on its own, reading exactly «(написано агентом)»: it posts under the human owner's account but is agent-written, and this line discloses that to the reader (owner rule, favor-group).

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 message caption is reused on each; for distinct captions call once per file. CAPTION RULE — the file-commit caption renders in an OVERSIZED font, so keep it to ONE short line and post any long explanation as a separate bitrix24_im_message_send message. Returns an array of the created message IDs. Same disclosure convention as bitrix24_im_message_send applies to any accompanying text message. ALWAYS prefer this over hand-rolling the upload with curl: it uses a proper multipart encoder, so filenames containing commas, spaces or Cyrillic are handled correctly, whereas curl -F 'file=@x;filename=a, b.txt' treats the comma as a multi-file separator and dies with «curl: (26) Failed to open/read local data» (caught 2026-07-24).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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