BitrixMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| b24_callA | Call ANY Bitrix24 REST method directly — the universal escape hatch. This is the most reliable tool and covers the entire API surface. Prefer it whenever a typed tool does not fit, or when a typed tool behaves oddly. Parameters go as a JSON POST body, so nested arrays (filter, fields, select, order) are passed exactly as you write them — no manual encoding needed. Args: method: REST method name (no leading slash), e.g. 'crm.deal.get'. params: JSON object of parameters, e.g. {"id": 42} or {"filter": {">=DATE_CREATE": "2026-01-01"}, "select": ["ID","TITLE"]}. webhook_url / personal_webhook: auth overrides (see server instructions). Returns: JSON string with the full response envelope, e.g. {"result": , "total": <int?>, "next": <int?>, "time": {...}}. On failure: {"error": true, "code": "", "message": "..."}. Write safety: if BITRIX_READ_ONLY=1, methods that mutate data (add/update/ delete/...) are refused with code B24_READONLY. |
| b24_batch | Run up to 50 REST calls in a single request (chained, with back-references). Reduces API-limit pressure: 50 sub-calls count as one hit. Commands run in
order; a later command can consume an earlier one's output using Bitrix's
Args: commands: e.g. [{"key":"make","method":"crm.deal.add","params":{"fields":{"TITLE":"X"}}}, {"key":"note","method":"crm.timeline.comment.add", "params":{"fields":{"ENTITY_ID":"$result[make]","ENTITY_TYPE":"deal","COMMENT":"hi"}}}] halt: stop on first error if true. Returns: JSON string: {"result": {key: }, "result_error": {key: err}, "result_next": {...}, "result_total": {...}}. Write safety: with BITRIX_READ_ONLY=1 the whole batch is refused if any command is a write method. |
| b24_test_connectionA | Verify the webhook works and report the acting user and portal. Calls Returns: JSON: {"ok": true, "portal": "...", "user": {"ID","NAME","LAST_NAME","ADMIN"...}} or an error envelope with the Bitrix code. |
| b24_list_methodsA | Discover which REST methods/scopes this webhook can access. Calls Returns: JSON: {"scopes": [...], "methods": [...optional...]}. |
| b24_crm_listA | List CRM records with filtering, sorting, and pagination. Args: entity: classic entity name (default 'deal'). entity_type_id: set to use crm.item.list for SPA/modern objects. filter/select/order/start/fetch_all: standard list controls. Returns: JSON pagination envelope {items, count, total, next, has_more, truncated}. |
| b24_crm_get | Fetch a single CRM record by id (all fields). Returns the record payload (classic entities return the fields object; the modern crm.item API returns {"item": {...}}). |
| b24_crm_fieldsA | Describe an entity's fields, including user fields (UF_*). Essential before add/update so you use correct field codes and enum ids. |
| b24_crm_add | Create a CRM record. Returns the new id (classic) or {"item": {...}} (modern). Writing requires a webhook with the acting user's permissions — pass personal_webhook to create under a specific user. |
| b24_crm_update | Update fields of an existing CRM record. Returns success/the updated item. |
| b24_crm_deleteA | Delete a CRM record. Irreversible — deletes on the portal. |
| b24_crm_timeline_comment_add | Post a comment to a CRM record's timeline. Returns the new comment id. |
| b24_crm_category_listA | List pipelines/categories of a CRM entity type (crm.category.list). Returns categories (id, name, sort). A category is a pipeline; its stages come from b24_crm_status_list or crm.status.list with the right ENTITY_ID. |
| b24_crm_status_listA | List CRM status dictionary entries — stages, sources, types (crm.status.list). Returns a pagination envelope of status entries (STATUS_ID, NAME, ENTITY_ID, SORT). This is how you resolve a stage code like 'C7:NEW' to a human name. |
| b24_crm_activity_list | List CRM activities — calls, meetings, emails, tasks (crm.activity.list). Common filter keys: OWNER_TYPE_ID (1 lead,2 deal,3 contact,4 company), OWNER_ID, TYPE_ID (1 meeting,2 call,3 task,4 email), COMPLETED ('Y'/'N'), RESPONSIBLE_ID, '>=CREATED'. Returns a pagination envelope. |
| b24_crm_activity_addA | Create a CRM activity (crm.activity.add). Returns the new activity id. Activities are complex; call b24_call('crm.activity.fields') first to see the required shape (especially COMMUNICATIONS for calls/emails). |
| b24_crm_productrows_get | List the product rows of a deal/lead/quote (crm.item.productrow.list). |
| b24_crm_productrows_setB | Replace the product rows of a deal/lead/quote (crm.item.productrow.set). |
| b24_crm_currency_listB | List portal currencies (crm.currency.list): CURRENCY, base flag, format, rate. |
| b24_crm_requisite_list | List requisites — legal/bank details of contacts & companies (crm.requisite.list). Common filter keys: ENTITY_TYPE_ID (3 contact, 4 company), ENTITY_ID, PRESET_ID. |
| b24_crm_timeline_comment_listA | List timeline comments of a CRM record (crm.timeline.comment.list). |
| b24_crm_activity_delete | Delete a CRM activity (crm.activity.delete). Irreversible. |
| b24_crm_deal_contacts_get | List contacts linked to a deal (crm.deal.contact.items.get). |
| b24_crm_deal_contacts_setB | Set the contacts linked to a deal (crm.deal.contact.items.set). |
| b24_tasks_listA | List tasks with filtering, sorting, and pagination (tasks.task.list). Common filter keys: RESPONSIBLE_ID, CREATED_BY, GROUP_ID (project/group), STATUS (1 new,2 pending,3 in progress,4 supposedly done,5 completed,6 deferred), STAGE_ID (kanban column), >=CREATED_DATE, etc. Common select: ['ID','TITLE','STATUS','RESPONSIBLE_ID','GROUP_ID','CREATED_BY', 'DEADLINE','STAGE_ID','COMMENTS_COUNT','TAGS']. Caveat for Scrum sprint boards (confirmed live, not just theoretical): STAGE_ID here is reliable for a regular group kanban, but for a task on an active sprint it goes stale the moment the card is moved the correct way (b24_scrum_task_move / a real drag on the board) — Bitrix tracks that move in a separate structure with no public method to read it back. Filtering by STAGE_ID on a sprint board is approximate at best. Returns: JSON pagination envelope {items, count, total, next, has_more, truncated}. |
| b24_task_getA | Fetch a single task by id (tasks.task.get). Returns {"task": {...}}. |
| b24_task_addA | Create a task (tasks.task.add). Returns {"task": {...}} with the new id. |
| b24_task_update | Update a task (tasks.task.update). Also used to move kanban stage (STAGE_ID) — but only for a regular group's kanban (task.stages.get). For a task on an active Scrum sprint board, STAGE_ID here is accepted with no error and reads back correctly, but does NOT relocate the card on the real board (confirmed live: reload the page and it's still in the old column). Use b24_scrum_task_move instead when the task's sprintId is set. |
| b24_task_complete | Mark a task complete (tasks.task.complete). |
| b24_task_delete | Delete a task (tasks.task.delete). Irreversible. |
| b24_task_comments_listA | List a task's comments (task.commentitem.getlist). Returns the comment list. |
| b24_task_comment_addA | Add a comment to a task (task.commentitem.add). Returns the new comment id. |
| b24_task_stages_get | Get kanban stages of a regular (non-Scrum) project/group (task.stages.get). For Scrum groups use b24_scrum_kanban_stages instead — their columns belong to the active sprint, not the group. |
| b24_task_checklist_listB | List a task's checklist items (task.checklistitem.getlist). |
| b24_task_checklist_add | Add a checklist item to a task (task.checklistitem.add). |
| b24_task_elapsed_addB | Log time spent on a task (task.elapseditem.add). Returns the entry id. |
| b24_task_result_list | List a task's results (tasks.task.result.list) — the marked outcomes of the task. |
| b24_scrum_sprint_listA | List sprints of a Scrum group (tasks.api.scrum.sprint.list). Returns a pagination envelope of sprint objects (id, name, dateStart, dateEnd, status, ...). Use the active sprint's id with b24_scrum_kanban_stages to get the real board columns. |
| b24_scrum_kanban_stages | Get the real kanban columns of a sprint (tasks.api.scrum.kanban.getStages). Returns the column definitions (id, name, ...). Feed a column id as STAGE_ID into b24_tasks_list (with the same GROUP_ID) to list tasks in that column. |
| b24_scrum_board | One-shot board snapshot: the active sprint plus its kanban columns. Convenience that runs the correct two-step flow for you and returns {"sprint": {...active sprint...}, "stages": [...columns...]}. Returns a clear message if the group has no active sprint. |
| b24_scrum_task_moveA | Move a task to a column on a Scrum sprint board (tasks.api.scrum.kanban.addTask). Use this instead of b24_task_update's STAGE_ID to relocate a task that belongs to an active sprint. Confirmed live: tasks.task.update with STAGE_ID is accepted with no error and the new value reads back correctly, but the card does not actually move on the real board (reload and it's still in the old column) — this method is Bitrix's board-aware write and is the one that does move it. |
| b24_calendar_event_listA | List calendar events in a date range (calendar.event.get). owner_id defaults to the acting user. Returns {"count": n, "events": [...]} with fields like NAME, DATE_FROM, DATE_TO, ATTENDEE_LIST, etc. |
| b24_calendar_section_listB | List calendars (sections) for an owner (calendar.section.get). |
| b24_calendar_event_addB | Create a calendar event (calendar.event.add). Returns the new event id. |
| b24_calendar_event_update | Update a calendar event (calendar.event.update). |
| b24_calendar_event_deleteA | Delete a calendar event (calendar.event.delete). Irreversible. |
| b24_disk_storage_list | List available Disk storages (disk.storage.getlist): personal, group, company. Returns a pagination envelope of storage objects (ID, NAME, ENTITY_TYPE, ...). Use a storage's root folder id with b24_disk_folder_items to browse it. |
| b24_disk_folder_items | List the contents of a Disk folder (disk.folder.getchildren). Returns a pagination envelope of files and subfolders (ID, NAME, TYPE, DOWNLOAD_URL for files, ...). |
| b24_disk_file_get | Get file metadata incl. DOWNLOAD_URL (disk.file.get). Note: files attached to task/chat messages may require the acting user to be a participant — pass that user's personal_webhook if you get ACCESS_DENIED. |
| b24_disk_folder_addA | Create a subfolder (disk.folder.addsubfolder). Returns the new folder object. |
| b24_disk_file_upload | Upload a file into a Disk folder (disk.folder.uploadfile). Returns the created file object. Content must be base64; the fileContent parameter is sent as [name, base64] with a unique name generated on collision. |
| b24_disk_file_deleteA | Delete a Disk file (disk.file.delete). Moves to trash on the portal. |
| b24_disk_file_contentA | Download a Disk file's content and return it as base64. Resolves DOWNLOAD_URL via disk.file.get, then fetches the bytes server-side (so the portal WAF sees the request, not your client). Guarded by max_size_mb. Returns: {"id","name","size","content_type","base64"} or an error envelope. |
| b24_user_getA | Find users (user.get) with a real filter and pagination. Filter keys include ID, ACTIVE ('Y'/'N'), NAME, LAST_NAME, EMAIL, UF_DEPARTMENT, WORK_POSITION, and '%'-prefixed substring variants (e.g. {'%LAST_NAME': 'Ivan'}). Always filter to keep the result bounded. Returns: JSON pagination envelope {items, count, total, next, has_more, truncated}. |
| b24_user_currentA | Return the acting user's profile (user.current): id, name, admin flag, etc. |
| b24_user_searchA | Free-text search for users (user.search). Better than user.get when you only have a partial name. Returns a pagination envelope of user objects. |
| b24_department_get | List/describe company departments (department.get). Bitrix's department.get has no server-side filter — it silently
ignores a |
| b24_im_recentA | List the acting user's recent chats/dialogs (im.recent.get). Returns recent conversations with their DIALOG_ID, last message, and unread counters. Use a DIALOG_ID with b24_im_dialog_messages to read history. |
| b24_im_dialog_messagesA | Read message history of a chat/dialog (im.dialog.messages.get). Returns messages plus the referenced users/files. Page back with last_id. |
| b24_im_user_get | Get a user's IM profile (im.user.get): name, avatar, work status, online. |
| b24_im_chat_create | Create a group chat (im.chat.add). Returns the new chat id (use 'chat' as DIALOG_ID). |
| b24_im_chat_user_add | Add users to a group chat (im.chat.user.add). |
| b24_im_message_add | Send an IM message to a chat or user (im.message.add). Visible to chat participants / the recipient. Returns the new message id. |
| b24_im_notify_personalA | Send a personal notification to a user (im.notify.personal.add). Appears in the recipient's notification center. Returns the notification id. |
| b24_feed_post_add | Publish a post to the Live Feed (log.blogpost.add). PUBLIC / broadly visible depending on |
| b24_lists_getA | List the available Lists of a given type (lists.get). Returns the list definitions (IBLOCK_ID, NAME, ...). Use an IBLOCK_ID with b24_lists_element_list to read its records. |
| b24_lists_element_listA | List elements (records) of a list (lists.element.get) with pagination. Field codes are usually PROPERTY_ for custom properties plus NAME, ID, CREATED_BY, etc. Use b24_call('lists.field.get', ...) to inspect field codes. |
| b24_lists_element_addB | Create a list element (lists.element.add). Returns the new element id. |
| b24_lists_element_update | Update a list element (lists.element.update). |
| b24_lists_element_delete | Delete a list element (lists.element.delete). Irreversible. |
| b24_catalog_product_listA | List catalog products (catalog.product.list) with pagination. Common filter keys: iblockId (catalog id), id, name. Returns a pagination envelope of product objects. |
| b24_catalog_product_get | Fetch one catalog product (catalog.product.get). Returns {"product": {...}}. |
| b24_catalog_product_addB | Create a catalog product (catalog.product.add). Returns {"product": {...}}. |
| b24_catalog_product_updateC | Update a catalog product (catalog.product.update). |
| b24_catalog_listA | List catalogs (catalog.catalog.list): the commercial catalogs / iblocks. |
| b24_catalog_section_list | List catalog sections/categories (catalog.section.list). Common filter keys: iblockId, id, name, sectionId (parent). |
| b24_crm_product_listA | List classic CRM catalog products (crm.product.list) with pagination. Common filter keys: NAME, SECTION_ID, ACTIVE ('Y'/'N'), CATALOG_ID. |
| b24_bizproc_template_listA | List workflow templates (bizproc.workflow.template.list). Returns templates (ID, NAME, DOCUMENT_TYPE, AUTO_EXECUTE). Use a template ID plus a concrete document id with b24_bizproc_start. |
| b24_bizproc_start | Launch a business process on a document (bizproc.workflow.start). Potentially impactful — a workflow can move stages, send mail, create tasks. Returns the running workflow id. |
| b24_telephony_statisticsA | List call statistics (voximplant.statistic.get) with pagination. Common filter keys: '>=CALL_START_DATE', 'PORTAL_USER_ID', 'CALL_TYPE' (1 outbound, 2 inbound), 'CALL_FAILED_CODE', 'PHONE_NUMBER'. Returns a pagination envelope of call records (CALL_ID, duration, cost, recording URL...). |
| b24_group_listA | List workgroups/projects (sonet_group.get) with a working filter. Filter keys include NAME, '%NAME' (substring), ACTIVE ('Y'/'N'), CLOSED, OWNER_ID, SUBJECT_ID. Returns a pagination envelope of group objects (ID, NAME, DESCRIPTION, SCRUM_MASTER_ID, ...). |
| b24_group_usersA | List members of a workgroup (sonet_group.user.get). Returns members with USER_ID and ROLE ('A' owner/moderator, 'E' member, ...). |
| b24_group_createB | Create a workgroup/project (sonet_group.create). Returns the new group id. |
| b24_group_updateB | Update a workgroup (sonet_group.update). |
| b24_group_delete | Delete a workgroup (sonet_group.delete). Irreversible. |
| b24_sale_order_list | List store orders (sale.order.list) with pagination. Common filter keys: id, statusId, '>=dateInsert', userId, '>=price'. Returns a pagination envelope of order objects. |
| b24_sale_order_getA | Fetch a single store order (sale.order.get). Returns {"order": {...}}. |
| b24_documentgenerator_templatesA | List document templates (crm.documentgenerator.template.list). Filter examples: {'active':'Y'}, {'entityTypeId':2} (deals). Returns a pagination envelope of templates (id, name, ...). |
| b24_documentgenerator_addA | Generate a document from a template and CRM record (crm.documentgenerator.document.add). Returns the created document (id, downloadUrl, pdfUrl, ...). |
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
- 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/john7ross/BitrixMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server