# TalkBar MCP & CLI documentation > Official learning reference for AI assistants using TalkBar through its local MCP server or talkbar-cli. Language: ru. Read setup and permissions before calling tools. For current operation schemas, use the discovery commands documented in the tools and CLI guides. - [Full reference in one request](https://docs.talkbar.ru/mcp/llms-full.txt) ## Recommended reading order - [Обзор MCP и CLI](https://docs.talkbar.ru/mcp/overview.md): Что MCP-сервер TalkBar и talkbar-cli позволяют ИИ-ассистенту делать с вашими сессиями, заметками и базой знаний и что всегда остаётся только в приложении. [Web page](https://docs.talkbar.ru/mcp/overview) - [Настройка MCP](https://docs.talkbar.ru/mcp/setup.md): Как включить MCP в TalkBar и подключить Claude Desktop, ChatGPT, Claude Code, Codex, agy, Grok, OpenCode или любой другой MCP-клиент. [Web page](https://docs.talkbar.ru/mcp/setup) - [Доступ и разрешения](https://docs.talkbar.ru/mcp/access-and-permissions.md): Как выбрать, какие операции TalkBar может выполнять ИИ-ассистент, как подтверждается удаление и как с этим соотносятся правила администратора и CLI. [Web page](https://docs.talkbar.ru/mcp/access-and-permissions) - [Пять инструментов MCP](https://docs.talkbar.ru/mcp/tools.md): Как работают talkbar_find, talkbar_read, talkbar_change, talkbar_delete и talkbar_tools: аргументы, пакеты, аннотации, страницы и сообщения. [Web page](https://docs.talkbar.ru/mcp/tools) - [talkbar-cli](https://docs.talkbar.ru/mcp/cli.md): Операции TalkBar из терминала и скриптов с talkbar-cli — той же программой, что обслуживает MCP: команды, параметры, ввод, вывод и коды завершения. [Web page](https://docs.talkbar.ru/mcp/cli) - [Справочник операций](https://docs.talkbar.ru/mcp/operations.md): Все операции, которые ассистент может выполнять через MCP TalkBar или CLI TalkBar, с аргументами, значениями по умолчанию, разрешениями и результатами. [Web page](https://docs.talkbar.ru/mcp/operations) - [Примеры](https://docs.talkbar.ru/mcp/examples.md): Практические сценарии работы с TalkBar через MCP и CLI с настоящими запросами и ответами — от вопроса о сессиях прошлой недели до закладки во время записи. [Web page](https://docs.talkbar.ru/mcp/examples) - [Ошибки и ограничения](https://docs.talkbar.ru/mcp/errors-and-limits.md): Коды ошибок TalkBar MCP и talkbar-cli и что с ними делать, лимиты тарифа, параллельная работа, правила для аргументов и безопасные повторы. [Web page](https://docs.talkbar.ru/mcp/errors-and-limits) - [Задачи](https://docs.talkbar.ru/mcp/operations/action-items.md): Операции MCP и CLI, чтобы показывать, читать, создавать, изменять, завершать и убирать задачи, напоминания, вопросы и решения. [Web page](https://docs.talkbar.ru/mcp/operations/action-items) - [Календарь и серии](https://docs.talkbar.ru/mcp/operations/calendar-and-series.md): Операции MCP и CLI для запланированных встреч — просмотр, планирование, подготовка, перенос, пропуск и отмена, — а также для серий сессий. [Web page](https://docs.talkbar.ru/mcp/operations/calendar-and-series) - [Чаты и документы](https://docs.talkbar.ru/mcp/operations/chats-and-documents.md): Операции MCP и CLI для чатов «Спросить TalkBar» и документов: список, чтение текста, переименование, закрепление, проекты, корзина и восстановление. [Web page](https://docs.talkbar.ru/mcp/operations/chats-and-documents) - [Экспорт](https://docs.talkbar.ru/mcp/operations/exports.md): Операции MCP и CLI для экспорта: места и правила автоэкспорта, предпросмотр, очередь, запуск, отмена и повтор, разрешение конфликтов. [Web page](https://docs.talkbar.ru/mcp/operations/exports) - [База знаний](https://docs.talkbar.ru/mcp/operations/knowledge.md): Операции MCP и CLI для карточек знаний и предложений: список, чтение, создание, изменение, закрепление, проекты, архив и проверка. [Web page](https://docs.talkbar.ru/mcp/operations/knowledge) - [Люди и компании](https://docs.talkbar.ru/mcp/operations/people-and-companies.md): Операции MCP и CLI для просмотра, чтения, создания, изменения и архивации людей и компаний, а также для поиска сессий, в которых говорил человек. [Web page](https://docs.talkbar.ru/mcp/operations/people-and-companies) - [Проекты и заметки](https://docs.talkbar.ru/mcp/operations/projects-and-notes.md): Операции MCP и CLI, чтобы показывать, читать, создавать, изменять, распределять, закреплять, перемещать в корзину и восстанавливать проекты и заметки. [Web page](https://docs.talkbar.ru/mcp/operations/projects-and-notes) - [Планировщик](https://docs.talkbar.ru/mcp/operations/scheduler.md): Операции MCP и CLI для просмотра фоновых заданий TalkBar, а также для отмены или повторного запуска отдельного задания. [Web page](https://docs.talkbar.ru/mcp/operations/scheduler) - [Сессии](https://docs.talkbar.ru/mcp/operations/sessions.md): Операции MCP и CLI для сессий: список, чтение, проекты, закрепление, корзина, транскрипты и хронология, имена участников и карточки сессии. [Web page](https://docs.talkbar.ru/mcp/operations/sessions) - [Темы и закладки](https://docs.talkbar.ru/mcp/operations/topics-and-markers.md): Операции MCP и CLI для тем, которыми помечаются сессии и заметки, для ключевых слов сессии и для закладок на моментах сессии. [Web page](https://docs.talkbar.ru/mcp/operations/topics-and-markers) - [Рабочее пространство и профиль](https://docs.talkbar.ru/mcp/operations/workspace-and-profile.md): Операции MCP и CLI для рабочих пространств, поиска и статистики по пространству, вашего профиля и тарифа. [Web page](https://docs.talkbar.ru/mcp/operations/workspace-and-profile) --- # Обзор MCP и CLI Что MCP-сервер TalkBar и talkbar-cli позволяют ИИ-ассистенту делать с вашими сессиями, заметками и базой знаний и что всегда остаётся только в приложении. Canonical URL: https://docs.talkbar.ru/mcp/overview TalkBar может открыть ваше рабочее пространство ИИ-ассистентам, таким как Claude, ChatGPT и Codex, через MCP (Model Context Protocol). Ассистент может искать по вашим сессиям, читать итоги и транскрипты, а если вы разрешите — добавлять заметки, задачи и закладки. Всё работает на вашем компьютере, и вы сами выбираете, что может делать каждый ассистент, в разделе **Настройки → Доступ по MCP**. ## Два способа подключения Вместе с TalkBar поставляется небольшая программа `talkbar-cli`, которая устанавливается рядом с приложением. Она даёт два способа выполнять один и тот же набор операций: | Способ | Кто пользуется | Как работает | | --- | --- | --- | | **MCP-сервер** | ИИ-приложения, поддерживающие MCP. В разделе **Доступ по MCP** есть готовые настройки для ChatGPT, Claude Desktop, Claude Code, Codex, agy CLI, Grok CLI и OpenCode; для других клиентов, например Cursor, используйте **Общий JSON**. | ИИ-приложение запускает `talkbar-cli serve --transport stdio` и общается с ним через стандартный ввод и вывод. Сервер подчиняется всем переключателям в разделе **Настройки → Доступ по MCP**. | | **Командная строка** | Вы, ваши скрипты и ИИ-агенты, которые умеют запускать команды | Вы запускаете `talkbar-cli tools call`, `tools batch` или `search` в терминале. Переключатели раздела «Доступ по MCP» здесь не действуют, потому что выполняется только то, что вы ввели сами. | Оба способа используют одни и те же данные, одни и те же проверки владельца и одни и те же правила администратора. Оба работают независимо от того, открыто приложение TalkBar или нет. Если приложение открыто, оно обновляет экраны, на которых видно что-либо изменённое ассистентом или скриптом. ## Что может ассистент Ассистент работает со всем, что хранится в TalkBar: сессиями с итогами и транскриптами, заметками, проектами, задачами, карточками знаний, людьми и компаниями, темами, закладками, чатами, документами, запланированными встречами, сериями сессий и экспортом. | Вид работы | Примеры | По умолчанию | | --- | --- | --- | | **Чтение** | Искать по всему, выводить список сессий за прошлую неделю, читать итоги или полный транскрипт, читать заметку, выводить список открытых задач | Включено (после включения MCP) | | **Изменение** | Создать заметку, добавить задачу или закладку (в том числе во время записи), переименовать сессию, отнести её к проекту, одобрить карточку знаний, дать имя участнику или связать участника с человеком, переименовать пространство, обновить имя, email или должность в профиле | Выключено, кроме операций календаря, серий, планировщика и экспорта | | **Удаление** | Переместить заметку, сессию, проект или чат в корзину; архивировать карточку, человека, компанию или серию; удалить задачу, тему или закладку | Выключено для вашего содержимого. ИИ-приложение, которое умеет задавать вопросы, всегда просит вас подтвердить удаление; другим приложениям в нём отказывается, если вы не разрешили удаление без подтверждения. | Изменять участников можно только после окончания записи сессии: ассистент может дать участнику имя, связать его с человеком, который уже есть в TalkBar, или убрать имя. Меняются только имена участников и связи с людьми; сказанное и голосовые данные остаются как есть. Никакие действия ассистента не удаляют окончательно элементы, которые можно переместить в корзину. Элементы из корзины можно восстановить в приложении, а архивированные элементы остаются доступными для изменения. У задач, тем и закладок корзины нет: удалённый элемент удаляется так же, как в приложении. Все операции описаны в [справочнике операций](/mcp/operations). ## Что всегда остаётся в приложении Некоторые вещи ассистент не может сделать никогда, какие бы переключатели вы ни включили: - Начать, приостановить или остановить запись либо управлять текущей сессией. - Изменить транскрипт. - Подвести итоги (в том числе заново) или запустить любую из ИИ-функций TalkBar. - Изменить настройки, в том числе переключатели раздела «Доступ по MCP». - Удалить что-либо навсегда или очистить корзину. - Добавить документы или переиндексировать их. - Создать, переключить или переместить в корзину рабочее пространство (переименовать можно). При этом ассистент может работать параллельно с идущей записью: читать транскрипт по мере его пополнения и добавлять закладки, задачи и карточки знаний, которые сразу появляются на экране записи. ## Конфиденциальность - **Только локально.** MCP-сервер — это программа на вашем компьютере, которую запускает ваше ИИ-приложение. Она общается с этим приложением через стандартный ввод и вывод и не открывает сетевых портов. Данные читаются из папки данных TalkBar на этом компьютере. - **Выключено, пока вы не включите.** После установки TalkBar доступ по MCP выключен. Пока он выключен, подключённое ИИ-приложение не видит инструментов TalkBar. - **Что получает ассистент.** Ассистент получает то же, что TalkBar показывает вам, включая транскрипты. Сессии, отмеченные как «Приватный ИИ», возвращаются с `"private": true`, а участники, исключённые из обработки ИИ, помечаются `excludedFromAi`; они помечаются, а не скрываются. Всё, что читает ассистент, попадает в это ИИ-приложение и к его провайдеру модели на условиях их политики конфиденциальности. Если для какой-то сессии это важно, не включайте переключатели чтения или не подключайте облачное ИИ-приложение. - **Решаете вы.** У каждой операции свой переключатель. Удаление подтверждается у вас, если ваше ИИ-приложение это поддерживает, а иначе отклоняется, если вы не включили **Разрешить удаление без подтверждения**. См. [Доступ и разрешения](/mcp/access-and-permissions). Приватный режим ИИ оставляет собственный ИИ TalkBar на вашем компьютере. Он не мешает MCP-клиенту прочитать сессию. Модель ассистента работает там, где её запускает ИИ-приложение. ## Пять инструментов вкратце MCP-клиент видит не по инструменту на каждую операцию, а не больше пяти инструментов, поэтому подключение TalkBar почти не расходует контекст ассистента: | Инструмент | Что делает | | --- | --- | | [`talkbar_find`](/mcp/tools#talkbar_find) | Ищет по рабочему пространству по названию и содержимому. Обычно это первый шаг, чтобы получить идентификаторы. | | [`talkbar_read`](/mcp/tools#talkbar_read) | Выполняет операции чтения — одну или пакет до 20. | | [`talkbar_change`](/mcp/tools#talkbar_change) | Выполняет операции, которые создают или изменяют данные. | | [`talkbar_delete`](/mcp/tools#talkbar_delete) | Выполняет операции перемещения в корзину, архивации и удаления. Каждый вызов вы подтверждаете. | | [`talkbar_tools`](/mcp/tools#talkbar_tools) | Выводит список включённых вами операций или аргументы одной операции. | При подключении TalkBar также передаёт ассистенту несколько строк инструкций: сначала найти идентификаторы, затем читать или изменять, объединять вызовы в пакет через `{"calls": [...]}` и просить вас включить операции в разделе **Настройки → Доступ по MCP**. Большинству ассистентов других подсказок не нужно. ## Рабочие пространства Каждая операция работает в одном рабочем пространстве. Без `workspaceId` TalkBar использует пространство, открытое в приложении в этот момент, поэтому, если вы переключите пространство в приложении, ассистент последует за вами. Операция `workspace.list` выводит список ваших пространств и отмечает открытое. Ассистент может переименовать пространство (если вы разрешите), но создание, переключение и перемещение пространств в корзину остаются в приложении. ## См. также - [Настройка MCP](/mcp/setup) - [Доступ и разрешения](/mcp/access-and-permissions) - [Пять инструментов MCP](/mcp/tools) - [talkbar-cli](/mcp/cli) - [Примеры](/mcp/examples) - [Справочник операций](/mcp/operations) --- # Настройка MCP Как включить MCP в TalkBar и подключить Claude Desktop, ChatGPT, Claude Code, Codex, agy, Grok, OpenCode или любой другой MCP-клиент. Canonical URL: https://docs.talkbar.ru/mcp/setup Чтобы подключить ИИ-приложение к TalkBar, нужно два шага: включить MCP в разделе **Настройки → Доступ по MCP** и скопировать готовые настройки для своего приложения. TalkBar сам подставляет реальные пути на вашем компьютере, так что вводить их вручную не придётся. ## Перед началом - TalkBar установлен на этом компьютере. - Ваше ИИ-приложение поддерживает локальные MCP-серверы (такие, которые запускают программу на вашем компьютере; их часто называют серверами stdio). - Если TalkBar управляет ваша организация, MCP может быть для вас отключён. См. [Правила администратора](/mcp/access-and-permissions#правила-администратора). ## Включение MCP 1. Откройте **Настройки → Доступ по MCP**. 2. Включите переключатель в правом верхнем углу страницы. Надпись сменится с **Отключено** на **Включено**. 3. Посмотрите на значок рядом с заголовком страницы: | Значок | Что означает | | --- | --- | | **Готово** | TalkBar нашёл `talkbar-cli`, и программа ответила. Можно подключать приложение. | | **Отсутствует** | TalkBar не нашёл `talkbar-cli`. Переустановите TalkBar. | | **Ошибка** | `talkbar-cli` найден, но не запустился. Над страницей показано предупреждение с текстом ошибки. | | **Отключено** | MCP выключен. Подключённые приложения не видят инструментов TalkBar. | Когда MCP включён, чтение разрешено, а большинство изменений — нет. Это можно изменить позже, см. [Доступ и разрешения](/mcp/access-and-permissions). ## Скопируйте настройки для своего приложения В карточке **Подключение MCP** есть кнопка для каждого приложения. Выберите своё и нажмите **Копировать MCP для *приложения*** под блоком кода. В зависимости от приложения вы получите либо блок JSON, который нужно вставить в его настройки, либо команду для запуска в терминале. Все варианты настроек делают одно и то же: говорят приложению запускать `talkbar-cli` с аргументами `serve --transport stdio` и задают в `TALKBAR_DATA_ROOT` вашу папку данных TalkBar. В примерах указаны условные пути к программе и папке данных. Замените их путями из раздела **Доступ по MCP** или скопируйте готовые настройки из TalkBar. Имя программы и пути зависят от операционной системы. В путях JSON экранируйте обратные косые черты или используйте прямые, если они поддерживаются. ### Claude Desktop Скопируйте JSON и добавьте его в файл конфигурации Claude Desktop `claude_desktop_config.json` (в Claude Desktop: **Settings → Developer → Edit Config**). Если в файле уже есть раздел `mcpServers`, добавьте запись `talkbar` внутрь него. Затем закройте и снова откройте Claude Desktop. ```json [claude_desktop_config.json] { "mcpServers": { "talkbar": { "command": "PATH_TO_TALKBAR_CLI", "args": [ "serve", "--transport", "stdio" ], "env": { "TALKBAR_DATA_ROOT": "PATH_TO_TALKBAR_DATA" } } } } ``` ### ChatGPT ChatGPT получает тот же JSON с `mcpServers`, что и Claude Desktop. Вставьте его туда, где ваше приложение ChatGPT принимает настройки MCP-серверов, и перезапустите приложение. ```json { "mcpServers": { "talkbar": { "command": "PATH_TO_TALKBAR_CLI", "args": [ "serve", "--transport", "stdio" ], "env": { "TALKBAR_DATA_ROOT": "PATH_TO_TALKBAR_DATA" } } } } ``` ### Claude Code Один раз выполните скопированную команду в терминале. `-s user` добавляет TalkBar для всех ваших проектов. ```shell claude mcp add talkbar -s user -e "TALKBAR_DATA_ROOT=PATH_TO_TALKBAR_DATA" -- "PATH_TO_TALKBAR_CLI" serve --transport stdio ``` Claude Code может также запускать `talkbar-cli` напрямую, без MCP. См. [Для ИИ-агентов с доступом к командной строке](/mcp/cli#для-ии-агентов-с-доступом-к-командной-строке). ### Codex Один раз выполните скопированную команду в терминале. ```shell codex mcp add talkbar --env "TALKBAR_DATA_ROOT=PATH_TO_TALKBAR_DATA" -- "PATH_TO_TALKBAR_CLI" serve --transport stdio ``` ### agy CLI Один раз выполните скопированную команду в терминале. В agy параметры указываются перед именем сервера. ```shell agy mcp add --env "TALKBAR_DATA_ROOT=PATH_TO_TALKBAR_DATA" talkbar -- "PATH_TO_TALKBAR_CLI" serve --transport stdio ``` ### Grok CLI Один раз выполните скопированную команду в терминале. ```shell grok mcp add talkbar -e "TALKBAR_DATA_ROOT=PATH_TO_TALKBAR_DATA" -- "PATH_TO_TALKBAR_CLI" serve --transport stdio ``` ### OpenCode Добавьте скопированный блок в конфигурацию OpenCode. Если в ней уже есть раздел `mcp`, добавьте запись `talkbar` внутрь него. ```json [opencode.json] { "$schema": "https://opencode.ai/config.json", "mcp": { "talkbar": { "type": "local", "command": [ "PATH_TO_TALKBAR_CLI", "serve", "--transport", "stdio" ], "environment": { "TALKBAR_DATA_ROOT": "PATH_TO_TALKBAR_DATA" }, "enabled": true } } } ``` ### Другие приложения Для любого другого MCP-клиента, например Cursor, выберите **Общий JSON**. В нём четыре сведения, которые нужны любому клиенту: сервер stdio, программа, её аргументы и переменная окружения. Укажите их там, где их ожидает ваш клиент. ```json { "type": "stdio", "command": "PATH_TO_TALKBAR_CLI", "args": [ "serve", "--transport", "stdio" ], "env": { "TALKBAR_DATA_ROOT": "PATH_TO_TALKBAR_DATA" } } ``` Добавив TalkBar, перезапустите приложение или перезагрузите его MCP-серверы. Затем для проверки подключения спросите что-нибудь вроде «Какие сессии TalkBar были у меня на этой неделе?». Больше примеров — в разделе [Примеры](/mcp/examples). ## Копирование команды запуска сервера **Копировать команду запуска сервера MCP** копирует команду для вашей операционной системы. Выполните её в терминале для проверки или для клиента, которому нужна одна команда. После запуска сервер ждёт MCP-клиента на стандартном вводе. Чтобы остановить его, нажмите `Ctrl+C`. ## Где установлен talkbar-cli `talkbar-cli` устанавливается вместе с TalkBar. Карточка **Настройки сервера** в разделе **Доступ по MCP** показывает: | Параметр | Что показывает | | --- | --- | | **Путь к исполняемому файлу** | Полный путь к `talkbar-cli`. **Копировать** копирует его. | | **Добавить в PATH** | Копирует команду для добавления папки программы в PATH. Выполните команду для вашей системы и откройте новый терминал, чтобы запускать `talkbar-cli` по имени. | | **Папка данных** | Ваша папка данных TalkBar. **Копировать** копирует путь к ней. | ## TALKBAR_DATA_ROOT `TALKBAR_DATA_ROOT` сообщает `talkbar-cli`, какую папку данных TalkBar открыть. Готовые настройки TalkBar всегда указывают в ней папку, которую использует приложение, — она показана в поле **Папка данных**. ### Windows Папка данных по умолчанию — `%LOCALAPPDATA%\TalkBar`. Текущий путь указан в поле **Папка данных**. ### macOS Путь к папке данных на Mac указан в поле **Папка данных**. - Указывайте в ней только папку данных TalkBar. В папке без данных TalkBar будет создана новая пустая база данных, и ассистент увидит пустое пространство. - Чтобы открыть файл базы данных напрямую из командной строки, используйте `--db`. См. [talkbar-cli](/mcp/cli#глобальные-параметры). ## После обновления TalkBar При установке обновления TalkBar закрываются все экземпляры `talkbar-cli`, запущенные из папки приложения, в том числе MCP-серверы, запущенные вашими ИИ-приложениями. Если после обновления приложение потеряло инструменты TalkBar, перезапустите его или заново подключите в нём сервер TalkBar. ## Устранение неполадок | Проблема | Что попробовать | | --- | --- | | Приложение не показывает инструментов TalkBar | Проверьте, что в разделе **Доступ по MCP** выбрано **Включено**. Если приложение подключилось, пока MCP был выключен, перезапустите приложение или заново подключите TalkBar. | | Ассистент сообщает, что операция «is turned off in TalkBar» | Включите эту операцию в разделе **Доступ по MCP**. См. [Доступ и разрешения](/mcp/access-and-permissions). | | Ассистент видит пустое пространство | Проверьте, что `TALKBAR_DATA_ROOT` в настройках приложения совпадает с полем **Папка данных** в разделе **Доступ по MCP**. Если вы перемещали данные, скопируйте настройки заново. | | Удаление отклоняется с `confirmation_unavailable` | Ваше приложение не умеет запрашивать подтверждение. См. [Подтверждение удаления](/mcp/access-and-permissions#подтверждение-удаления). | | Значок показывает **Отсутствует** | TalkBar не может найти `talkbar-cli`. Переустановите TalkBar. | | Страница заблокирована с уведомлением от вашей организации | Администратор отключил MCP-сервер или инструмент командной строки на этом компьютере. | ## См. также - [Обзор MCP](/mcp/overview) - [Доступ и разрешения](/mcp/access-and-permissions) - [Настройки «Доступ по MCP»](/settings/mcp-access) - [talkbar-cli](/mcp/cli) - [Примеры](/mcp/examples) --- # Доступ и разрешения Как выбрать, какие операции TalkBar может выполнять ИИ-ассистент, как подтверждается удаление и как с этим соотносятся правила администратора и CLI. Canonical URL: https://docs.talkbar.ru/mcp/access-and-permissions Что может делать подключённый ИИ-ассистент, вы решаете сами — по одной операции — в разделе **Настройки → Доступ по MCP**. Чтение по умолчанию включено, изменение вашего содержимого выключено, а всё, что перемещает в корзину, архивирует или удаляет, подтверждается у вас, если ваше ИИ-приложение умеет задавать вопросы. Приложениям, которые не умеют, в этом отказывается, если вы не включили **Разрешить удаление без подтверждения**. ## Переключатель MCP Переключатель в правом верхнем углу раздела **Доступ по MCP** включает или выключает MCP для всех подключённых приложений. После установки TalkBar он выключен. - **Выключен:** подключённое приложение не видит инструментов TalkBar, и каждая операция отвечает, что она выключена. Переключатели разрешений ниже недоступны. - **Включён:** подключённое приложение видит [инструменты TalkBar](/mcp/tools) и может выполнять включённые вами операции. ## Переключатели «Чтение» и «Изменение» В карточке **Разрешения** по одной строке на каждый вид данных: **Сессии**, **Заметки**, **Проекты**, **Задачи**, **База знаний**, **Команда** (люди и компании), **Темы**, **Закладки**, **Чаты**, **Документы**, **Календарь**, **Серии сессий**, **Планировщик**, **Экспорт**, **Пространство** и **Профиль**. В каждой строке два переключателя: | Переключатель | Что разрешает | По умолчанию | | --- | --- | --- | | **Чтение** | Вывод списков, поиск и чтение этого вида данных. Чтение никогда ничего не меняет. | Включено | | **Изменение** | Создание, изменение, перемещение в корзину, архивацию и восстановление этого вида данных. Ничего не удаляется навсегда. | Выключено, кроме строк «Календарь», «Серии сессий», «Планировщик» и «Экспорт» | Рядом с каждым переключателем строки счётчик, например `3/7`, показывает, сколько её операций включено. Переключатель выглядит включённым, только когда включены все; если включить частично включённую строку, включатся все её операции. Операции, заблокированные вашей организацией, не учитываются ни в счётчике, ни в переключателе; если в строке заблокированы все операции, её переключатель показан заблокированным. Значки **Чтение** и **Изменение** в заголовке карточки показывают, сколько операций включено всего. Переключатель **Изменение** охватывает любые изменения этого вида данных, включая перемещение в корзину. TalkBar всё равно спрашивает вас перед каждым перемещением в корзину, архивацией или удалением (см. [Подтверждение удаления](#подтверждение-удаления)), но включайте только то, что действительно нужно. ### Отдельные операции Откройте строку (нажмите на её название), чтобы увидеть каждую операцию с собственным переключателем, кратким описанием и идентификатором, например `notes.create`. Здесь можно включать и выключать отдельные операции, если вся строка — это больше, чем вы хотите разрешить: например, разрешить ассистенту добавлять заметки, но не перемещать их в корзину. У операций, которые запускают работу или что-то убирают, есть значок **Желательно подтверждение**. Это подсказка для вас и для ИИ-приложений; обязательное подтверждение TalkBar — только для удаления, оно описано ниже. ### Изменения, включённые по умолчанию Эти операции изменения включаются сразу, как только вы включаете MCP. Они планируют встречи и продвигают экспорт и фоновые задания, а не меняют ваши сессии, заметки или базу знаний: | Область | Операции, включённые по умолчанию | | --- | --- | | Календарь | `calendar.schedule`, `calendar.prepare`, `calendar.prep.edit`, `calendar.move`, `calendar.snooze`, `calendar.start`, `calendar.skip`, `calendar.cancel` | | Серии сессий | `series.create`, `series.update`, `series.sessions.assign`, `series.schedule.set`, `series.archive` | | Планировщик | `scheduler.job.cancel`, `scheduler.job.retry` | | Экспорт | `exports.destination.save`, `exports.destination.delete`, `exports.rule.save`, `exports.rule.delete`, `exports.enqueue`, `exports.run`, `exports.cancel`, `exports.retry`, `exports.resolve` | `calendar.skip`, `calendar.cancel`, `series.archive`, `exports.destination.delete` и `exports.rule.delete`, как и любое удаление, выполняются через `talkbar_delete`, поэтому подтверждаются у вас (или отклоняются для приложений, которые не умеют спрашивать). `calendar.start` никогда не начинает запись: запись запускается только в приложении. ### Кнопки быстрой настройки | Кнопка | Что делает | | --- | --- | | **Сбросить к стандартным** | Возвращает все операции к значениям по умолчанию. Показывается, только если что-то отличается от значений по умолчанию. | | **Включить все** | Включает все операции после предупреждения. | | **Отключить все** | Выключает все операции после предупреждения. После этого подключённые приложения ничего не могут ни прочитать, ни изменить. | ## Какой инструмент что выполняет TalkBar разносит чтение, изменение и удаление по отдельным MCP-инструментам, чтобы ваше ИИ-приложение могло обращаться с ними по-разному — например, свободно выполнять чтение, но спрашивать вас перед изменениями: | Инструмент | Выполняет | Есть в списке, когда | | --- | --- | --- | | `talkbar_read` | Операции чтения | Включено хотя бы одно чтение | | `talkbar_change` | Изменения, которые ничего не убирают | Включено хотя бы одно из них | | `talkbar_delete` | Перемещение в корзину, архивацию и удаление | Включена хотя бы одна из этих операций | Только через `talkbar_delete` выполняются: `notes.trash`, `projects.trash`, `sessions.trash`, `chats.trash`, `knowledge.archive`, `contacts.archive`, `organizations.archive`, `series.archive`, `action_items.remove`, `topics.delete`, `markers.delete`, `exports.destination.delete`, `exports.rule.delete`, `calendar.cancel` и `calendar.skip`. Восстановление из корзины, разархивация и другие изменения идут через `talkbar_change`. Как вызывать каждый инструмент, см. в разделе [Пять инструментов MCP](/mcp/tools). ## Когда изменения вступают в силу TalkBar проверяет переключатели при каждом вызове, поэтому изменение в разделе **Доступ по MCP** действует уже со следующего вызова, без перезапуска. - Выключенная операция отвечает кодом `turned_off` и сообщением «… is turned off in TalkBar. Ask the user to turn it on in TalkBar Settings > MCP Access.». Хороший ассистент после этого спросит вас. - `talkbar_tools` перечисляет выключенные операции в поле `off`, чтобы ассистент мог подсказать, какой переключатель включить, а не решить, что такой операции нет. - Когда переключатель меняет сам список инструментов (например, первое включённое изменение добавляет `talkbar_change`), TalkBar сообщает об этом приложению при следующем вызове, чтобы оно обновило список. См. [Изменения списка инструментов](/mcp/tools#изменения-списка-инструментов). ## Подтверждение удаления Перед выполнением вызова `talkbar_delete` TalkBar просит вас подтвердить его через ваше ИИ-приложение — с помощью предусмотренного в MCP способа, которым сервер задаёт вопрос пользователю (в MCP он называется `elicitation`, используется режим формы). Это работает только в приложениях, которые это поддерживают; о приложениях, которые не умеют спрашивать, см. [Приложения, которые не умеют спрашивать](#приложения-которые-не-умеют-спрашивать). В вопросе перечислены все операции и их идентификаторы: ```text An assistant wants TalkBar to run: - notes.trash {"noteId":"note-k2v9w8x7c6b5n4m3l2j1h0g9"} Confirm to run it, or decline to run nothing. ``` | Ваш ответ | Что происходит | | --- | --- | | Подтверждение | Вызов выполняется. | | Отказ, отмена или нет ответа в течение 5 минут | Ничего не выполняется. Ассистент получает `declined`. | Несколько подробностей: - Вызов, который в любом случае будет отклонён (неизвестная или выключенная операция, отсутствующий или неверный аргумент), отклоняется сразу, без вопроса. - О пакете спрашивают целиком, перечисляя все операции в нём. В том же пакете могут быть и другие изменения. - Вопрос задаётся на английском языке. - Командная строка никогда не спрашивает. Она выполняет только то, что вы ввели сами. ### Приложения, которые не умеют спрашивать Некоторые ИИ-приложения не умеют показывать вопросы от сервера. Для них TalkBar отклоняет каждый вызов `talkbar_delete` с кодом `confirmation_unavailable`, и ничего не выполняется, — если только вы не включили **Разрешить удаление без подтверждения** в карточке **Настройки сервера**. | Параметр | Что делает | По умолчанию | | --- | --- | --- | | **Разрешить удаление без подтверждения** | Позволяет ИИ-приложениям, которые не умеют спрашивать, перемещать элементы в корзину, архивировать или удалять их без вашего подтверждения. Приложение, которое умеет спрашивать, всё равно всегда спрашивает. | Выключено | Когда этот параметр включён, приложение, которое не умеет спрашивать, выполняет любое включённое вами удаление без проверки у вас. Включайте только те операции удаления, в которых вы уверены, и помните, что элементы из корзины можно восстановить в приложении. ## Журнал аудита **Журнал аудита** в карточке **Настройки сервера** (по умолчанию выключен) заставляет MCP-сервер записывать в свой поток ошибок (stderr) строку о каждом вызове инструмента — с операцией и её аргументами — и ещё одну, когда вызов завершается успешно. Обычно ИИ-приложение сохраняет этот вывод в своих журналах MCP. Используйте его для отладки или чтобы проверить, что сделал ассистент. Вызовы экспорта записываются без аргументов. Командная строка записей аудита не делает. ## Правила администратора Если TalkBar на этом компьютере управляет ваша организация, администратор может ограничить MCP и командную строку. Это видно в разделе **Доступ по MCP**: | Правило | Что вы видите | Результат | | --- | --- | --- | | MCP-сервер отключён | Переключатель MCP заблокирован, с сообщением «Ваша организация отключила MCP-сервер.» | `talkbar-cli serve` не запускается. Остальные команды командной строки работают. | | Инструмент командной строки отключён | Переключатель MCP заблокирован, с сообщением «Ваша организация отключила инструмент командной строки.» | Любая команда `talkbar-cli` отклоняется, включая MCP-сервер. Работают только `--help` и `--version`. | | Разрешённые MCP-инструменты ограничены | «Ваша организация ограничивает, какие инструменты могут использовать ИИ-ассистенты.» У заблокированных операций показан замок и надпись **Заблокировано вашей организацией**. | Заблокированные операции остаются выключенными, что бы ни показывали ваши переключатели, — и для MCP, и для командной строки. | Администратор разрешает или блокирует операции группами: | Группа | Что охватывает | | --- | --- | | Списки и счётчики | `workspace.list`, `workspace.stats`, `sessions.list`, `sessions.stats`, `sessions.recording`, `projects.list`, `plan.get`, а также чтение календаря и серий | | Содержимое встреч | Любое другое чтение, включая поиск, транскрипты, `exports.preview` и `calendar.prep` | | Экспорт | Операции экспорта, кроме `exports.preview` | | Изменения расписания | Изменения календаря и серий | | Фоновые задания | Операции `scheduler.*` | | Изменения элементов | Любые другие изменения: сессии, заметки, проекты, задачи, база знаний, люди, темы, закладки, чаты, документы, пространство и профиль | Заблокированная операция не попадает ни в список инструментов, ни в `talkbar_tools`. Если ассистент всё же вызовет её, он получит `failed` с сообщением о том, что этим параметром управляет ваша организация. ## Что игнорирует командная строка `talkbar-cli tools call`, `tools batch` и `search` выполняют то, что вы ввели, от вашего имени. Они: - **Игнорируют** переключатель MCP, все переключатели «Чтение» и «Изменение», а также **Разрешить удаление без подтверждения**. Командная строка никогда не запрашивает подтверждение. - **Соблюдают** правила администратора, лимиты вашего тарифа и все проверки владельца: команда работает только с вашими собственными пространствами в этой папке данных, и ничего не удаляется навсегда. `talkbar-cli serve` — это MCP-сервер, поэтому он подчиняется всем переключателям на этой странице. См. [talkbar-cli](/mcp/cli). ## См. также - [Обзор MCP](/mcp/overview) - [Настройка MCP](/mcp/setup) - [Пять инструментов MCP](/mcp/tools) - [Ошибки и ограничения](/mcp/errors-and-limits) - [Настройки «Доступ по MCP»](/settings/mcp-access) - [Справочник операций](/mcp/operations) --- # Пять инструментов MCP Как работают talkbar_find, talkbar_read, talkbar_change, talkbar_delete и talkbar_tools: аргументы, пакеты, аннотации, страницы и сообщения. Canonical URL: https://docs.talkbar.ru/mcp/tools MCP-сервер TalkBar не публикует отдельный инструмент для каждой операции. Он публикует не больше пяти инструментов, через которые проходят все операции, поэтому ассистент платит за одни и те же несколько определений инструментов, сколько бы операций ни предлагал TalkBar. Эта страница для тех, кто создаёт или настраивает агентов; аргументы каждой операции описаны в [справочнике операций](/mcp/operations). ## Что видит клиент Когда приложение подключается, сервер представляется как `talkbar` (заголовок «TalkBar») и отправляет такие инструкции: ```text TalkBar holds the user's meetings: sessions with summaries and transcripts, notes, projects, action items, knowledge cards, people and schedules. Find ids with talkbar_find, then read with talkbar_read and change with talkbar_change; trash, archive and delete go through talkbar_delete, which the user confirms. Batch with {"calls":[...]}: calls run in order and continue past errors unless stopOnError is true. workspaceId is optional (default: the workspace open in the app). Notes are Markdown. The live session: sessions.recording. Recording, settings and emptying the Trash stay in the app. The user turns operations on in TalkBar Settings > MCP Access; item changes start off. ``` Затем `tools/list` возвращает только те инструменты, которым есть что выполнять: | Инструмент | Есть в списке, когда | | --- | --- | | `talkbar_find` | Включено чтение `workspace.search` | | `talkbar_read` | Включено хотя бы одно чтение | | `talkbar_change` | Включено хотя бы одно изменение, которое ничего не убирает | | `talkbar_delete` | Включена хотя бы одна операция перемещения в корзину, архивации или удаления | | `talkbar_tools` | Включено хоть что-нибудь | Если MCP в TalkBar выключен или все операции выключены либо заблокированы, список пуст. ### Аннотации У каждого инструмента есть аннотации MCP, по которым ваше приложение может решить, какие вызовы одобрять автоматически: | Инструмент | `readOnlyHint` | `destructiveHint` | `idempotentHint` | `openWorldHint` | | --- | --- | --- | --- | --- | | `talkbar_find` | true | false | true | false | | `talkbar_read` | true | false | true | false | | `talkbar_change` | false | false | false | false | | `talkbar_delete` | false | true | false | false | | `talkbar_tools` | true | false | true | false | `talkbar_delete` не идемпотентен, потому что в его пакете могут быть и другие изменения. ## Вызов операции `talkbar_read`, `talkbar_change` и `talkbar_delete` принимают одинаковые аргументы. Укажите одну операцию в `tool`, а её аргументы — в `args`: ```json { "tool": "notes.get", "args": { "noteId": "note-k2v9w8x7c6b5n4m3l2j1h0g9" } } ``` Или выполните до 20 операций по порядку с помощью `calls`: ```json { "calls": [ { "tool": "sessions.list", "args": { "limit": 5 } }, { "tool": "notes.list" } ], "stopOnError": false } ``` **tool** (string) Идентификатор операции, например `sessions.get`. Используется вместе с `args`, но не с `calls`. **args** (object) Аргументы операции. Если аргументов нет, не передавайте его или передайте `null`. **calls** (array) От 1 до 20 объектов вида `{"tool", "args"}`, выполняемых по порядку. **stopOnError** (boolean) Вместе с `calls`: остановиться на первой неудачной операции. По умолчанию `false`, то есть следующие вызовы всё равно выполняются. Каждая операция принимает необязательный `workspaceId`. Без него TalkBar использует пространство, открытое в приложении. ## `talkbar_find` Универсальный поиск — тот же, что в приложении, включая фрагменты транскриптов. Обычно это первый шаг, чтобы превратить название или фразу в идентификаторы. **query** (string, required) Что искать. Не может быть пустым. **kinds** (string[]) Ограничить поиск некоторыми видами: `session`, `note`, `document`, `chat`, `action_item`, `project`, `series`, `person`, `company`, `memory` (карточки знаний). **match** (string) `any` (по умолчанию) воспринимает запрос как просьбу на естественном языке. `all` требует совпадения каждого слова. **projectId** (string) Только элементы из этого проекта. **limit** (integer) От 1 до 100 результатов. По умолчанию 20. **includeArchived** (boolean) Искать также архивированные серии, людей, компании и карточки знаний. Элементы в корзине не находятся никогда. **workspaceId** (string) Пространство для поиска. По умолчанию — открытое в приложении. ```json [Запрос] { "query": "pricing review", "kinds": ["session", "note"], "limit": 5 } ``` ```json [Ответ] { "matches": [ { "kind": "session", "id": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "title": "Pricing review with Acme", "snippet": "…agreed to keep the pricing review on Thursdays…", "href": "/sessions/6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "score": 14.2, "projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1", "matchedIn": "title", "atMs": 1792594800000, "detail": null, "context": null, "itemCount": null, "archived": false, "content": null } ], "contentSearch": "on" } ``` Лучшие совпадения идут первыми. `score` равен 10 или больше для совпадения в названии или тексте и меньше 10 для совпадения только в проиндексированном содержимом; такое совпадение содержит `content` с полями фрагмента `sourceType`, `sourceId`, `locator` и `tMs` (момент в транскрипте). `matchedIn` принимает значения `title`, `body` или `content`. `contentSearch` сообщает, выполнялся ли поиск по содержимому (`on`), выполнялся только по ключевым словам (`keywordOnly`), был недоступен (`off`) или завершился ошибкой (`failed`); совпадения в названиях и тексте возвращаются в любом случае. ## `talkbar_read` Выполняет операции чтения. В его описании перечислены все включённые операции чтения, сгруппированные по областям, с обязательными аргументами, например `notes.list|get(noteId)|trash.list; sessions.get(sessionId)|transcript(sessionId)|…`, поэтому ассистент может сделать первое чтение, ничего не выясняя заранее. ```json { "tool": "sessions.transcript", "args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10" } } ``` Изменения он не выполняет: пакет, в котором есть изменение, отклоняется целиком, а в сообщении указан нужный инструмент. ## `talkbar_change` Выполняет изменения, которые ничего не убирают: создание, изменение, распределение по проектам, закрепление, восстановление. В его описании операции не перечислены; их идентификаторы и аргументы ассистент получает из [`talkbar_tools`](#talkbar_tools). ```json { "tool": "notes.create", "args": { "title": "Follow-ups", "markdown": "- Send the revised quote\n- Book the next call" } } ``` Он не выполняет чтение и операции `talkbar_delete`. Пакет, в котором есть одна из них, отклоняется целиком с сообщением «Nothing in this call ran». Так одобрение `talkbar_change` в приложении никогда не одобрит удаление. ## `talkbar_delete` Выполняет операции, которые перемещают элементы в корзину, архивируют или удаляют их: `notes.trash`, `projects.trash`, `sessions.trash`, `chats.trash`, `knowledge.archive`, `contacts.archive`, `organizations.archive`, `series.archive`, `action_items.remove`, `topics.delete`, `markers.delete`, `exports.destination.delete`, `exports.rule.delete`, `calendar.cancel` и `calendar.skip`. ```json { "tool": "notes.trash", "args": { "noteId": "note-k2v9w8x7c6b5n4m3l2j1h0g9" } } ``` - Перед выполнением TalkBar просит пользователя подтвердить вызов, если клиент поддерживает запросы к пользователю по MCP (`elicitation`, режим формы). Клиенту, который не умеет спрашивать, TalkBar отказывает с кодом `confirmation_unavailable`, если пользователь не включил **Разрешить удаление без подтверждения**. См. [Подтверждение удаления](/mcp/access-and-permissions#подтверждение-удаления). - В пакете, отправленном сюда, могут быть и другие изменения, например `notes.create`, а за ним `notes.trash`. Чтение отклоняется. - Если все вызовы пакета в любом случае будут отклонены, ответ приходит без вопроса, с ошибкой каждого вызова. ## `talkbar_tools` Указатель операций. Вызовите его без аргументов, чтобы увидеть все операции, которые можно выполнить сейчас, сгруппированные по инструменту, который их выполняет: ```json [Ответ] { "talkbar_read": { "notes.list": "Page document notes in an owned workspace, most recently updated first, optionally scoped to a project or a title/body search.", "notes.get": "Read one note's title, Markdown body (paged with maxChars and offset) and links." }, "talkbar_change": { "notes.create": "Create a note from Markdown, optionally filed under a project and sessions." }, "talkbar_delete": { "notes.trash": "Move a note to the Trash; it can be restored." }, "off": "Turned off; the user can turn them on in TalkBar Settings > MCP Access: notes.update|append|move|pin; projects.create|update" } ``` Пример сокращён. В `off` перечислены выключенные вами операции, чтобы ассистент мог попросить вас включить нужную. Операции, заблокированные администратором, не перечисляются. Вызовите его с `{"tool": ""}`, чтобы получить аргументы одной операции: ```json [Запрос] { "tool": "notes.append" } ``` ```json [Ответ] { "tool": "notes.append", "kind": "change", "runWith": "talkbar_change", "summary": "Add Markdown to the end of a note.", "args": { "type": "object", "properties": { "workspaceId": { "type": "string" }, "noteId": { "type": "string" }, "markdown": { "type": "string", "minLength": 1 } }, "required": ["noteId", "markdown"], "additionalProperties": false } } ``` `kind` — это `read` или `change`; `runWith` называет инструмент, которому нужно отправить операцию. `args` — JSON Schema операции; неизвестные аргументы отклоняются, поэтому схема закрыта с помощью `"additionalProperties": false`. На неизвестный идентификатор приходит `not_found` (с подсказкой «did you mean», если есть похожий), на выключенный — `turned_off`, на заблокированный — `failed`. ## Пакеты Пакет `{"calls": [...]}` выполняет свои операции одну за другой, по порядку, в одном вызове: - От 1 до 20 операций. Передавайте либо `tool` (с `args`), либо `calls`, но не оба сразу. - Каждая известная операция в пакете должна относиться к инструменту, которому вы его отправили. Если хотя бы одна не относится, весь пакет отклоняется и ничего из него не выполняется. - Неудачная операция не останавливает пакет, если `stopOnError` не равен `true`. - Неизвестная операция завершается ошибкой `not_found` сама по себе; остальные всё равно выполняются. - Открытое приложение TalkBar обновляется один раз для всего пакета. В ответе по одной записи на каждую выполненную операцию: ```json { "results": [ { "tool": "sessions.list", "ok": true, "result": { "items": [], "nextCursor": null, "hasMore": false, "totalCount": 0 } }, { "tool": "notes.get", "ok": false, "error": { "code": "not_found", "message": "Note not found in workspace" } } ] } ``` Запись, которую вообще не удалось прочитать (нет `tool` или `args` не является объектом), содержит `ok: false` и ошибку, но не содержит `tool`. Чтобы одна операция зависела от другой (создать заметку, затем отнести её к проекту), поместите обе в один пакет или дождитесь ответа на первую, прежде чем отправлять второй вызов. ## Результаты и ошибки Успешный вызов возвращает один текстовый элемент с результатом в виде компактного JSON. Отклонённая или неудачная операция — это тоже обычный результат инструмента. В нём есть `isError: true` и объект: ```json { "error": { "code": "turned_off", "message": "notes.create is turned off in TalkBar. Ask the user to turn it on in TalkBar Settings > MCP Access." } } ``` Коды: `invalid_arguments`, `not_found`, `turned_off`, `failed`, `declined`, `confirmation_unavailable`, `busy`, `conflict`, `session_recording`, `limit_reached` и `plan_limit`. Записи пакета содержат такой же объект. Что означает каждый код, см. в разделе [Ошибки и ограничения](/mcp/errors-and-limits). Если аргументы неверны, сообщение заканчивается ссылкой на схему операции, например `Arguments: talkbar_tools {"tool":"notes.get"}`. Пять инструментов также отклоняют ключи, которых не принимают, называя их. Ошибкой протокола (JSON-RPC `-32602`) считается только имя инструмента, отличное от этих пяти, а также вызов, отменённый вашим клиентом (см. [Формат сообщений](#формат-сообщений)). ## Изменения списка инструментов TalkBar отправляет `notifications/tools/list_changed`, когда переключатель в разделе **Доступ по MCP** меняет определения этих пяти инструментов. Проверка выполняется в начале каждого вызова инструмента, без периодического опроса, поэтому уведомление приходит с вашим следующим вызовом. Определения меняются, когда: - вы включаете или выключаете операцию чтения (потому что `talkbar_read` перечисляет операции чтения); - вы включаете или выключаете `workspace.search` (`talkbar_find` появляется или исчезает); - вы включаете первую или выключаете последнюю операцию, которую выполняет `talkbar_change` или `talkbar_delete` (инструмент появляется или исчезает). Другие переключатели изменений, а также **Разрешить удаление без подтверждения** не меняют пять инструментов, и об их изменении уведомление не отправляется. Выключенное изменение видно в поле `off` в `talkbar_tools` и при вызове отвечает `turned_off`. Если MCP был выключен, когда приложение подключалось, сервер вообще не предложил инструментов. Включив MCP, заново подключите TalkBar в своём приложении. ## Постраничное чтение Каждый список сообщает, как получить следующую страницу. Передайте полученное значение обратно в соответствующем аргументе: | В ответе есть | Передайте обратно как | Операции | | --- | --- | --- | | `nextCursor` | `cursor` | `sessions.list`, `notes.list`, `chats.list`, `knowledge.suggestions.list` | | `nextOffset` | `offset` | `projects.list`, `knowledge.list`, `contacts.sessions`, `calendar.upcoming`, `notes.get`, `documents.read` | | `nextTurnOffset` | `turnOffset` | `sessions.transcript` | | `nextBeforeSequence` | `beforeSequence` | `chats.get` | | идентификатор последней сессии | `after` | `exports.sessions` | - Курсор должен быть получен от TalkBar. Если следующего значения нет или оно равно `null`, это последняя страница. - Размер страницы зависит от операции. Диапазон `limit` указан в схеме каждой операции; значение вне диапазона отклоняется, а не подгоняется. - `notes.get`, `documents.read` и `sessions.transcript` разбивают длинный текст на страницы с помощью `maxChars` — от 1 000 до 200 000 символов (по умолчанию 20 000). Смещение за пределами конца отклоняется. - Страницы `sessions.transcript` содержат только целые реплики. См. [Чтение транскрипта по частям](/mcp/examples#найти-сессию-и-прочитать-транскрипт-по-частям). ## Формат сообщений Для тех, кто пишет собственный MCP-клиент: - **Транспорт:** стандартный ввод и вывод, одно сообщение JSON-RPC 2.0 на строку, до 8 МБ на сообщение. - **Начало:** сначала отправьте `initialize`. Любой другой запрос до него получает `-32601` («Send initialize first»); уведомления до него отбрасываются. Повторный `initialize` получает `-32600`. - **Некорректный ввод:** строка, которая не является JSON, получает `-32700` с `"id": null`. Массив JSON (пакет JSON-RPC) получает один ответ `-32600`: в MCP нет пакетов, поэтому отправляйте одно сообщение на строку или используйте `{"calls": [...]}`. Сообщение, которое не является объектом, не содержит `"jsonrpc": "2.0"` или имеет идентификатор, отличный от строки или целого числа, получает `-32600`. - **Вызовы инструментов:** `tools/call` требует `{"name": ""}`, а `arguments` должен быть объектом (или отсутствовать). Иначе ответом будет `-32602`. - **Порядок:** одновременно выполняется до четырёх вызовов инструментов от одного клиента, поэтому ответы могут приходить не в том порядке, что запросы. Сопоставляйте их по `id`. - **Отмена:** когда клиент отменяет вызов инструмента, сервер отвечает ошибкой JSON-RPC (`-32603`, «Request cancelled by the client»), а не результатом инструмента. Запрос, отменённый до начала операции, не выполняется, а в пакете не выполняются операции, которые ещё не начались. - **Ресурсы и промпты:** не предоставляются. Списки ресурсов пусты. ## См. также - [Справочник операций](/mcp/operations) - [Доступ и разрешения](/mcp/access-and-permissions) - [Ошибки и ограничения](/mcp/errors-and-limits) - [Примеры](/mcp/examples) - [talkbar-cli](/mcp/cli) --- # talkbar-cli Операции TalkBar из терминала и скриптов с talkbar-cli — той же программой, что обслуживает MCP: команды, параметры, ввод, вывод и коды завершения. Canonical URL: https://docs.talkbar.ru/mcp/cli `talkbar-cli` — программа командной строки, которая поставляется вместе с TalkBar. Она выполняет те же операции, что и ИИ-ассистент через MCP, — из терминала, скрипта или ИИ-агента, который умеет запускать команды. Кроме того, она запускает MCP-сервер и выполняет экспорт в фоне. ## Перед началом - `talkbar-cli` поставляется вместе с TalkBar. Где именно — показано в поле **Настройки → Доступ по MCP → Путь к исполняемому файлу**. Кнопка **Добавить в PATH** там же позволяет запускать программу по имени из любого терминала. См. [Где установлен talkbar-cli](/mcp/setup#где-установлен-talkbar-cli). - Программа открывает папку данных TalkBar или папку из `TALKBAR_DATA_ROOT`, если эта переменная задана. Фактический путь указан в **Настройки → Доступ по MCP → Папка данных**. Приложение может быть как открыто, так и закрыто. - Программа выполняет то, что вы ввели, от вашего имени. Переключатели раздела «Доступ по MCP» на неё не действуют, а правила администратора и лимиты тарифа — действуют. См. [Что игнорирует командная строка](/mcp/access-and-permissions#что-игнорирует-командная-строка). ```shell talkbar-cli --version talkbar-cli --help talkbar-cli tools --help ``` В примерах используются оболочка POSIX в macOS или PowerShell в Windows. Если оболочка иначе обрабатывает кавычки в JSON, используйте `--args-file`. ## Команды | Команда | Что делает | | --- | --- | | `tools list [--compact]` | Выводит список операций. | | `tools info ` | Показывает одну операцию: что она делает, её переключатель MCP по умолчанию и аргументы. | | `tools call [--args \| --args - \| --args-file ]` | Выполняет одну операцию и выводит результат в JSON. | | `tools batch [--file ] [--stop-on-error]` | Выполняет много операций в одном процессе и выводит результаты одним массивом JSON. | | `search …` | Ищет по рабочему пространству так же, как поиск в приложении. | | `serve [--transport stdio]` | Запускает MCP-сервер. Эту команду за вас выполняет ИИ-приложение. | | `exports run`, `exports worker`, `exports notion connect` | Доставляет экспорт из очереди и подключает Notion. См. [Экспорт](#экспорт). | `talkbar-cli call …` (без `tools`) — ошибка использования, в ответ на которую предлагается `talkbar-cli tools call`. ## Глобальные параметры Эти параметры можно указывать до или после команды: | Параметр | Что делает | По умолчанию | | --- | --- | --- | | `--output json` | Выводит JSON вместо таблицы для `tools list`, `tools info` и `search`, а ошибки — в виде JSON на стандартный вывод. `tools call` и `tools batch` всегда выводят JSON. | `table` | | `--db ` | Открывает указанный файл базы данных TalkBar вместо папки данных. Файл должен уже существовать и быть базой данных TalkBar; неверный путь отклоняется, файл никогда не создаётся. | База данных в папке данных | | `-v`, `--verbose` | Выводит внутренние события TalkBar в стандартный поток ошибок в виде строк JSON. Если команда не вызывает событий, ничего лишнего не выводится. | Выключено | ## Список и описание операций ```shell talkbar-cli tools list talkbar-cli tools list --compact talkbar-cli tools info notes.create talkbar-cli --output json tools info notes.create ``` - `tools list` выводит таблицу с идентификатором, видом (`read` или `mutation`), категорией и описанием, а затем общее количество. С `--output json` для каждой операции выводятся заголовок, описание, категория, вид, переключатель MCP по умолчанию и полная схема входных данных. - `tools list --compact` выводит по одной строке на операцию: идентификатор, вид (`read` или `change`) и краткое описание, разделённые табуляцией. Это самый экономный указатель для скриптов и ИИ-агентов. - `tools info ` выводит описание операции, включена ли она по умолчанию в MCP, строку использования и принимаемые аргументы в виде JSON Schema. Аргументы — JSON в camelCase. В список входят все операции, которые не заблокировал администратор. Аргументы и результаты каждой операции описаны в [справочнике операций](/mcp/operations). ## Запуск одной операции Передайте аргументы в виде объекта JSON: ```shell talkbar-cli tools call sessions.list --args '{"limit":5}' talkbar-cli tools call notes.get --args '{"noteId":"note-k2v9w8x7c6b5n4m3l2j1h0g9"}' ``` `workspaceId`, как и в MCP, необязателен: без него используется пространство, открытое в приложении. ### Аргументы из стандартного ввода или файла Длинный текст, например текст заметки, удобнее передавать через стандартный ввод или файл, чем в командной строке: | Форма | Откуда читаются аргументы | | --- | --- | | `--args ''` | Из командной строки. По умолчанию `{}`. | | `--args -` | Из стандартного ввода | | `--args-file ` | Из файла. `--args-file -` тоже означает стандартный ввод. | ### Windows ```powershell Get-Content note.json -Raw | talkbar-cli tools call notes.create --args - ``` ### macOS ```shell cat note.json | talkbar-cli tools call notes.create --args - ``` ```shell talkbar-cli tools call notes.create --args-file note.json ``` ```json [note.json] { "title": "Weekly sync follow-ups", "markdown": "## Follow-ups\n\n- Send the revised quote to Dana\n- Book the next sync" } ``` Файлы и переданный по конвейеру текст, сохранённые с меткой порядка байтов UTF-8 (так их записывает Windows PowerShell 5), читаются правильно. PowerShell и `cmd` по-разному обрабатывают кавычки в JSON. Если `--args '{...}'` выдаёт «Invalid JSON arguments», поместите JSON в файл и используйте `--args-file`. ## Запуск пакета `tools batch` выполняет много операций в одном процессе, по порядку. Это быстрее, чем отдельная команда на каждую операцию, а открытое приложение обновляется один раз для всех. ```shell '[{"tool":"notes.list","args":{"limit":3}},{"tool":"sessions.list","args":{"limit":5}}]' | talkbar-cli tools batch talkbar-cli tools batch --file calls.json --stop-on-error ``` - На вход подаётся массив JSON из `{"tool", "args"}` или форма MCP `{"calls": [...], "stopOnError": true}`. Данные берутся из `--file` или из стандартного ввода, если `--file` не указан или равен `-`. - Ограничения в 20 операций, как в MCP, нет. На `[]` выводится `[]`. - `--stop-on-error` (или `"stopOnError": true`) останавливает выполнение на первой неудачной операции. - Результат всегда выводится одним массивом JSON, по одной записи на каждую выполненную операцию: ```json [ { "tool": "notes.list", "ok": true, "result": { "items": [], "nextCursor": null, "hasMore": false, "totalCount": 0 } }, { "tool": "sessions.get", "ok": false, "error": { "code": "not_found", "message": "Session not found in workspace" } } ] ``` Если хотя бы одна операция завершилась неудачей, команда, выведя все результаты, завершается с кодом 1. В стандартный поток ошибок при этом выводится, сколько операций не удалось, например `1 of 2 operations failed`. ## Поиск `search` — это универсальный поиск приложения в терминале, включая фрагменты транскриптов: ```shell talkbar-cli search pricing review talkbar-cli search "renewal date" --kinds session,note --limit 10 talkbar-cli search budget --match any --output json ``` | Параметр | Что делает | По умолчанию | | --- | --- | --- | | `--workspace ` | Ищет в этом пространстве | Пространство, открытое в приложении | | `--project ` | Только элементы из этого проекта | Все проекты | | `--kinds ` | Через запятую: `session`, `note`, `chat`, `action_item`, `document`, `memory`, `person`, `company`, `project`, `series` | Все виды | | `--limit ` | Максимум результатов, от 1 до 100 | 20 | | `--match all\|any` | `all`: должно совпасть каждое слово. `any`: слова воспринимаются как просьба на естественном языке. | `all` | | `--include-archived` | Находит также архивированные серии, людей, компании и карточки знаний | Выключено | В табличном выводе совпадения сгруппированы по видам, у каждого — название, фрагмент и ссылка в приложении. `--output json` выводит тот же объект, что и [`talkbar_find`](/mcp/tools#talkbar_find). `search` по умолчанию требует совпадения каждого слова, как строка поиска в приложении. `talkbar_find` в MCP по умолчанию использует `any`. ## Запуск MCP-сервера ```shell talkbar-cli serve --transport stdio ``` Запускает MCP-сервер на стандартном вводе и выводе. `stdio` — единственный транспорт и он же используется по умолчанию. ИИ-приложение само выполняет эту команду с заданной `TALKBAR_DATA_ROOT`; см. [Настройка MCP](/mcp/setup). В отличие от остальных команд, `serve` подчиняется всем переключателям в разделе **Настройки → Доступ по MCP**. `--output` на неё не влияет. ## Экспорт Команда `exports` доставляет экспорт из очереди — то же, что делает приложение, пока оно запущено. Сначала настройте места экспорта в приложении; см. [Экспорт](/sharing/exports). ```shell talkbar-cli exports run --workspace WORKSPACE_ID --batch BATCH_ID --wait talkbar-cli exports worker talkbar-cli exports worker --drain ``` | Команда | Что делает | | --- | --- | | `exports run --workspace --batch ` | Выполняет один проход указанного пакета экспорта, затем выводит состояние пакета в JSON. | | `… --wait` | Продолжает, пока какая-либо доставка в пакете запланирована или выполняется. | | `… --timeout ` | Вместе с `--wait`: прекращает ожидание через указанное число секунд и завершается с кодом 1. По умолчанию 600. | | `exports worker` | Выполняет автоматический и другой экспорт по мере наступления срока, пока вы не остановите его с помощью `Ctrl+C`. | | `exports worker --drain` | Выполняет экспорт, срок которого уже наступил, и завершается. | | `exports notion connect --workspace --destination ` | Читает токен Notion со стандартного ввода и сохраняет его в зашифрованном виде для этого места экспорта Notion. | Командам `exports` нужен `--workspace` (его можно узнать с помощью `tools call workspace.list`). `exports notion connect` не читает токен с клавиатуры, чтобы он никогда не появлялся на экране; передайте его по конвейеру из менеджера паролей: ### Windows ```powershell Get-Secret -Name TalkBarNotionToken -AsPlainText | talkbar-cli exports notion connect --workspace WORKSPACE_ID --destination DESTINATION_ID ``` ### macOS Передайте токен из менеджера паролей через конвейер в `talkbar-cli exports notion connect --workspace WORKSPACE_ID --destination DESTINATION_ID`. Чтобы сначала поставить экспорт в очередь, используйте `tools call exports.enqueue`. См. [Экспортировать сессию](/mcp/examples#экспортировать-сессию). ## Вывод и ошибки - **В стандартный вывод попадают только результаты.** Результаты выводятся в JSON: с отступами в терминале и компактно, если вывод передаётся другой программе или ИИ-агенту. - **Ошибки выводятся в стандартный поток ошибок** строкой, начинающейся с `Error:`. При неверном аргументе дополнительно предлагается `tools info `, при неизвестной операции — `tools list`. - **С `--output json`** неудачная команда также выводит ошибку на стандартный вывод — в том же формате, что использует MCP: ```json {"error":{"code":"not_found","message":"Note not found in workspace"}} ``` `tools call` выводит собственный код операции (`not_found`, `invalid_arguments`, `plan_limit` и так далее); при других ошибках, например при неверном пути в `--db` или правиле администратора, выводится `"code": "failed"`. `tools batch` выводит только массив результатов. Читайте стандартный вывод отдельно и не объединяйте с ним стандартный поток ошибок (`2>&1`). ### Коды завершения | Код | Значение | | --- | --- | | `0` | Выполнено | | `1` | Отклонено или завершилось ошибкой. Для `tools batch` — хотя бы одна операция завершилась неудачей. | | `2` | Ошибка использования: неизвестная команда или параметр либо отсутствующий аргумент | ## Для ИИ-агентов с доступом к командной строке Агент, который умеет запускать команды, например Claude Code или Codex, может использовать `talkbar-cli` вместо MCP. Это не требует определений инструментов, а одна команда может выполнить много операций. - Получайте указатель с помощью `talkbar-cli tools list --compact`, а аргументы одной операции — с помощью `talkbar-cli tools info `. - Используйте пакеты вместо циклов: один `tools batch` заменяет много запусков `tools call`, а каждый запуск `talkbar-cli` требует времени на старт. - Передавайте длинный текст через `--args -` или `--args-file`. - Ориентируйтесь на коды ошибок из `--output json`, а не на текст сообщений. - Помните, что командная строка игнорирует переключатели раздела «Доступ по MCP». Давайте агенту этот способ, только если вы готовы к тому, что он сможет выполнить любую операцию, которую могли бы выполнить вы сами. ## Приложение обновляется само После успешного изменения `talkbar-cli` (и MCP-сервер) сообщает запущенному приложению TalkBar, что изменилось, по закрытому локальному каналу. Приложение обновляет экраны и меню в трее, где показаны эти элементы. Если приложение закрыто, ничего не отправляется и ничего не замедляется. ## См. также - [Обзор MCP](/mcp/overview) - [Доступ и разрешения](/mcp/access-and-permissions) - [Ошибки и ограничения](/mcp/errors-and-limits) - [Примеры](/mcp/examples) - [Справочник операций](/mcp/operations) --- # Справочник операций Все операции, которые ассистент может выполнять через MCP TalkBar или CLI TalkBar, с аргументами, значениями по умолчанию, разрешениями и результатами. Canonical URL: https://docs.talkbar.ru/mcp/operations TalkBar предоставляет 144 операции (57 на чтение и 87 на изменение): ИИ-ассистентам — через MCP, скриптам — через CLI TalkBar. В этом справочнике описана каждая из них: что она делает, какой инструмент MCP её выполняет, включена ли она по умолчанию, какие у неё аргументы и что она возвращает. ## Операции по категориям | Категория | Чтение | Изменение | Всего | | --- | ---: | ---: | ---: | | [Рабочее пространство и профиль](/mcp/operations/workspace-and-profile) | 5 | 2 | 7 | | [Сессии](/mcp/operations/sessions) | 10 | 11 | 21 | | [Проекты и заметки](/mcp/operations/projects-and-notes) | 6 | 12 | 18 | | [Задачи](/mcp/operations/action-items) | 2 | 4 | 6 | | [База знаний](/mcp/operations/knowledge) | 3 | 13 | 16 | | [Люди и компании](/mcp/operations/people-and-companies) | 5 | 8 | 13 | | [Темы и закладки](/mcp/operations/topics-and-markers) | 3 | 8 | 11 | | [Чаты и документы](/mcp/operations/chats-and-documents) | 6 | 4 | 10 | | [Календарь и серии](/mcp/operations/calendar-and-series) | 8 | 14 | 22 | | [Планировщик](/mcp/operations/scheduler) | 3 | 2 | 5 | | [Экспорт](/mcp/operations/exports) | 6 | 9 | 15 | | **Все** | **57** | **87** | **144** | ## Как читать этот справочник У каждой операции свой раздел, заголовок которого — её название (например, `sessions.get`), а под ним строка вида: **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` | Метка | Значение | | --- | --- | | **Тип** | Операции **чтения** только читают данные. Операции **изменения** что-то меняют. | | **Выполняется через** | Инструмент MCP, который выполняет операцию. Чтение выполняется через [`talkbar_read`](/mcp/tools#talkbar_read). Изменения выполняются через [`talkbar_change`](/mcp/tools#talkbar_change), кроме 15 операций, которые перемещают элементы в корзину, архивируют или удаляют их либо отменяют запланированную встречу: они выполняются только через [`talkbar_delete`](/mcp/tools#talkbar_delete). Такие операции [требуют вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. | | **Переключатель MCP** | Включена ли операция сразу после настройки MCP. Каждую операцию можно включить или выключить в разделе **Настройки → Доступ по MCP**. 81 операция изначально включена, 63 — выключены: операции чтения включены; изменения ваших элементов выключены, а большинство операций с календарём, сериями, планировщиком и экспортом включены. Выключенная операция отвечает `turned_off`. CLI эти переключатели не учитывает. | | **Группа политики** | Группа, которую политика администратора может разрешить или заблокировать. Если вашим TalkBar управляет организация, заблокированная группа недоступна и через MCP, и через CLI. Подробнее — в разделе [Доступ и разрешения](/mcp/access-and-permissions). | ### Группы политик | Группа | Что охватывает | Операции | | --- | --- | --- | | `metadata` | Названия, количества, списки и расписания без текста встреч: рабочие пространства, тариф, списки сессий и их показатели, записываемая сессия, списки проектов, чтение календаря и серий. | 14 | | `content` | Чтение, которое возвращает текст встреч: итоги, транскрипты, заметки, чаты, карточки, люди, фрагменты результатов поиска, подготовка к встрече и предпросмотр экспорта. | 35 | | `contentChanges` | Все изменения сессий, проектов, заметок, задач, базы знаний, людей, тем, закладок, чатов, документов, вашего профиля и названий рабочих пространств. | 62 | | `scheduling` | Изменения запланированных встреч и серий сессий. | 14 | | `scheduler` | Просмотр фоновых заданий и управление ими. | 5 | | `exports` | Настройки, пакеты и доставки экспорта (кроме `exports.preview`, которая входит в `content`). | 14 | ### Аргументы Для каждого аргумента указан тип, обязательные аргументы отмечены. Диапазоны, допустимые значения и значения по умолчанию берутся из схемы операции; полную схему любой операции также можно получить у [`talkbar_tools`](/mcp/tools#talkbar_tools) с помощью `{"tool": ""}`. - **`workspaceId` везде необязателен**, поэтому в списках аргументов не указан. Без него используется рабочее пространство, открытое в приложении. `workspace.list` вообще не принимает аргументов и показывает пространства, которые можно указать. - Аргумент, который операция не принимает, отклоняется с указанием его имени и никогда не игнорируется. Значение вне допустимого диапазона отклоняется, а не обрезается до границы. - Поля времени, названия которых оканчиваются на `Ms`, содержат время Unix в миллисекундах (или, где это указано, миллисекунды от начала сессии). В тексте транскрипта и хронологии время показано как `mm:ss` или `h:mm:ss`. - Если аргумент принимает `null`, то `null` очищает значение, а если аргумент не передан, значение сохраняется. Коды ошибок, постраничный вывод и лимиты тарифа описаны в разделе [Ошибки и ограничения](/mcp/errors-and-limits). ## Как вызвать операцию Через MCP передайте операцию и её аргументы инструменту, который её выполняет: ```json {"tool": "sessions.get", "args": {"sessionId": "ses_123"}} ``` Из командной строки тот же вызов выглядит так: ```bash talkbar-cli tools call sessions.get --args '{"sessionId":"ses_123"}' ``` Чтобы выполнить по порядку до 20 операций, используйте `{"calls": [...]}`. После ошибки вызовы продолжаются, если не добавить `"stopOnError": true` (по умолчанию `false`). Идентификаторы в примерах на этих страницах условные. Настоящие можно найти через [`talkbar_find`](/mcp/tools#talkbar_find) или операцию получения списка. Подробнее — в разделах [Пять инструментов MCP](/mcp/tools) и [CLI](/mcp/cli). ## Чего ассистенты не могут делать Ни одна операция не ведёт запись и не управляет ею, не редактирует транскрипт, не подводит итоги, не меняет настройки приложения (исключение — места и правила экспорта через операции `exports.*`), не очищает корзину, не удаляет безвозвратно элементы, у которых есть корзина, и не добавляет документы. Всё это делается только в приложении. ## См. также - [Обзор MCP](/mcp/overview) - [Пять инструментов MCP](/mcp/tools) - [Доступ и разрешения](/mcp/access-and-permissions) - [Ошибки и ограничения](/mcp/errors-and-limits) - [Примеры](/mcp/examples) --- # Примеры Практические сценарии работы с TalkBar через MCP и CLI с настоящими запросами и ответами — от вопроса о сессиях прошлой недели до закладки во время записи. Canonical URL: https://docs.talkbar.ru/mcp/examples Эти сценарии показывают, что происходит, когда вы просите ассистента поработать с TalkBar: какой инструмент он вызывает, с какими аргументами и что получает в ответ. Идентификаторы, время и текст вымышлены, а длинные ответы сокращены, но каждый запрос и ответ имеет ту же структуру, что и в настоящем TalkBar. Писать эти запросы самим не нужно. Ваше ИИ-приложение составляет их по вашему вопросу. Они приведены здесь, чтобы вы знали, что может ассистент, и могли проверить его работу. ## Спросить о сессиях прошлой недели **Подготовка:** включите MCP и подключите Claude Desktop, как описано в разделе [Настройка MCP](/mcp/setup). Чтение включено по умолчанию, так что больше ничего не нужно. Затем спросите Claude: «О чём я говорил на сессиях TalkBar на прошлой неделе?» Ассистент получает список сессий, начавшихся на той неделе, с помощью `talkbar_read`. Время указывается в миллисекундах с 1970 года (UTC); граница `startedBeforeMs` не включается. ```json [talkbar_read] { "tool": "sessions.list", "args": { "startedAfterMs": 1792368000000, "startedBeforeMs": 1792972800000, "limit": 20 } } ``` ```json [Ответ] { "items": [ { "sessionId": "0b7e4d1a-93c2-4f5e-8a61-2f9d3c7b5e08", "title": "Weekly sync", "status": "complete", "startedAtMs": 1792747800000, "endedAtMs": 1792749940000, "projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1", "seriesId": null, "participantCount": 4, "pinned": false, "source": "live", "private": false }, { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "title": "Pricing review with Acme", "status": "complete", "startedAtMs": 1792594800000, "endedAtMs": 1792597632000, "projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1", "seriesId": null, "participantCount": 3, "pinned": true, "source": "live", "private": false } ], "nextCursor": null, "hasMore": false, "totalCount": 2 } ``` Самые новые сессии идут первыми. Чтобы прочитать итоги, ассистент объединяет в один вызов по одному `sessions.get` на сессию: ```json [talkbar_read] { "calls": [ { "tool": "sessions.get", "args": { "sessionId": "0b7e4d1a-93c2-4f5e-8a61-2f9d3c7b5e08" } }, { "tool": "sessions.get", "args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10" } } ] } ``` Ответ имеет вид `{"results": [...]}`, по одной записи на сессию, и в каждой — полные итоги, их разделы, задачи и решения. После этого Claude пишет вам краткий обзор. ## Найти сессию и прочитать транскрипт по частям Спросите: «Найди мою встречу с Acme о ценах и покажи, что Дана говорила о скидке». Сначала ассистент выполняет поиск, чтобы получить идентификатор сессии: ```json [talkbar_find] { "query": "pricing review Acme", "kinds": ["session"], "limit": 3 } ``` У первого совпадения `"kind": "session"` и `"id": "6f1c2a9e-…"`. Затем ассистент читает транскрипт. Транскрипт выдаётся страницами из целых реплик, по умолчанию по 20 000 символов. `speaker` оставляет реплики одного человека (любая часть имени, без учёта регистра): ```json [talkbar_read] { "tool": "sessions.transcript", "args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "speaker": "Dana", "maxChars": 4000 } } ``` ```json [Ответ] { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "title": "Pricing review with Acme", "startedAtMs": 1792594800000, "private": false, "truncated": true, "excludedFromAiSpeakers": [], "nextCursor": null, "totalTurns": 38, "turnOffset": 0, "nextTurnOffset": 14, "transcript": "[02:15] Dana Lee: We can go to twelve percent if the contract is two years.\n[02:41] Dana Lee: That's the most I can do this quarter.\n…" } ``` `truncated: true` означает, что есть продолжение. Ассистент передаёт `nextTurnOffset` обратно как `turnOffset` для следующей страницы и останавливается, когда `nextTurnOffset` равен `null`: ```json [talkbar_read] { "tool": "sessions.transcript", "args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "speaker": "Dana", "maxChars": 4000, "turnOffset": 14 } } ``` С `"format": "json"` транскрипт возвращается в виде массива `turns`, где у каждой реплики есть `turnId`, `startMs` и `endMs` (миллисекунды от начала сессии), `speaker` и `text`. Используйте эту форму, если хотите поставить закладку на реплику или привязать к ней задачу. То же чтение из терминала: ```shell talkbar-cli tools call sessions.transcript --args-file read.json ``` ## Создать заметку и задачу **Подготовка:** в разделе **Настройки → Доступ по MCP** откройте строку **Заметки** и включите **Создать заметку**, затем откройте **Задачи** и включите **Создать задачу** (`action_items.create`). Остальные изменения, если они не нужны, оставьте выключенными. Спросите: «Оформи договорённости со встречи с Acme о ценах заметкой к этой сессии и поставь мне задачу отправить обновлённое коммерческое предложение до вторника». Ассистент отправляет оба изменения одним пакетом `talkbar_change`: ```json [talkbar_change] { "calls": [ { "tool": "notes.create", "args": { "title": "Acme pricing follow-ups", "markdown": "## Follow-ups\n\n- Revised quote at 12% for a two-year term\n- Confirm the start date with legal", "sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"] } }, { "tool": "action_items.create", "args": { "title": "Send the revised quote to Acme", "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "itemType": "task", "dueAtMs": 1793725200000, "assignees": ["Alex Kim"] } } ], "stopOnError": true } ``` ```json [Ответ] { "results": [ { "tool": "notes.create", "ok": true, "result": { "noteId": "note-k2v9w8x7c6b5n4m3l2j1h0g9", "title": "Acme pricing follow-ups", "pinned": false, "sessionId": null, "updatedAt": 1793369525000, "projectId": null, "sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"] } }, { "tool": "action_items.create", "ok": true, "result": { "itemId": "outcome-x4c8v2b6n1m9q3w7e5r0t2y8", "itemType": "task", "title": "Send the revised quote to Acme", "status": "open", "dueAtMs": 1793725200000, "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "sessionTitle": "Pricing review with Acme", "projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1", "assignees": [{ "name": "Alex Kim", "contactId": null }], "origin": "manual", "sources": [], "sessionStatus": "complete" } } ] } ``` Ответ для задачи сокращён. Заметка, привязанная к сессии, показывается на странице этой сессии; `sessionId` остаётся `null`, потому что это не собственная заметка сессии. Задача получает проект сессии, если вы не укажете другой. Если TalkBar открыт, обе записи сразу появятся в нём. ## Добавить закладку во время записи **Подготовка:** включите **Добавить закладку** (`markers.create`) в строке **Закладки**. Сама запись всегда управляется только из приложения. Во время записи попросите: «Поставь закладку на момент, когда Сэм упомянул заморозку бюджета». Сначала ассистент находит сессию, которая записывается сейчас: ```json [talkbar_read] { "tool": "sessions.recording" } ``` ```json [Ответ] { "recording": { "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "title": "Budget planning", "startedAtMs": 1793368800000, "elapsedMs": 725000, "revision": "…", "appRunning": true, "stale": false } } ``` Если ничего не записывается, `recording` равен `null`. `stale: true` означало бы, что TalkBar не запущен и сессия лишь выглядит записывающейся. Затем ассистент читает уже записанную часть транскрипта в JSON. Чтение с `cursor: "0:"` возвращает реплики в порядке их изменения и `nextCursor`, чтобы в следующий раз получить только новое: ```json [talkbar_read] { "tool": "sessions.transcript", "args": { "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "format": "json", "cursor": "0:" } } ``` ```json [Ответ] { "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "title": "Budget planning", "startedAtMs": 1793368800000, "private": false, "truncated": false, "excludedFromAiSpeakers": [], "nextCursor": "1793369523871:turn-42", "recording": true, "turns": [ { "turnId": "turn-42", "chunkId": "chunk-17", "provisional": true, "startMs": 641000, "endMs": 652500, "speaker": "Sam Ortiz", "isUser": false, "excludedFromAi": false, "text": "Heads up, finance just told us there's a budget freeze until January.", "translatedText": null } ] } ``` Ассистент добавляет закладку на эту реплику с короткой пометкой: ```json [talkbar_change] { "tool": "markers.create", "args": { "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "turnId": "turn-42", "body": "Budget freeze until January" } } ``` ```json [Ответ] { "markerId": "…", "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "kind": "bookmark", "body": "Budget freeze until January", "quote": null, "atMs": 641000, "turnId": "turn-42", "chunkId": null, "pointId": null, "color": "", "updatedAt": 1793369525000, "sessionStatus": "recording" } ``` Закладка сразу появляется на экране записи. Вместо `turnId` ассистент может указать место закладки через `chunkId`, `pointId` (точку хронологии из `sessions.timeline`), `atMs` (момент от начала сессии) или `quote` (слова, к которым она относится). ## Экспортировать сессию **Подготовка:** сначала добавьте место экспорта в приложении, например папку в вашем хранилище Obsidian; см. [Экспорт](/sharing/exports). Операции экспорта включены по умолчанию, как только включён MCP. Попросите: «Экспортируй встречу с Acme о ценах в моё хранилище Obsidian». Ассистент получает список мест экспорта: ```json [talkbar_read] { "tool": "exports.config" } ``` ```json [Ответ] { "destinations": [ { "destinationId": "5d2e7a10-8c3b-4f69-b1e4-0a9c6d3f2b87", "workspaceId": "…", "name": "Obsidian vault", "format": "obsidian", "location": "PATH_TO_VAULT/Meetings", "enabled": true, "layout": "flat", "credentialRef": null } ], "rules": [] } ``` Затем ставит экспорт в очередь, выбирая, что в него включить: ```json [talkbar_change] { "tool": "exports.enqueue", "args": { "sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"], "destinationIds": ["5d2e7a10-8c3b-4f69-b1e4-0a9c6d3f2b87"], "selection": { "summary": true, "transcript": true, "metadata": true, "notes": true, "audio": "none" } } } ``` В ответ приходит новый пакет экспорта с `batchId`, `status` и записью в `deliveries` для каждой пары «сессия — место экспорта». `exports.enqueue` только ставит работу в очередь. Экспорт из очереди доставляет приложение TalkBar, пока оно запущено. Чтобы доставить сразу, ассистент может вызвать `exports.run` с `batchId`, а затем проверить результат с помощью `exports.status`: ```json [talkbar_change] { "tool": "exports.run", "args": { "batchId": "…" } } ``` У доставленной записи `"status": "exported"` и её `location`. Сессию, которая ещё записывается, поставить в очередь нельзя: такой вызов отвечает `session_recording`. В терминале `talkbar-cli exports run --workspace WORKSPACE_ID --batch BATCH_ID --wait` продолжает доставку, пока пакет не будет выполнен. См. [Экспорт в talkbar-cli](/mcp/cli#экспорт). ## Безопасное удаление **Подготовка:** включите **Переместить заметку в корзину** (`notes.trash`) в строке **Заметки**. Оставьте **Разрешить удаление без подтверждения** выключенным. Попросите: «Перемести старый черновик заметки про Acme в корзину». Ассистент находит заметку с помощью `talkbar_find`, затем вызывает `talkbar_delete`: ```json [talkbar_delete] { "tool": "notes.trash", "args": { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2" } } ``` Прежде чем что-либо выполнится, ваше ИИ-приложение покажет вопрос TalkBar: ```text An assistant wants TalkBar to run: - notes.trash {"noteId":"note-a1s2d3f4g5h6j7k8l9z0x1c2"} Confirm to run it, or decline to run nothing. ``` Если вы откажетесь или не ответите в течение 5 минут, ничего не выполнится, а ассистент получит: ```json { "error": { "code": "declined", "message": "The user did not confirm, so nothing ran" } } ``` Если подтвердите, заметка переместится в корзину: ```json { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2", "trashed": true } ``` Передумали? `notes.restore` вернёт заметку. Эта операция выполняется через `talkbar_change`, поэтому подтверждения не требует, но её нужно включить — **Восстановить заметку**: ```json [talkbar_change] { "tool": "notes.restore", "args": { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2" } } ``` ```json [Ответ] { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2", "restored": true } ``` `notes.trash.list` выводит содержимое корзины заметок. Никакие действия ассистента не удаляют заметку навсегда; очистка корзины остаётся в приложении. Если ваше ИИ-приложение не умеет показывать вопросы от сервера, удаление вместо этого отклоняется с кодом `confirmation_unavailable`, и ничего не выполняется. См. [Приложения, которые не умеют спрашивать](/mcp/access-and-permissions#приложения-которые-не-умеют-спрашивать). ## См. также - [Настройка MCP](/mcp/setup) - [Пять инструментов MCP](/mcp/tools) - [Доступ и разрешения](/mcp/access-and-permissions) - [Ошибки и ограничения](/mcp/errors-and-limits) - [talkbar-cli](/mcp/cli) - [Справочник операций](/mcp/operations) --- # Ошибки и ограничения Коды ошибок TalkBar MCP и talkbar-cli и что с ними делать, лимиты тарифа, параллельная работа, правила для аргументов и безопасные повторы. Canonical URL: https://docs.talkbar.ru/mcp/errors-and-limits Когда операция отклонена или завершилась ошибкой, TalkBar отвечает коротким кодом и предложением о том, что нужно изменить. Ассистентам и скриптам следует ориентироваться на код; предложение предназначено для людей. На этой странице перечислены все коды и правила, которые за ними стоят. ## Формат ошибки В MCP отклонённая или неудачная операция — это обычный результат инструмента с `isError: true`. В пакете это поле `error` записи. В `talkbar-cli --output json` ошибка выводится на стандартный вывод. Формат везде одинаковый: ```json { "error": { "code": "invalid_arguments", "message": "notes.create does not take `content`. Note text goes in markdown. It takes: markdown, pinned, projectId, sessionIds, title, workspaceId. Arguments: talkbar_tools {\"tool\":\"notes.create\"}" } } ``` Некоторые коды добавляют поля, перечисленные ниже. Ошибку протокола JSON-RPC вместо этого получают только вызов инструмента с именем, отличным от [пяти инструментов MCP](/mcp/tools), и вызов, отменённый вашим клиентом. ## Коды ошибок | Код | Что означает | Что делать | | --- | --- | --- | | `invalid_arguments` | Неверен сам запрос: неизвестный аргумент, неверный тип, значение вне диапазона или не из списка допустимых, отсутствует обязательный аргумент, пустой идентификатор. | Измените запрос. В сообщении назван аргумент; `talkbar_tools {"tool": ""}` или `talkbar-cli tools info ` показывает, что принимает операция. | | `not_found` | Идентификатор неизвестен, относится к другому пространству или элемент находится в корзине. Также неизвестное имя операции. | Найдите нужный идентификатор с помощью `talkbar_find` или списка. Если элемент в корзине, в сообщении будет «… is in the Trash; restore it first». | | `turned_off` | Вы выключили операцию в разделе **Настройки → Доступ по MCP**, или MCP выключен. Только для MCP. | Попросите пользователя включить её. Повтор вызова не поможет. | | `failed` | Запрос составлен правильно, но текущее состояние элемента не позволяет его выполнить (например, «A topic with this name already exists»), его блокирует правило администратора или внутри TalkBar что-то пошло не так. | Прочитайте сообщение. Измените состояние элемента или запрос; не повторяйте тот же вызов без изменений. | | `declined` | Пользователь не подтвердил вызов `talkbar_delete` или не ответил в течение 5 минут. Ничего не выполнено. | Не повторяйте сами. Спросите пользователя, чего он хочет. | | `confirmation_unavailable` | Вызов `talkbar_delete` пришёл от клиента, который не умеет спрашивать пользователя, а **Разрешить удаление без подтверждения** выключено. Ничего не выполнено. | Используйте клиент, который поддерживает запросы к пользователю по MCP (`elicitation`), или попросите пользователя изменить параметр. | | `busy` | Другое изменение успело обратиться к базе данных раньше, или уже идёт выполнение экспорта. Содержит `"retryable": true` и `retryAfterMs`. | Подождите `retryAfterMs` и отправьте тот же вызов снова. Если вызов что-то создавал, сначала проверьте, что этого ещё нет. | | `conflict` | `notes.update` отправлен с `expectedUpdatedAt`, которого у заметки уже нет: кто-то изменил её после того, как вы её прочитали. Содержит текущий `updatedAt` заметки. | Прочитайте заметку заново с помощью `notes.get` и внесите правку в её текущее содержимое. | | `session_recording` | Сессия ещё записывается. Возвращается для `sessions.trash`, изменений участников (`sessions.speakers.rename`, `.link`, `.unlink`) и `exports.enqueue`. | Повторите после окончания записи, когда `sessions.recording` перестанет её возвращать. | | `limit_reached` | Фиксированное ограничение самого элемента, а не тарифа. Содержит `limit` и `max`. Сейчас это: в сессии не больше 24 карточек знаний (`"limit": "sessionCards"`). | Сначала освободите место, например уберите карточку с помощью `sessions.cards.detach`. | | `plan_limit` | Ваш тариф TalkBar этого не позволяет. Содержит `limit`, а для лимитов по количеству — `max`, `used` и `plan`. | Освободите место или перейдите на тариф выше в приложении. Повтор не поможет. См. [Лимиты тарифа](#лимиты-тарифа). | ### `invalid_arguments` или `failed`? - `invalid_arguments` означает, что нужно изменить запрос: неверное значение, неизвестный тип или цвет, пустое название. - `failed` означает, что запрос в порядке, но текущее состояние элемента не позволяет его выполнить: «A topic with this name already exists», «A series with this id already exists; use another id or change the existing one», «Archived series cannot take new sessions». ### `busy` и повторные попытки ```json { "error": { "code": "busy", "message": "TalkBar's database was busy with another write. Try the same call again; if it created something, check first that it is not already there.", "retryable": true, "retryAfterMs": 1000 } } ``` `retryAfterMs` равен 1 000 мс, если база данных была занята, и 5 000 мс, если уже идёт выполнение экспорта. ## Лимиты тарифа Большинство действий ассистента тарифом не ограничены. Ограничены эти операции, потому что они увеличивают количество, которое ограничивает ваш тариф: | Операция | `limit` | Что учитывается | | --- | --- | --- | | `projects.create`, `projects.restore` | `projects` | Проекты в пространстве, с которым работает вызов | | `sessions.restore` | `sessions` | Хранящиеся сессии в этом пространстве | При достижении лимита вызов отклоняется: ```json { "error": { "code": "plan_limit", "limit": "projects", "max": 1, "used": 1, "plan": "free", "message": "Project limit reached (1 of 1 on Free): your plan includes 1 project, and this workspace already has 1. Move a project to Trash or upgrade the plan in TalkBar, then try again; plan.get lists the plans above Free." } } ``` - Тариф определяется лицензией, активированной в приложении. Ассистент не может его изменить. - `plan.get` сообщает тариф, каждый лимит с текущим использованием и тарифы выше текущего. - На Business, самом старшем тарифе, сообщение заканчивается фразой «Move a project to Trash, then try again.». Что входит в каждый тариф, см. в разделе [Тарифы и лицензия](/data/plans-and-license). ## Параллельная работа - **Изменения выполняются по одному** внутри одного MCP-сервера или процесса `talkbar-cli`, поэтому параллельные вызовы одного ассистента никогда не конфликтуют. Чтение выполняется параллельно. - **Другие процессы:** когда записывает другая программа (приложение во время записи сессии или второй MCP-сервер), изменение ждёт её до 5 секунд, а затем отвечает `busy`. - **Экспорт:** `exports.run` выполняется вне этой очереди, потому что доставка может занимать много времени и не должна задерживать `exports.cancel`. На одном сервере одновременно выполняется только один экспорт; второй отвечает `busy`. - **До четырёх вызовов одновременно:** одно MCP-подключение выполняет не больше четырёх вызовов инструментов одновременно. Ответы могут приходить не в том порядке, что запросы. - **Отменённые запросы:** когда клиент отменяет вызов, он получает ошибку JSON-RPC (`-32603`, «Request cancelled by the client»), а не код ошибки с этой страницы. Запрос, отменённый до начала, не выполняется, а изменение, которое ещё ждало своей очереди, отбрасывается. Если вы выключите операцию, пока изменение ждёт, оно ответит `turned_off`. Одно долго работающее MCP-подключение быстрее, чем запуск `talkbar-cli` для каждого вызова. В командной строке лучше использовать [`tools batch`](/mcp/cli#запуск-пакета). ## Правила для аргументов TalkBar строго проверяет аргументы, поэтому ошибка называется явно, а не игнорируется молча: - **Неизвестные аргументы отклоняются с указанием имени** и списка аргументов, которые принимает операция. Если текст заметки передан в `content`, `text` или `body`, приходит подсказка «Note text goes in markdown.». Неизвестные ключи внутри вложенного объекта, описанного в схеме, тоже отклоняются. - **Неверные значения отклоняются до поиска.** Неверный тип, значение не из списка допустимых или вне диапазона либо неверный элемент массива дают `invalid_arguments` ещё до того, как TalkBar начнёт искать идентификаторы. Поэтому при неизвестном идентификаторе и неверном значении будет названо значение; при верном значении и неизвестном идентификаторе — `not_found`. - **Отсутствующие обязательные аргументы** называются следующими (`noteId is required`), тоже до поиска. - **Точные значения.** Допустимые значения должны совпадать точно: `"Note"` или `" any "` отклоняются там, где ожидается `note` или `any`. - **Диапазоны не подгоняются.** `limit`, `maxChars` или `offset` вне диапазона из схемы отклоняются. - **Идентификаторы не могут быть пустыми.** Аргумент, имя которого оканчивается на `Id`, если он передан, не может быть `""`; чтобы очистить необязательный, используйте `null`. Список, имя которого оканчивается на `Ids`, не может содержать пустой идентификатор. - **Никаких управляющих символов** ни в одном аргументе, кроме табуляции и переводов строки. - **`args` — это объект.** Если аргументов нет, не передавайте его или передайте `null`; массив, число или строка отклоняются с сообщением «arguments must be an object». - **Названия, которые не могут быть пустыми,** проверяются после удаления пробелов по краям, поэтому `" "` считается пустым. Заметки, названия чатов и имя в профиле могут быть пустыми, как в приложении. - **Время в прошлом** принимается там, где его принимает приложение, например при добавлении встречи, которая уже прошла. - **Пять инструментов MCP** отклоняют ключи, которых не принимают. `talkbar_read`, `talkbar_change` и `talkbar_delete` принимают `tool` (с `args`) или `calls`, но не оба сразу, а `stopOnError` должен быть `true` или `false`. ## Безопасное повторение изменений Отправить одно и то же изменение дважды безопасно. Повторный вызов тоже завершается успешно и сообщает текущее состояние: - Перемещение в корзину того, что уже в корзине, или восстановление того, что не в корзине. - Архивация того, что уже в архиве, или разархивация того, что не в архиве. - Закрепление того, что уже закреплено. Сохраняется дата первого перемещения в корзину или архивации. Неизвестный идентификатор по-прежнему даёт `not_found`. Исключение — `action_items.remove`: эта операция удаляет задачу окончательно (добавленная вами задача удаляется, задача из итогов скрывается), поэтому повторное удаление даёт `not_found`. Создание повторять небезопасно: два вызова `notes.create` создадут две заметки. Если на создание пришёл ответ `busy`, проверьте результат, прежде чем отправлять вызов снова. ## Что недоступно никогда Что бы вы ни включили, ассистент не может вести запись или управлять текущей сессией, изменять транскрипт, подводить итоги, запускать ИИ-функции TalkBar, менять настройки, удалять что-либо навсегда, очищать корзину, добавлять или переиндексировать документы. Кода ошибки для этого нет: таких операций просто не существует. ## См. также - [Пять инструментов MCP](/mcp/tools) - [Доступ и разрешения](/mcp/access-and-permissions) - [talkbar-cli](/mcp/cli) - [Справочник операций](/mcp/operations) --- # Задачи Операции MCP и CLI, чтобы показывать, читать, создавать, изменять, завершать и убирать задачи, напоминания, вопросы и решения. Canonical URL: https://docs.talkbar.ru/mcp/operations/action-items Операции с задачами работают с четырьмя видами элементов, которые отслеживает TalkBar: задачами, напоминаниями, вопросами и решениями. Элемент относится к сессии, проекту или разделу «Общее» и может указывать на момент сессии, из которого он появился. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`action_items.list`](#action_itemslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`action_items.get`](#action_itemsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`action_items.create`](#action_itemscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`action_items.update`](#action_itemsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`action_items.set_status`](#action_itemsset_status) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`action_items.remove`](#action_itemsremove) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | ## Статусы по типам | Тип | Статусы | | --- | --- | | `task` | `open`, `done` | | `follow_up` | `open`, `done` | | `question` | `open`, `answered` | | `decision` | `active`, `superseded` | ## `action_items.list` Показывает задачи: собственно задачи, напоминания, вопросы и решения. Можно фильтровать по сессии, проекту, серии, разделу «Общее», типу, статусу, исполнителю или тексту. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string) Только элементы этой сессии. Если он указан, `projectId`, `seriesId`, `generalOnly` и `includeStopped` игнорируются. **projectId** (string) Только элементы этого проекта. **seriesId** (string) Только элементы этой серии. **generalOnly** (boolean) Только элементы раздела «Общее» (не привязанные к проекту). Нельзя сочетать с `projectId` или `seriesId`. **itemTypes** (string[]) Только эти типы: `task`, `follow_up`, `question`, `decision`. **statuses** (string[]) Только эти статусы: `open`, `done`, `answered`, `active`, `superseded`. **contactIds** (string[]) Только элементы, назначенные этим людям. **text** (string) Текст для поиска в названиях и подробностях. **includeStopped** (boolean) Показывать также перенесённые элементы, перенос которых остановлен. **limit** (integer) Сколько вернуть. От 1 до 200. По умолчанию `50`. **Возвращает:** `{items: [{itemId, itemType, label, title, status, dueAtMs, sessionId, sessionTitle, projectId, assignees, anchor, updatedAt}]}`. `anchor` (`{turnId, pointId, atMs}` или `null`) — момент, к которому привязан элемент. - Завершённые элементы (выполненные, получившие ответ, заменённые) идут в конце. Значения типа и статуса, не входящие в списки выше, ничему не соответствуют. ```json {"tool": "action_items.list", "args": {"projectId": "proj_456", "statuses": ["open"]}} ``` ## `action_items.get` Читает одну задачу с подробностями, исполнителями, статусом и источниками. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **itemId** (string, required) Задача из `action_items.list`. **Возвращает:** `{itemId, itemType, labelId, label, title, details, status, dueAtMs, answer, sessionId, sessionTitle, projectId, assignees: [{name, contactId}], origin, sources, resolvedAtMs, createdAt, updatedAt}`. `sources` перечисляет цитаты и моменты, из которых появился элемент. ## `action_items.create` Добавляет задачу в сессию, проект или раздел «Общее». Работает и во время записи, задача появляется сразу. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **title** (string, required) Что нужно сделать. Не может быть пустым. **sessionId** (string) Добавить в эту сессию. Без `projectId` элемент получает проект сессии. **projectId** (string) Добавить в этот проект. Если не указан ни `sessionId`, ни `projectId`, элемент попадает в раздел «Общее». **itemType** (string) Одно из значений: `task`, `follow_up`, `question`, `decision`. По умолчанию `task`. **labelId** (string) Идентификатор метки элемента (например, «Идея» или «Препятствие»); `labelId` элемента показывает `action_items.get`. Каждая метка относится к одному типу элементов. **details** (string) Подробности. **status** (string) Одно из значений `open`, `done`, `answered`, `active`, `superseded`, допустимых для этого типа. По умолчанию `open` (`active` для решения). **dueAtMs** (integer | null) Срок как время Unix в мс (только для задач и напоминаний). `null` — без срока. **answer** (string) Ответ (только для вопросов). **assignees** ((string | object)[]) Для кого элемент: имена или объекты `{name, contactId}` с непустым `name`. **turnId** (string) Реплика транскрипта (`sessions.transcript` с `format: "json"`). Привязывает элемент к моменту его сессии. Требует `sessionId`. **chunkId** (string) Фрагмент текущего транскрипта (`sessions.transcript` с `format: "json"`). Привязывает элемент к моменту его сессии. Требует `sessionId`. **pointId** (string) Пункт хронологии (`sessions.timeline`). Нельзя сочетать с `turnId` или `chunkId`. Привязывает элемент к моменту его сессии. Требует `sessionId`. **atMs** (integer) Момент в мс от начала сессии. Вместе с репликой, фрагментом или пунктом он должен попадать внутрь них; во время записи он не может быть позже текущего момента. Привязывает элемент к моменту его сессии. Требует `sessionId`. **quote** (string) Слова, к которым относится элемент. Если указан только он, находится та единственная реплика, в которой есть эти слова. Привязывает элемент к моменту его сессии. Требует `sessionId`. **Возвращает:** элемент в том же виде, что и `action_items.get`; для сессии — также `sessionStatus` (и `warning`, если сессия была прервана или TalkBar не запущен). - Идентификатор, которого нет в сессии, отклоняется с `invalid_arguments`. - Срок у вопроса или решения, а также ответ у чего-либо, кроме вопроса, отклоняются. - Элемент сохраняет и момент, и идентификаторы, поэтому приложение правильно размещает его и после улучшения транскрипта. ```json {"tool": "action_items.create", "args": {"sessionId": "ses_123", "title": "Send revised quote", "itemType": "follow_up", "assignees": ["Dana Lee"], "quote": "send you a revised quote"}} ``` ## `action_items.update` Меняет название, подробности, тип, метку, статус, срок, ответ или исполнителей задачи. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **itemId** (string, required) Задача из `action_items.list`. **title** (string) Новое название. Не может быть пустым. **details** (string | null) Подробности. `null` очищает их. **itemType** (string) Одно из значений: `task`, `follow_up`, `question`, `decision`. **labelId** (string) Идентификатор метки элемента (например, «Идея» или «Препятствие»); `labelId` элемента показывает `action_items.get`. Каждая метка относится к одному типу элементов. **status** (string) Одно из значений `open`, `done`, `answered`, `active`, `superseded`, допустимых для этого типа. **dueAtMs** (integer | null) Срок как время Unix в мс. `null` очищает его. **answer** (string | null) Ответ (только для вопросов). `null` очищает его. **assignees** ((string | object)[]) Заменяет исполнителей: имена или объекты `{name, contactId}`. **Возвращает:** элемент в том же виде, что и `action_items.get`. - Укажите хотя бы одно поле. ## `action_items.set_status` Завершает задачу или снова открывает её, при желании с ответом. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **itemId** (string, required) Задача из `action_items.list`. **status** (string, required) Новый статус. Задачи и напоминания: `open` или `done`. Вопросы: `open` или `answered`. Решения: `active` или `superseded`. **answer** (string) Ответ, который нужно сохранить (для вопросов). **Возвращает:** элемент в том же виде, что и `action_items.get`. - Статус, недопустимый для этого типа, отклоняется с `invalid_arguments` и списком допустимых статусов. ```json {"tool": "action_items.set_status", "args": {"itemId": "ai_42", "status": "done"}} ``` ## `action_items.remove` Убирает задачу с её доски так же, как приложение: задача, добавленная вами, удаляется, а задача из итогов скрывается. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **itemId** (string, required) Задача из `action_items.list`. **Возвращает:** `{removed: true, itemId, sessionId, projectId}`, а также `sessionStatus` для задачи сессии. - У задач нет корзины: повторный вызов возвращает `not_found`. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## См. также - [Справочник операций](/mcp/operations) - [Сессии](/mcp/operations/sessions) - [Задачи в приложении](/knowledge/action-items) --- # Календарь и серии Операции MCP и CLI для запланированных встреч — просмотр, планирование, подготовка, перенос, пропуск и отмена, — а также для серий сессий. Canonical URL: https://docs.talkbar.ru/mcp/operations/calendar-and-series Операции с календарём работают с запланированными встречами (в API — `occurrence`), теми же, что показывают календарь приложения и страница подготовки к встрече. Операции с сериями управляют сериями сессий и их расписаниями. Большинство этих операций по умолчанию включены в разделе «Доступ по MCP». Ассистенты могут планировать и готовить встречи, но запись всегда начинается в приложении. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`calendar.upcoming`](#calendarupcoming) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`calendar.get`](#calendarget) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`calendar.prep`](#calendarprep) | Чтение | `talkbar_read` | Вкл. | `content` | | [`calendar.actionable`](#calendaractionable) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`calendar.schedule`](#calendarschedule) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.prepare`](#calendarprepare) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.prep.edit`](#calendarprepedit) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.move`](#calendarmove) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.snooze`](#calendarsnooze) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.cancel`](#calendarcancel) | Изменение | `talkbar_delete` | Вкл. | `scheduling` | | [`calendar.skip`](#calendarskip) | Изменение | `talkbar_delete` | Вкл. | `scheduling` | | [`calendar.start`](#calendarstart) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`calendar.tick`](#calendartick) | Изменение | `talkbar_change` | Выкл. | `scheduling` | | [`series.list`](#serieslist) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`series.get`](#seriesget) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`series.kinds.list`](#serieskindslist) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`series.schedule.get`](#seriesscheduleget) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`series.create`](#seriescreate) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`series.update`](#seriesupdate) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`series.archive`](#seriesarchive) | Изменение | `talkbar_delete` | Вкл. | `scheduling` | | [`series.sessions.assign`](#seriessessionsassign) | Изменение | `talkbar_change` | Вкл. | `scheduling` | | [`series.schedule.set`](#seriesscheduleset) | Изменение | `talkbar_change` | Вкл. | `scheduling` | ## Статусы встреч Встреча может иметь статус `planned`, `started`, `completed`, `missed`, `skipped`, `cancelled` или `unscheduled`. Время указывается в миллисекундах эпохи Unix. ## `calendar.upcoming` Постранично выводит отдельные встречи и встречи серий в заданном интервале времени, начиная с ближайших. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **startAtMs** (integer, required) Начало интервала, мс эпохи Unix. Выводятся встречи, которые пересекаются с интервалом. **endAtMs** (integer, required) Конец интервала, мс эпохи Unix. Не может быть раньше `startAtMs`. **includeArchived** (boolean) Показывать и запланированные встречи серий из архива, которые календарь приложения скрывает. По умолчанию `false`. **statuses** (string[]) Какие встречи выводить. Значения: `planned`, `started`, `completed`, `missed`, `skipped`, `cancelled`. Если поле пустое или не указано — запланированные, начатые, завершённые и несостоявшиеся. **limit** (integer) Сколько вернуть: от 1 до 500. По умолчанию `100`. **offset** (integer) `nextOffset` из предыдущей страницы. **Возвращает:** `{occurrences, nextOffset}`. Строки — это встречи в том виде, в каком их возвращает `calendar.get`, только вместо самих настроек запуска указано `prepared: true/false` (прочитать настройки можно через `calendar.get` или `calendar.prep`). ```json {"tool": "calendar.upcoming", "args": {"startAtMs": 1761955200000, "endAtMs": 1762560000000}} ``` ## `calendar.get` Читает одну запланированную встречу. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. ```json {"tool": "calendar.get", "args": {"occurrenceId": "occ_1"}} ``` ## `calendar.prep` Читает то, что показывает для встречи страница подготовки в приложении: заметки к встрече, карточки и документы, с которыми она начнётся, задачи, которые она забирает с других встреч, и предыдущую сессию серии. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **Возвращает:** `occurrenceId`, `title`, `status`, `plannedStartAtMs`, `durationMinutes`, `seriesId`, `sessionId`, `prepared`, `preparable`, `projectId`, `sessionTemplateId`, `notes` (`[{noteId, title, preview, updatedAt}]`), `cards` (`[{memoryId, title, type, status}]`), `documents`, `actionItems` (`{carried, carriedOverflow, added, skipped, suggested}`) и `previousSession` (`{sessionId, title, startedAtMs, private}` или `null`). - Заметку к встрече можно прочитать через `notes.get`, а итоги предыдущей сессии — через `sessions.get`. Заметки к встрече пишутся в приложении. ```json {"tool": "calendar.prep", "args": {"occurrenceId": "occ_1"}} ``` ## `calendar.actionable` Выводит напоминания о встречах, которые ждут действия «Начать», «Отложить» или «Пропустить». **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы:** только `workspaceId`. **Возвращает:** массив напоминаний `[{jobId, occurrenceId, offsetMinutes, remindAtMs, status, snoozedUntilMs, createdAt, updatedAt}]`, начиная с ближайших. Саму встречу можно прочитать через `calendar.get`. ## `calendar.schedule` Планирует отдельную встречу или встречу серии. Запись при этом никогда не начинается. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Идентификатор новой встречи, который вы выбираете сами. Должен быть новым. **plannedStartAtMs** (integer, required) Время начала, мс эпохи Unix. Прошедшее время допускается, чтобы встречу можно было внести уже после того, как она состоялась. **durationMinutes** (integer, required) Длительность в минутах, не меньше 1. **timezone** (string, required) Часовой пояс IANA, например `America/New_York`. **seriesId** (string) Добавить встречу в эту серию. Серия должна быть активной (не в архиве). **title** (string) Название встречи, от 1 до 200 символов. **reminderOffsetsMinutes** (integer[]) За сколько минут до начала напомнить. До 6 значений, каждое от 0 до 10 080; повторы убираются. По умолчанию `[10]`. **startMode** (string) `prompt` (спросить перед началом) или `automatic` (начать после обратного отсчёта в приложении). По умолчанию `prompt`. **autoStartCountdownSeconds** (integer) Длительность обратного отсчёта перед автоматическим началом, в секундах: от 5 до 300. По умолчанию `60`. **preparedSetup** (object) Настройки запуска, которые сохраняет подготовка к встрече в приложении. Для неуказанных полей остаются значения приложения по умолчанию. Неизвестные поля отклоняются. - `source`: `mic`, `system` или `both`; `micDeviceId`. - `sessionTemplateId`, `projectId`, `topicIds`, `memoryIds` (карточки знаний), `documentIds`. - `summariesEnabled`, `summaryLanguage` (`auto` или код языка итогов), `summaryLength` (`short`, `standard` или `detailed`), `summaryModel` (`{providerId, modelId}`). - `participants`: `[{name, contactId}]`; у каждого участника должно быть `name`. - `memoryMode`: `normal`, `session_only`, `manual_only` или `sensitive`. `speakerMode`: `solo`, `duo`, `small` или `large`. `privateSession`. - `origin`: `{name, url}`. - `actionItemIds`, `skippedActionItemIds`: только для чтения; встреча сохраняет свои списки (изменить их можно через `calendar.prep.edit`). Шаблоны, проекты, люди, карточки и документы должны быть в этом рабочем пространстве, а карточки — одобрены. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. Её статус — `planned`. - Создаёт напоминания так же, как приложение. Повторяющийся `occurrenceId` отклоняется с кодом `failed`. ```json {"tool": "calendar.schedule", "args": {"occurrenceId": "occ_weekly_sync_1107", "plannedStartAtMs": 1762531200000, "durationMinutes": 30, "timezone": "America/New_York", "title": "Weekly sync"}} ``` ## `calendar.prepare` Изменяет название, настройки запуска, напоминания или режим запуска встречи. Неуказанные поля сохраняют свои значения. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **title** (string | null) Новое название от 1 до 200 символов или `null`, чтобы очистить его. **reminderOffsetsMinutes** (integer[]) За сколько минут до начала напомнить. До 6 значений, каждое от 0 до 10 080. **startMode** (string) `prompt` или `automatic`. **autoStartCountdownSeconds** (integer) Длительность обратного отсчёта перед автоматическим началом, в секундах: от 5 до 300. **preparedSetup** (object) Настройки запуска, как в `calendar.schedule`. Если поле указано, оно целиком заменяет сохранённые настройки: прочитайте их через `calendar.get`, измените и отправьте обратно полностью. `null` очищает их. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. - Работает с запланированными, несостоявшимися и незапланированными встречами; для остальных запрос отклоняется с кодом `failed`. Подготовка несостоявшейся встречи снова делает её запланированной. - Встреча, время начала которой прошло, всегда получает режим `prompt`. ```json {"tool": "calendar.prepare", "args": {"occurrenceId": "occ_1", "title": "Northwind kickoff", "reminderOffsetsMinutes": [15, 5]}} ``` ## `calendar.prep.edit` Добавляет или убирает карточки знаний, документы и задачи с других встреч, с которыми начнётся встреча, или пропускает перенесённую задачу — так же, как страница подготовки в приложении. Применяются либо все изменения, либо ни одного. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **edits** (object[], required) Изменения, от 1 до 50. Каждое имеет вид `{kind, id, add}`: - `kind`: `memory` (карточка знаний), `document`, `actionItem` (задача, напоминание или вопрос с другой встречи) или `skippedActionItem` (перенесённая задача, которую не нужно брать на эту встречу). - `id`: идентификатор элемента. - `add`: `true` добавляет (или пропускает); `false` убирает (или возвращает пропущенный элемент). **Возвращает:** подготовку к встрече: `occurrenceId`, `prepared`, `preparable`, `sessionId`, `projectId`, `memoryIds`, `documentIds`, `maxMemoryCount`, `maxDocumentCount`, `sessionTemplateId`, `hasContent`, `draftCount` и `actionItemCount`. Полные списки показывает `calendar.prep`. - Неверный идентификатор или тип, пропуск элемента, который не был перенесён, или элемент, который одновременно добавлен и пропущен, отклоняются с кодом `invalid_arguments`, и ничего не меняется. - Для встречи, которая уже началась, была отменена или пропущена, запрос отклоняется с кодом `failed`. ```json {"tool": "calendar.prep.edit", "args": {"occurrenceId": "occ_1", "edits": [{"kind": "memory", "id": "mem_321", "add": true}, {"kind": "document", "id": "doc_8", "add": true}]}} ``` ## `calendar.move` Переносит одну встречу и обновляет её напоминания и автоматическое начало. Остальные встречи серии не меняются. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **plannedStartAtMs** (integer, required) Новое время начала, мс эпохи Unix. Должно быть в будущем. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. Её статус — `planned`. - Работает с запланированными, несостоявшимися и незапланированными встречами. ```json {"tool": "calendar.move", "args": {"occurrenceId": "occ_1", "plannedStartAtMs": 1762617600000}} ``` ## `calendar.snooze` Откладывает напоминание о запланированной встрече и отменяет обратный отсчёт автоматического начала, если он идёт. Встреча остаётся запланированной. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **snoozedUntilMs** (integer, required) Когда напомнить снова, мс эпохи Unix. Должно быть в будущем. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. - Отложить можно только запланированную встречу. - После откладывания режим запуска встречи становится `prompt`. ## `calendar.cancel` Отменяет одну запланированную встречу вместе с её напоминаниями и автоматическим началом. Серия в архив не перемещается. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. Её статус — `cancelled`. - Отменить можно только запланированную встречу; иначе ответ `failed` называет её текущий статус. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `calendar.skip` Пропускает одну запланированную встречу и отменяет её напоминания и обратный отсчёт. Серия и другие её встречи не меняются. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **Возвращает:** встречу: `occurrenceId`, `seriesId`, `scheduleId`, `plannedStartAtMs`, `originalStartAtMs`, `durationMinutes`, `timezone`, `status`, `sessionId`, `title`, `preparedSetupJson` (сохранённые настройки запуска в виде строки JSON), `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `moved`, `wasScheduled` (false для встречи, подготовленной без запланированного времени), `sessionTitle` (название связанной сессии, когда оно появится), `quiet` (в приложении выбрано «Не напоминать»: встреча видна в календаре, но не напоминает о себе и не начинается автоматически), `createdAt`, `updatedAt`. Её статус — `skipped`. - Пропустить можно только запланированную встречу; иначе ответ `failed` называет её текущий статус. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `calendar.start` Проверяет, можно ли начать встречу отсюда. MCP и CLI никогда не ведут запись, поэтому операция ничего не меняет и только объясняет, почему встречу начать нельзя. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **occurrenceId** (string, required) Запланированная встреча из `calendar.upcoming`. **Возвращает:** `{intent: null, unavailableReason}`. `unavailableReason` — `captureHostUnavailable` для запланированной встречи и `notPlanned` для остальных. - Операция не проверяет, может ли приложение начать встречу прямо сейчас. Начинайте запись в приложении. ## `calendar.tick` Выполняет один проход планировщика встреч: создаёт предстоящие встречи по расписаниям серий, готовит для них напоминания и отмечает как несостоявшиеся прошедшие встречи без записи. Уведомлений не отправляет и ничего не записывает. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `scheduling` **Аргументы** **horizonEndMs** (integer, required) Создавать встречи до этого момента, мс эпохи Unix. Не может быть раньше `nowMs`. **nowMs** (integer, required) Момент, для которого выполняется проход, мс эпохи Unix. **limit** (integer) Наибольшее число подошедших по времени элементов за один проход: от 1 до 100. По умолчанию `32`. **Возвращает:** массив обратных отсчётов автоматического начала, время которых подошло: `[{kind, intent, occurrence}]`. - Приложение выполняет эту операцию само; в разделе «Доступ по MCP» она по умолчанию выключена, и ассистенту она редко нужна. ## `series.list` Выводит серии сессий со счётчиками. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **includeArchived** (boolean) Показывать и серии из архива. **Возвращает:** массив серий (в том виде, в каком их возвращает `series.get`) с полями `sessionCount`, `lastSessionStartedAtMs`, `nextPlannedAtMs`, `projectName`, `customKind` и `schedule` (`{enabled, scheduleKind, rrule, localDate, localTime, timezone, durationMinutes}` или `null`). ```json {"tool": "series.list", "args": {}} ``` ## `series.get` Читает одну серию сессий. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **seriesId** (string, required) Серия из `series.list`. **Возвращает:** серию: `seriesId`, `workspaceId`, `name`, `kind`, `customKindId`, `description`, `projectId`, `anchorContactId`, `templateId`, `startTemplateJson`, `archivedAtMs`, `createdAt`, `updatedAt`. ## `series.kinds.list` Выводит встроенные типы серий с рекомендуемыми шаблонами, собственные типы серий рабочего пространства и значки, которые может использовать тип. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы:** только `workspaceId`. **Возвращает:** `{builtin: [{key, suggestedTemplateId}], custom: [{kindId, name, icon, createdAt, updatedAt}], icons}`. ## `series.schedule.get` Читает расписание серии, если оно есть. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **seriesId** (string, required) Серия из `series.list`. **Возвращает:** расписание или `null`: `scheduleId`, `seriesId`, `enabled`, `scheduleKind`, `timezone`, `localDate`, `localTime`, `durationMinutes`, `title`, `rrule`, `reminderOffsetsMinutes`, `startMode`, `autoStartCountdownSeconds`, `effectiveFromOriginalStartMs` (заполняется, если расписание действует начиная с определённой встречи), `createdAt`, `updatedAt`. ## `series.create` Создаёт серию сессий, которую можно связать с проектом, человеком и шаблоном. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **seriesId** (string, required) Идентификатор новой серии, который вы выбираете сами. Должен быть новым. **name** (string, required) Название серии, от 1 до 120 символов. **kind** (string, required) Тип серии: `oneOnOne`, `standup`, `teamMeeting`, `inPersonMeeting`, `clientMeeting`, `phoneCall`, `interview`, `hiringInterview`, `userResearch`, `salesCall`, `customerCheckIn`, `investorCall`, `legalConsultation`, `boardMeeting`, `leadershipSync`, `coaching`, `mentoring`, `workshop`, `training`, `brainstorm`, `retro`, `presentation`, `presentationPractice`, `productLaunch`, `lecture`, `class`, `course`, `educationalTalk`, `tutorial`, `webinar`, `panelDiscussion`, `podcast`, `videoWatching`, `voiceJournal`, `speakingPractice` или `custom`. **customKindId** (string) При `kind: "custom"` — один из собственных типов серий рабочего пространства (`series.kinds.list`). **description** (string) Описание. **projectId** (string) Проект, к которому относится серия. **anchorContactId** (string) Главный человек, с которым проходит серия. **templateId** (string) Шаблон, с которым начинаются её сессии. **Возвращает:** серию: `seriesId`, `workspaceId`, `name`, `kind`, `customKindId`, `description`, `projectId`, `anchorContactId`, `templateId`, `startTemplateJson`, `archivedAtMs`, `createdAt`, `updatedAt`. - Сессии остаются отдельными, пока вы не добавите их в серию через `series.sessions.assign`. Повторяющийся `seriesId` отклоняется с кодом `failed`. ```json {"tool": "series.create", "args": {"seriesId": "ser_dana_1on1", "name": "1:1 with Dana", "kind": "oneOnOne", "anchorContactId": "ct_77"}} ``` ## `series.update` Изменяет данные серии. Поля, допускающие `null`, очищаются значением `null`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **seriesId** (string, required) Серия из `series.list`. **name** (string) Новое название, от 1 до 120 символов. **kind** (string) Тип серии, как в `series.create`. **customKindId** (string | null) Один из собственных типов серий рабочего пространства, для `kind: "custom"`. `null` очищает его. **description** (string | null) Описание. `null` очищает его. **projectId** (string | null) Проект, к которому относится серия. `null` очищает его. **anchorContactId** (string | null) Главный человек, с которым проходит серия. `null` очищает его. **templateId** (string | null) Шаблон, с которым начинаются её сессии. `null` очищает его. **Возвращает:** серию: `seriesId`, `workspaceId`, `name`, `kind`, `customKindId`, `description`, `projectId`, `anchorContactId`, `templateId`, `startTemplateJson`, `archivedAtMs`, `createdAt`, `updatedAt`. - Укажите хотя бы одно поле. Сессии серии не меняются. ## `series.archive` Перемещает серию в архив или восстанавливает её. Её сессии и история сохраняются. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **seriesId** (string, required) Серия из `series.list`. **archived** (boolean, required) `true` перемещает в архив, `false` восстанавливает. **Возвращает:** серию: `seriesId`, `workspaceId`, `name`, `kind`, `customKindId`, `description`, `projectId`, `anchorContactId`, `templateId`, `startTemplateJson`, `archivedAtMs`, `createdAt`, `updatedAt`. - Архивация скрывает запланированные встречи серии (из календаря приложения, а также из `calendar.upcoming`, если не задан `includeArchived`) и останавливает их напоминания и автоматическое начало. Несостоявшимися они не отмечаются. - Восстановление возвращает будущие встречи, а те, время которых прошло, пока серия была в архиве, получают статус `skipped`. - Если серия уже в архиве, повторная архивация сохраняет дату первой. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `series.sessions.assign` Добавляет сессии в серию или убирает их из серии. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **sessionIds** (string[], required) Сессии, которые нужно переместить, хотя бы одна. Сессия, указанная дважды, учитывается один раз. **seriesId** (string | null, required) Серия или `null`, чтобы убрать сессии из их серии. Обязательное поле. **Возвращает:** `{changed}` — сколько сессий изменилось. - В серию из архива нельзя добавлять сессии (`failed`). Неизвестные сессии и сессии в корзине возвращают `not_found`, каждая названа отдельно. - Меняется только принадлежность к серии; содержимое сессий, проекты и файлы не затрагиваются. ```json {"tool": "series.sessions.assign", "args": {"sessionIds": ["ses_123", "ses_124"], "seriesId": "ser_dana_1on1"}} ``` ## `series.schedule.set` Создаёт или заменяет разовое или повторяющееся расписание серии и создаёт её предстоящие встречи. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduling` **Аргументы** **seriesId** (string, required) Серия из `series.list`. **scheduleKind** (string, required) `one_time` или `recurring`. **timezone** (string, required) Часовой пояс IANA, например `Europe/London`. **localDate** (string, required) Первая (или единственная) дата в формате `YYYY-MM-DD`. **localTime** (string, required) Время начала в формате `HH:MM`. **durationMinutes** (integer, required) Длительность в минутах, не меньше 1. **scheduleId** (string) У серии одно расписание. Не указывайте это поле (идентификатор создаётся при первом сохранении) или передайте идентификатор существующего расписания; другой идентификатор отклоняется. **title** (string) Название для встреч. Может быть пустым. **rrule** (string) Правило повторения: обязательно для `recurring` и недопустимо для `one_time`. Поддерживаются `FREQ` со значениями `DAILY`, `WEEKLY` или `MONTHLY`, а также `INTERVAL`, `BYDAY`, `BYMONTHDAY`, `COUNT` и `UNTIL`, например `FREQ=WEEKLY;BYDAY=TU`. **reminderOffsetsMinutes** (integer[]) За сколько минут до начала напомнить. До 6 значений, каждое от 0 до 10 080; повторы убираются. По умолчанию `[10]`. **startMode** (string) `prompt` (спросить перед началом) или `automatic` (начать после обратного отсчёта в приложении). По умолчанию `prompt`. **autoStartCountdownSeconds** (integer) Длительность обратного отсчёта перед автоматическим началом, в секундах: от 5 до 300. По умолчанию `60`. **effectiveFromOccurrenceId** (string) Изменить расписание начиная с этой встречи («Этой и следующим»); более ранние встречи сохраняют прежнее расписание. **horizonEndMs** (integer) Создавать встречи до этого момента, мс эпохи Unix. По умолчанию — 90 дней от текущего момента. **Возвращает:** расписание в том виде, в каком его возвращает `series.schedule.get`, включая его `scheduleId`. - Для серии в архиве запрос отклоняется с кодом `failed`. ```json {"tool": "series.schedule.set", "args": {"seriesId": "ser_dana_1on1", "scheduleKind": "recurring", "timezone": "America/New_York", "localDate": "2026-11-03", "localTime": "10:00", "durationMinutes": 30, "rrule": "FREQ=WEEKLY;BYDAY=TU"}} ``` ## См. также - [Справочник операций](/mcp/operations) - [Планировщик](/mcp/operations/scheduler) - [Планирование и подготовка в приложении](/sessions/scheduling-and-preparing) - [Серии в приложении](/sessions/series) --- # Чаты и документы Операции MCP и CLI для чатов «Спросить TalkBar» и документов: список, чтение текста, переименование, закрепление, проекты, корзина и восстановление. Canonical URL: https://docs.talkbar.ru/mcp/operations/chats-and-documents Операции с чатами читают и упорядочивают ваши чаты «Спросить TalkBar»; отправить сообщение в чат ассистент не может. Операции с документами выводят документы, читают извлечённый из них текст, переименовывают, закрепляют и привязывают документы к проектам. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`chats.list`](#chatslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`chats.get`](#chatsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`chats.trash.list`](#chatstrashlist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`chats.update`](#chatsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`chats.trash`](#chatstrash) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`chats.restore`](#chatsrestore) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`documents.list`](#documentslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`documents.get`](#documentsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`documents.read`](#documentsread) | Чтение | `talkbar_read` | Вкл. | `content` | | [`documents.update`](#documentsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | ## `chats.list` Постранично выводит чаты с ИИ («Спросить TalkBar») рабочего пространства: сначала закреплённые, затем по времени последней активности. Сообщения не возвращаются. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string) Только чаты, привязанные к этому проекту. **search** (string) Слова для поиска в названии чата или его сообщениях. Должно встретиться каждое слово; регистр и диакритические знаки не учитываются. **view** (string) `active` (по умолчанию), `pinned` или `trash`. **limit** (integer) Сколько вернуть: от 1 до 100. По умолчанию `40`. **cursor** (string) Значение `nextCursor` из предыдущей страницы. Не может быть пустым. **Возвращает:** `{items, nextCursor, totalCount}`. У каждого элемента есть `chatId`, `title`, `snippet`, `groundingMode`, `projectId`, `pinned`, `createdAt`, `updatedAt`, `lastMessageAtMs`, `trashedAtMs` и `currentTurnStatus`. ```json {"tool": "chats.list", "args": {"search": "pricing"}} ``` ## `chats.get` Читает один чат и его последние сообщения: ваши вопросы и ответы на них, с источниками и названиями навыков. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **chatId** (string, required) Чат из `chats.list`. **limit** (integer) Сколько последних сообщений вернуть: от 1 до 200. По умолчанию `20`. **beforeSequence** (integer) `nextBeforeSequence` из предыдущего вызова — чтобы получить более старые сообщения. **Возвращает:** чат (как в `chats.list`, а также `workspaceId` и `replyLanguage`), `messages`, `hasMoreMessages` и `nextBeforeSequence`. У каждого сообщения есть `messageId`, `role`, `content`, `createdAt`, `sources` (`[{n, label, sourceType, sourceId, sessionId, documentId, atMs, locator, snippet, href}]`) и `skill`. - Чат в корзине тоже можно прочитать; у него заполнено поле `trashedAtMs`. ```json {"tool": "chats.get", "args": {"chatId": "chat_12", "limit": 50}} ``` ## `chats.trash.list` Выводит чаты в корзине. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **limit** (integer) Сколько вернуть: от 1 до 200. По умолчанию `50`. **Возвращает:** `{chats: [{chatId, title, trashedAt}]}`. ## `chats.update` Переименовывает чат, закрепляет его или привязывает к проекту. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **chatId** (string, required) Чат из `chats.list`. **title** (string) Новое название. Может быть пустым, как в приложении. **pinned** (boolean) `true` закрепляет, `false` открепляет. **projectId** (string | null) Проект или `null`, чтобы убрать чат из проекта. **Возвращает:** `{chatId, title, pinned, projectId}`. - Укажите хотя бы одно поле. Чат в корзине изменить нельзя: сначала восстановите его. ## `chats.trash` Перемещает чат в корзину. Его можно восстановить. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **chatId** (string, required) Чат из `chats.list`. **Возвращает:** `{chatId, trashed: true}`. Перемещение в корзину чата, который уже там, тоже завершается успешно. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `chats.restore` Восстанавливает чат из корзины. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **chatId** (string, required) Чат из `chats.list`. **Возвращает:** `{chatId, title, pinned, projectId}`. Восстановление чата, которого нет в корзине, возвращает тот же ответ. ## `documents.list` Выводит документы рабочего пространства. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string) Только документы, привязанные к этому проекту. **query** (string) Поиск по названию документа без учёта регистра. **sessionId** (string) Только документы, добавленные в эту сессию (их выводит `sessions.documents`). **limit** (integer) Сколько вернуть: от 1 до 200. По умолчанию `50`. **Возвращает:** `{documents: [{documentId, title, fileType, status, pinned, projectId, updatedAt}]}`. ```json {"tool": "documents.list", "args": {"projectId": "proj_456"}} ``` ## `documents.get` Читает данные одного документа и короткий фрагмент для предпросмотра. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **documentId** (string, required) Документ из `documents.list` или `sessions.documents`. **Возвращает:** строку из списка, а также `sizeBytes`, `sourceKind`, `indexProgress`, `preview` и `createdAt`. ## `documents.read` Читает извлечённый из документа текст по страницам. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **documentId** (string, required) Документ из `documents.list` или `sessions.documents`. **offset** (integer) `nextOffset` из предыдущей страницы, в символах. Смещение за концом текста отклоняется. **maxChars** (integer) Размер страницы в символах: от 1 000 до 200 000. По умолчанию `20000`. **Возвращает:** `{documentId, title, status, totalChars, offset, nextOffset, truncated, text}`. - Если текст из документа ещё не извлечён или документ больше недоступен, операция завершается ошибкой с понятным сообщением. ```json {"tool": "documents.read", "args": {"documentId": "doc_8", "maxChars": 40000}} ``` ## `documents.update` Переименовывает документ, закрепляет его или привязывает к проекту. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **documentId** (string, required) Документ из `documents.list` или `sessions.documents`. **title** (string) Новое название. Не может быть пустым. **pinned** (boolean) `true` закрепляет, `false` открепляет. **projectId** (string | null) Проект или `null`, чтобы убрать документ из проекта. Проект не должен быть в корзине. **Возвращает:** строку документа из списка. - Укажите хотя бы одно поле. Добавление, удаление и повторная индексация документов доступны только в приложении. ## См. также - [Справочник операций](/mcp/operations) - [Спросить TalkBar](/chats-and-notes/ask-talkbar) - [Документы в приложении](/knowledge/documents) --- # Экспорт Операции MCP и CLI для экспорта: места и правила автоэкспорта, предпросмотр, очередь, запуск, отмена и повтор, разрешение конфликтов. Canonical URL: https://docs.talkbar.ru/mcp/operations/exports Операции экспорта отправляют содержимое сессий (итоги, транскрипт, заметки, задачи, закладки и аудио) в файлы, хранилище Obsidian или Notion. Все они по умолчанию включены в разделе «Доступ по MCP». Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`exports.config`](#exportsconfig) | Чтение | `talkbar_read` | Вкл. | `exports` | | [`exports.sessions`](#exportssessions) | Чтение | `talkbar_read` | Вкл. | `exports` | | [`exports.preview`](#exportspreview) | Чтение | `talkbar_read` | Вкл. | `content` | | [`exports.enqueue`](#exportsenqueue) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.run`](#exportsrun) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.status`](#exportsstatus) | Чтение | `talkbar_read` | Вкл. | `exports` | | [`exports.runs`](#exportsruns) | Чтение | `talkbar_read` | Вкл. | `exports` | | [`exports.history`](#exportshistory) | Чтение | `talkbar_read` | Вкл. | `exports` | | [`exports.cancel`](#exportscancel) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.retry`](#exportsretry) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.resolve`](#exportsresolve) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.destination.save`](#exportsdestinationsave) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.destination.delete`](#exportsdestinationdelete) | Изменение | `talkbar_delete` | Вкл. | `exports` | | [`exports.rule.save`](#exportsrulesave) | Изменение | `talkbar_change` | Вкл. | `exports` | | [`exports.rule.delete`](#exportsruledelete) | Изменение | `talkbar_delete` | Вкл. | `exports` | ## Как выполняется экспорт 1. Настройте место экспорта через `exports.destination.save` (или в приложении). 2. Проверьте, что будет записано, через `exports.preview`. 3. Поставьте пакет в очередь через `exports.enqueue`, затем вызывайте `exports.run`, пока не останется отправок со статусом `scheduled`. Ход выполнения можно проверить через `exports.status`. 4. Если отправка требует внимания, потому что место экспорта было изменено вне TalkBar, разрешите конфликт через `exports.resolve` или попробуйте ещё раз через `exports.retry`. Отправка может иметь статус `scheduled`, `waitingForSummary`, `waitingForAudio`, `exporting`, `exported`, `partiallyExported`, `needsAttention` или `cancelled`; статус пакета определяется статусами его отправок. ## `exports.config` Читает места экспорта и правила автоэкспорта рабочего пространства. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы:** только `workspaceId`. **Возвращает:** `{destinations, rules}`. У мест экспорта есть `destinationId`, `name`, `format`, `location`, `enabled`, `layout` и `credentialRef`; у правил — те же поля, что принимает `exports.rule.save`. ```json {"tool": "exports.config", "args": {}} ``` ## `exports.sessions` Постранично выводит идентификаторы сессий, которые можно экспортировать (завершённых и не находящихся в корзине), при необходимости — в пределах проекта или серии. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **projectId** (string) Только сессии этого проекта. **seriesId** (string) Только сессии этой серии. **after** (string) Последний идентификатор сессии из предыдущей страницы. **limit** (integer) Сколько вернуть: от 1 до 100. По умолчанию `100`. **Возвращает:** массив идентификаторов сессий, упорядоченный по идентификатору. Чтобы получить следующую страницу, передайте последний из них в `after`; пустой массив означает конец списка. ## `exports.preview` Показывает, что войдёт в экспорт и готова ли каждая сессия, ничего не экспортируя. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionIds** (string[], required) Сессии для экспорта, от 1 до 100. **destinationIds** (string[], required) Места экспорта для предпросмотра, от 1 до 10. Каждое должно существовать и быть включено. **selection** (object) Что взять из каждой сессии. Неизвестные ключи отклоняются. - `summary` (по умолчанию `true`), `transcript` (по умолчанию `true`), `metadata` (по умолчанию `true`), `notes`, `outcomes` (задачи), `markers` (у каждого по умолчанию `false`). - `audio`: `none` (по умолчанию), `original`, `mp4`, `mp3` или `wav`. - `summarySectionKeys`: только эти разделы итогов. Пустое значение означает итоги целиком. - `turnIds`: только эти реплики транскрипта (до 10 000). - `ranges`: только реплики транскрипта внутри этих интервалов времени, `[{startMs, endMs}]` в мс от начала сессии (до 100). **Возвращает:** `{sessions, destinations, outputs}`. Для каждой сессии показаны выбранное содержимое, `ready` и, если сессия не готова, `waitReason` (`sessionNotFinished`, `summaryMissing`, `summaryStale` или `audioPending`). Для каждого результата указаны `location`, `files` и `archiveEntries`, которые будут записаны. - Возвращает текст выбранных итогов и транскрипта, поэтому относится к группе политики `content`. ```json {"tool": "exports.preview", "args": {"sessionIds": ["ses_123"], "destinationIds": ["dest_vault"], "selection": {"summary": true, "transcript": false, "outcomes": true}}} ``` ## `exports.enqueue` Ставит сессии в очередь на экспорт в одно или несколько мест одним пакетом. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **sessionIds** (string[], required) Сессии для экспорта, от 1 до 100. **destinationIds** (string[], required) Места экспорта, от 1 до 10. Каждое должно существовать и быть включено. **selection** (object) Что взять из сессий, как в `exports.preview`. **Возвращает:** пакет: `{batchId, workspaceId, status, automatic, createdAtMs, deliveries}`. У каждой отправки есть `deliveryId`, `sessionId`, `sessionTitle`, `destinationId`, `status`, `location`, `error`, `conflict` и `updatedAtMs`. - Сессия, запись которой ещё идёт, отклоняется с кодом `session_recording`: поставьте её в очередь после остановки записи. - Постановка в очередь сама по себе ничего не отправляет. Запустите пакет через `exports.run` или отмените через `exports.cancel`. ```json {"tool": "exports.enqueue", "args": {"sessionIds": ["ses_123", "ses_124"], "destinationIds": ["dest_vault"]}} ``` ## `exports.run` Сразу выполняет небольшую часть одного пакета: каждый вызов отправляет не больше одной сессии в одно место экспорта. Фоновый обработчик операция никогда не запускает. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **batchId** (string, required) Пакет экспорта из `exports.enqueue` или `exports.history`. **Возвращает:** пакет после запуска (`{batchId, workspaceId, status, automatic, createdAtMs, deliveries}`. У каждой отправки есть `deliveryId`, `sessionId`, `sessionTitle`, `destinationId`, `status`, `location`, `error`, `conflict` и `updatedAtMs`). - Вызывайте операцию снова, пока в пакете есть отправки в статусе `scheduled`. - Одновременно выполняется только один экспорт: на второй вызов во время выполнения приходит ответ `busy` с `retryAfterMs: 5000`. - Записывает файлы или страницы Notion в место экспорта. ```json {"tool": "exports.run", "args": {"batchId": "batch_5"}} ``` ## `exports.status` Читает статус отправок одного пакета экспорта. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **batchId** (string, required) Пакет экспорта из `exports.enqueue` или `exports.history`. **Возвращает:** пакет: `{batchId, workspaceId, status, automatic, createdAtMs, deliveries}`. У каждой отправки есть `deliveryId`, `sessionId`, `sessionTitle`, `destinationId`, `status`, `location`, `error`, `conflict` и `updatedAtMs`. ## `exports.runs` Выводит попытки отправки одного пакета экспорта. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **batchId** (string, required) Пакет экспорта из `exports.enqueue` или `exports.history`. **Возвращает:** массив попыток: `[{runId, deliveryId, status, startedAtMs, finishedAtMs, error}]`. ## `exports.history` Выводит недавние пакеты экспорта, начиная с новых. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **limit** (integer) Сколько вернуть: от 1 до 100. По умолчанию `30`. **Возвращает:** массив пакетов в том виде, в каком их возвращает `exports.status`. ## `exports.cancel` Отменяет пакет экспорта. Завершённые отправки остаются экспортированными. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **batchId** (string, required) Пакет экспорта из `exports.enqueue` или `exports.history`. **Возвращает:** пакет в его текущем состоянии. - Все отправки, кроме тех, что в статусе `exported`, получают статус `cancelled` — в том числе частично экспортированные и требующие внимания. ## `exports.retry` Повторяет пакет экспорта: частично экспортированные отправки и отправки, требующие внимания (кроме конфликтов), снова ставятся в очередь. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **batchId** (string, required) Пакет экспорта из `exports.enqueue` или `exports.history`. **Возвращает:** пакет в его текущем состоянии. - Конфликты вместо этого разрешаются через `exports.resolve`. Завершённый пакет не меняется. ## `exports.resolve` Разрешает конфликт экспорта, когда файл или страница в месте экспорта были изменены вне TalkBar. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **deliveryId** (string, required) Отправка, требующая внимания, из пакета. **action** (string, required) `keepExternal` оставляет внешнюю версию, `saveCopy` записывает версию TalkBar как новую копию, `replace` перезаписывает внешнюю версию. **Возвращает:** пакет в его текущем состоянии. - Разрешить можно только отправку, требующую внимания. ```json {"tool": "exports.resolve", "args": {"deliveryId": "dlv_9", "action": "saveCopy"}} ``` ## `exports.destination.save` Создаёт или изменяет место экспорта: папку с файлами, хранилище Obsidian, папку для импорта в Notion или подключённую страницу Notion. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **destinationId** (string, required) Идентификатор, который вы выбираете сами. Сохранение с существующим идентификатором изменяет это место экспорта. **name** (string, required) Название места экспорта. Не может быть пустым. **format** (string, required) Что записывать: - `txt`, `markdown`, `html`, `json`, `srt`, `vtt`, `zip`: файлы в папке. - `obsidian`: Markdown со свойствами для хранилища Obsidian. - `notionMarkdown`: файлы Markdown для импорта в Notion. - `notion`: страницы, создаваемые в подключённом рабочем пространстве Notion. **location** (string, required) Для `notion` — родительская страница (идентификатор или URL страницы). Для остальных форматов — абсолютный путь к папке. **enabled** (boolean, required) Можно ли использовать это место экспорта. **layout** (string) Как файлы раскладываются по папке: `flat` (по умолчанию), `project`, `series` или `projectSeries`. **credentialRef** (string | null) Для подключённого места экспорта Notion — сохранённое подключение: ровно `export::` или `null`. Notion подключается в приложении; ассистент не может сохранить токен. **Возвращает:** место экспорта в сохранённом виде. - Сохранение заменяет место экспорта целиком: если не указать `credentialRef` для подключённого места Notion, оно будет отключено. - Правила администратора могут ограничивать, какие папки и места экспорта можно использовать. ```json {"tool": "exports.destination.save", "args": {"destinationId": "dest_vault", "name": "Obsidian vault", "format": "obsidian", "location": "PATH_TO_VAULT/Meetings", "enabled": true, "layout": "project"}} ``` ## `exports.destination.delete` Удаляет место экспорта, у которого нет активных отправок. Уже экспортированные файлы и страницы сохраняются. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **destinationId** (string, required) Место экспорта из `exports.config`. **Возвращает:** `{deleted: true, switchedOffRules}`. Собственное правило (`override`), у которого не осталось мест экспорта, переводится в `disabled` и попадает в `switchedOffRules`. - Пока отправка в это место запланирована, ожидает или выполняется, запрос отклоняется с кодом `failed`. - Также удаляет сохранённое подключение к Notion для этого места экспорта. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `exports.rule.save` Настраивает автоэкспорт для рабочего пространства, проекта или серии. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **ruleId** (string, required) Идентификатор, который вы выбираете сами. Повторное сохранение с тем же идентификатором изменяет правило. **scopeKind** (string, required) `workspace`, `project` или `series`. **scopeId** (string, required) Идентификатор рабочего пространства, проекта или серии. Для `workspace` — идентификатор самого рабочего пространства. **mode** (string, required) `inherit` (использовать правило уровнем выше; недопустимо для рабочего пространства), `override` (использовать это правило) или `disabled` (без автоэкспорта здесь). **destinationIds** (string[], required) Места, в которые нужно экспортировать. **selection** (object, required) Что взять из сессий, как в `exports.preview`. **timing** (object, required) Когда экспортировать. Один из вариантов: - `{"kind": "ready"}`: как только сессия готова. - `{"kind": "delay", "delayMs": …}`: с задержкой после готовности, не больше 31 дня (2 678 400 000 мс). - `{"kind": "daily", "hour": …, "minute": …, "timezone": "…"}`: раз в день в это время, в часовом поясе IANA. **reexportSummary** (boolean, required) Экспортировать снова при изменении итогов. **reexportTranscript** (boolean, required) Экспортировать снова при изменении транскрипта. **enabledAtMs** (integer, required) Обязательное поле, но время TalkBar устанавливает сам: текущее или более раннее, если правило `override` остаётся `override`. **Возвращает:** правило в сохранённом виде. - Одно правило на область: другой `ruleId` для области, у которой уже есть правило, отклоняется с кодом `failed` с указанием существующего правила. ```json {"tool": "exports.rule.save", "args": {"ruleId": "rule_proj456", "scopeKind": "project", "scopeId": "proj_456", "mode": "override", "destinationIds": ["dest_vault"], "selection": {"summary": true, "transcript": true}, "timing": {"kind": "ready"}, "reexportSummary": true, "reexportTranscript": false, "enabledAtMs": 0}} ``` ## `exports.rule.delete` Удаляет правило автоэкспорта. Экспорты в очереди и уже доставленные сохраняются. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Вкл.** · группа политики `exports` **Аргументы** **ruleId** (string, required) Правило автоэкспорта из `exports.config`. **Возвращает:** `{deleted: true}`. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## См. также - [Справочник операций](/mcp/operations) - [Экспорт в приложении](/sharing/exports) - [Настройки экспорта и отправки](/settings/export-and-share) - [Планировщик](/mcp/operations/scheduler) --- # База знаний Операции MCP и CLI для карточек знаний и предложений: список, чтение, создание, изменение, закрепление, проекты, архив и проверка. Canonical URL: https://docs.talkbar.ru/mcp/operations/knowledge Операции базы знаний работают с карточками знаний (в аргументах они обозначаются как `memoryId`) и с предложениями, которые находит извлечение знаний. Чтобы управлять карточками одной сессии, используйте операции `sessions.cards.*` на странице [Сессии](/mcp/operations/sessions). Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`knowledge.list`](#knowledgelist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`knowledge.get`](#knowledgeget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`knowledge.create`](#knowledgecreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.update`](#knowledgeupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.pin`](#knowledgepin) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.assign`](#knowledgeassign) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.approve`](#knowledgeapprove) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.confirm`](#knowledgeconfirm) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.mark_outdated`](#knowledgemark_outdated) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.archive`](#knowledgearchive) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`knowledge.restore`](#knowledgerestore) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.suggestions.list`](#knowledgesuggestionslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`knowledge.suggestions.approve`](#knowledgesuggestionsapprove) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.suggestions.dismiss`](#knowledgesuggestionsdismiss) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.suggestions.snooze`](#knowledgesuggestionssnooze) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`knowledge.suggestions.reopen`](#knowledgesuggestionsreopen) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | ## Статусы карточек Карточка может быть в статусе `approved` (одобрена), `outdated` (устарела) или `archived` (в архиве). Когда TalkBar опирается на вашу базу знаний, используются только одобренные карточки, и закреплёнными остаются тоже только одобренные. | Из статуса | Операция | В статус | | --- | --- | --- | | одобрена | `knowledge.mark_outdated` | устарела | | одобрена или устарела | `knowledge.archive` | в архиве | | устарела или в архиве | `knowledge.approve` или `knowledge.restore` | одобрена | Любой другой переход отклоняется с `failed`. Запрос статуса, который у карточки уже есть, ничего не меняет. ## `knowledge.list` Показывает карточки знаний. Можно фильтровать по статусу, типу, проекту, разделу «Общее», закреплению, сессии или тексту. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **statuses** (string[]) Только карточки с этими статусами: `approved`, `outdated`, `archived`. По умолчанию — только одобренные карточки. **types** (string[]) Только карточки этих типов: `fact`, `preference`, `decision`, `commitment`, `risk`, `open_question`, `relationship_context`, `instruction`, `key_moment`, `contract_term`, `pricing_detail`, `technical_detail`. **projectId** (string) Только карточки, относящиеся к этому проекту. **generalOnly** (boolean) Только карточки, не относящиеся ни к одному проекту. **pinnedOnly** (boolean) Только закреплённые карточки. **query** (string) Текст для поиска в карточках. **sessionId** (string) Только карточки, взятые в эту сессию, в порядке сессии (так, как их показывает `sessions.live_cards`). **offset** (integer) `nextOffset` из предыдущей страницы. Не меньше 0. **limit** (integer) Сколько вернуть. От 1 до 200. По умолчанию `50`. **Возвращает:** `{cards: [{memoryId, title, type, status, pinned, projectId, sessionOnly, updatedAt}], total, nextOffset}`. `sessionOnly: true` означает, что карточка остаётся только в своей сессии. ```json {"tool": "knowledge.list", "args": {"projectId": "proj_456", "types": ["decision", "commitment"]}} ``` ## `knowledge.get` Читает одну карточку знаний с текстом, данными и источниками, включая цитаты. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`, а также `sources: [{sourceType, sourceId, atMs, quote, locator, status}]`. ```json {"tool": "knowledge.get", "args": {"memoryId": "mem_321"}} ``` ## `knowledge.create` Добавляет карточку знаний. Добавленные вами карточки сразу становятся одобренными. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **title** (string, required) Заголовок карточки. Не может быть пустым. **body** (string) Текст карточки. **type** (string) Одно из значений: `fact`, `preference`, `decision`, `commitment`, `risk`, `open_question`, `relationship_context`, `instruction`, `key_moment`, `contract_term`, `pricing_detail`, `technical_detail`. По умолчанию `fact`. **projectId** (string) Отнести карточку к этому проекту. Без него карточка попадает в раздел «Общее». **pinned** (boolean) Закрепить карточку. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. ```json {"tool": "knowledge.create", "args": {"title": "Prefers email over calls", "type": "preference", "projectId": "proj_456"}} ``` ## `knowledge.update` Меняет заголовок, текст или тип карточки знаний. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **title** (string) Новый заголовок. Не может быть пустым. **body** (string) Новый текст. **type** (string) Одно из значений: `fact`, `preference`, `decision`, `commitment`, `risk`, `open_question`, `relationship_context`, `instruction`, `key_moment`, `contract_term`, `pricing_detail`, `technical_detail`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. - Укажите хотя бы одно поле. ## `knowledge.pin` Закрепляет или открепляет карточку знаний. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **pinned** (boolean, required) `true` закрепляет, `false` открепляет. Закрепление относится к самой карточке: она показывается закреплённой во всех сессиях и списках, где она есть. **Возвращает:** `{memoryId, pinned}`. - Карточка, которая перестаёт быть одобренной (устаревает или попадает в архив), открепляется, и последующее одобрение или восстановление не закрепляет её снова. ## `knowledge.assign` Относит карточки знаний к проекту или убирает их из проекта. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryIds** (string[], required) Карточки, которые нужно отнести к проекту. Не может быть пустым. **projectId** (string | null, required) Проект или `null`, чтобы убрать карточки из проекта. Обязательный аргумент. **Возвращает:** `{memoryIds, projectId, changed}`. ```json {"tool": "knowledge.assign", "args": {"memoryIds": ["mem_321", "mem_322"], "projectId": "proj_456"}} ``` ## `knowledge.approve` Возвращает карточку знаний в статус одобренной. Одобрение уже одобренной карточки ничего не меняет. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. - У карточек нет статуса «ожидает проверки»: то, что находит извлечение знаний, — это предложения. Их одобряют через `knowledge.suggestions.approve`. ## `knowledge.confirm` Подтверждает, что карточка знаний всё ещё актуальна. Записывает время в `lastConfirmedAtMs` и не меняет статус. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. ## `knowledge.mark_outdated` Отмечает карточку знаний как устаревшую. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. - Устаревшая карточка открепляется. Чтобы вернуть её, одобрите или восстановите её. ## `knowledge.archive` Отправляет карточку знаний в архив. Её можно восстановить. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. - При архивации карточка открепляется. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `knowledge.restore` Возвращает карточку знаний из архива (или устаревшую карточку) в статус одобренной. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **memoryId** (string, required) Карточка знаний из `knowledge.list`. **Возвращает:** карточку: `{memoryId, title, body, type, status, pinned, priority, confidence, projectId, contactId, organizationId, sessionId, sessionOnly, createdBy, lastConfirmedAtMs, createdAt, updatedAt}`. ## `knowledge.suggestions.list` Показывает карточки, людей и компании, которые предлагает извлечение знаний, вместе с цитатами, из которых они взяты. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **status** (string) Одно из значений: `pending`, `approving`, `approved`, `dismissed`. По умолчанию `pending`. **kind** (string) Только предложения для `memory` (карточки знаний), `contact` (человека) или `organization` (компании). **projectId** (string) Только предложения для этого проекта. **query** (string) Текст для поиска в предложениях. **limit** (integer) Сколько вернуть. От 1 до 100. По умолчанию `50`. **cursor** (string) `nextCursor` из предыдущей страницы. **Возвращает:** `{suggestions, hasMore, nextCursor}`. У каждого предложения есть `suggestionId`, `kind`, `action`, `status`, `proposal`, `evidence`, `targetId`, `confidence`, `projectId`, `sessionId`, `documentId`, `snoozedUntilMs`, `appliedCardId` и `createdAt`. ```json {"tool": "knowledge.suggestions.list", "args": {"kind": "memory", "limit": 20}} ``` ## `knowledge.suggestions.approve` Принимает предложение. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **suggestionId** (string, required) Предложение из `knowledge.suggestions.list`. **approveWithoutSource** (boolean) Если сессия или документ, из которых взято предложение, больше недоступны, всё равно одобрить его, уже без связи с источником. Без этого аргумента такое предложение отклоняется. **Возвращает:** предложение в его текущем состоянии. ```json {"tool": "knowledge.suggestions.approve", "args": {"suggestionId": "sug_55"}} ``` ## `knowledge.suggestions.dismiss` Отклоняет предложение. Отменить можно через `knowledge.suggestions.reopen`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **suggestionId** (string, required) Предложение из `knowledge.suggestions.list`. **Возвращает:** предложение в его текущем состоянии. ## `knowledge.suggestions.snooze` Скрывает предложение до указанного времени. Отменить можно через `knowledge.suggestions.reopen`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **suggestionId** (string, required) Предложение из `knowledge.suggestions.list`. **untilMs** (integer, required) Когда показать его снова, как время Unix в мс. Должно быть в будущем. **Возвращает:** предложение в его текущем состоянии. ## `knowledge.suggestions.reopen` Возвращает отклонённое или отложенное предложение на проверку. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **suggestionId** (string, required) Предложение из `knowledge.suggestions.list`. **Возвращает:** предложение в его текущем состоянии. ## См. также - [Справочник операций](/mcp/operations) - [Сессии](/mcp/operations/sessions) (карточки сессии) - [Карточки знаний в приложении](/knowledge/knowledge-cards) - [Проверка и извлечение](/knowledge/review-and-scans) --- # Люди и компании Операции MCP и CLI для просмотра, чтения, создания, изменения и архивации людей и компаний, а также для поиска сессий, в которых говорил человек. Canonical URL: https://docs.talkbar.ru/mcp/operations/people-and-companies Операции с людьми (`contacts.*`) и компаниями (`organizations.*`) работают с людьми и компаниями, которые известны TalkBar. В `talkbar_find` это типы `person` и `company`. Чтобы назвать участника сессии или связать его с человеком, используйте операции `sessions.speakers.*` на странице [Сессии](/mcp/operations/sessions). Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`contacts.list`](#contactslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`contacts.get`](#contactsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`contacts.sessions`](#contactssessions) | Чтение | `talkbar_read` | Вкл. | `content` | | [`contacts.create`](#contactscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`contacts.update`](#contactsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`contacts.archive`](#contactsarchive) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`contacts.unarchive`](#contactsunarchive) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`organizations.list`](#organizationslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`organizations.get`](#organizationsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`organizations.create`](#organizationscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`organizations.update`](#organizationsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`organizations.archive`](#organizationsarchive) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`organizations.unarchive`](#organizationsunarchive) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | ## `contacts.list` Выводит людей рабочего пространства: в скольких сессиях говорил каждый и когда началась последняя из них. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string) Только люди этого проекта. **query** (string) Текст для поиска в именах и email. **includeArchived** (boolean) Показывать и людей из архива. По умолчанию `false`. **limit** (integer) Сколько вернуть: от 1 до 500. По умолчанию `100`. **Возвращает:** `{contacts: [{contactId, name, email, role, organizationId, archived, sessionCount, lastMetAtMs}]}`. - `sessionCount` и `lastMetAtMs` считаются по тем же сессиям, что выводит `contacts.sessions` (человек говорил в них; сессии в корзине не учитываются). У человека, которого ни разу не было слышно, это `0` и `null`. ```json {"tool": "contacts.list", "args": {"query": "dana"}} ``` ## `contacts.get` Читает данные одного человека. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **contactId** (string, required) Человек из `contacts.list`. **Возвращает:** `{contactId, name, email, phone, role, organizationId, relationshipTag, sentiment, notes, confirmed, lastContactAtMs, archived, createdAt, updatedAt}`. ## `contacts.sessions` Выводит сессии, в которых говорил человек, начиная с новых: с именем, под которым он был в каждой из них, его временем разговора и долей в общем времени разговора. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **contactId** (string, required) Человек из `contacts.list`. **limit** (integer) Сколько вернуть: от 1 до 200. По умолчанию `100`. **offset** (integer) `nextOffset` из предыдущей страницы. **Возвращает:** `{contactId, sessions: [{sessionId, title, startedAtMs, endedAtMs, speaker, talkTimeMs, share, excludedFromAi, private}], hasMore, nextOffset}`. `share` — доля от общего времени разговора всех участников, от 0 до 1. - Чтобы прочитать, что сказал человек, передайте `speaker` в фильтр `speaker` операции `sessions.transcript`. ```json {"tool": "contacts.sessions", "args": {"contactId": "ct_77", "limit": 10}} ``` ## `contacts.create` Добавляет человека. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string, required) Имя человека. Не может быть пустым. **email** (string) Email. В нём должен быть ровно один символ `@` с текстом до и после него и не должно быть пробелов; домен не проверяется. **phone** (string) Номер телефона. **role** (string) Роль или должность. **relationshipTag** (string) Короткая метка о том, откуда вы знакомы. **notes** (string) Заметки обычным текстом. **Возвращает:** человека в том виде, в каком его возвращает `contacts.get`. ```json {"tool": "contacts.create", "args": {"name": "Dana Lee", "email": "dana@example.com", "role": "CFO"}} ``` ## `contacts.update` Изменяет имя, email, телефон, роль, метку отношений или заметки человека. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **contactId** (string, required) Человек из `contacts.list`. **name** (string) Новое имя. Не может быть пустым. **email** (string | null) Email, с той же проверкой, что и в `contacts.create`. `null` или пустая строка очищают его. **phone** (string | null) Номер телефона. `null` очищает его. **role** (string | null) Роль или должность. `null` очищает её. **relationshipTag** (string | null) Короткая метка о том, откуда вы знакомы. `null` очищает её. **notes** (string | null) Заметки обычным текстом; они заменяют заметки с форматированием. `null` очищает их. **Возвращает:** человека в том виде, в каком его возвращает `contacts.get`. - Укажите хотя бы одно поле. ## `contacts.archive` Перемещает человека в архив. Его история сохраняется, и его по-прежнему можно изменять. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **contactId** (string, required) Человек из `contacts.list`. **Возвращает:** строку человека из списка (`contactId`, `name`, `email`, `role`, `organizationId`, `archived`). - Отменяется операцией `contacts.unarchive`. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `contacts.unarchive` Возвращает человека из архива. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **contactId** (string, required) Человек из `contacts.list`. **Возвращает:** строку человека из списка, как `contacts.archive`. ## `organizations.list` Выводит компании рабочего пространства. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string) Только компании этого проекта. **query** (string) Текст для поиска в названиях и адресах сайтов. **includeArchived** (boolean) Показывать и компании из архива. По умолчанию `false`. **limit** (integer) Сколько вернуть: от 1 до 500. По умолчанию `100`. **Возвращает:** `{organizations: [{organizationId, name, relationship, website, pinned, archived}]}`. ## `organizations.get` Читает данные одной компании, в том числе из архива. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **organizationId** (string, required) Компания из `organizations.list`. **Возвращает:** строку из списка, а также `notes`, `createdAt` и `updatedAt`. ## `organizations.create` Добавляет компанию. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string, required) Название компании. Не может быть пустым. **relationship** (string) Одно из значений: `client`, `vendor`, `partner`, `prospect`, `internal`, `investor`, `advisor`, `candidate_company`, `other`. По умолчанию `other`. **website** (string) Произвольный текст, как в приложении (`northwind.example` подойдёт). Пустое значение означает, что сайта нет. Ссылки `javascript:`, `vbscript:` и `data:` отклоняются. **notes** (string) Заметки обычным текстом. **Возвращает:** компанию в том виде, в каком её возвращает `organizations.get`. ```json {"tool": "organizations.create", "args": {"name": "Northwind", "relationship": "client", "website": "northwind.example"}} ``` ## `organizations.update` Изменяет название, отношения, сайт или заметки компании. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **organizationId** (string, required) Компания из `organizations.list`. **name** (string) Новое название. Не может быть пустым. **relationship** (string) Одно из значений: `client`, `vendor`, `partner`, `prospect`, `internal`, `investor`, `advisor`, `candidate_company`, `other`. **website** (string | null) Те же правила, что и в `organizations.create`. `null` очищает его. **notes** (string | null) Заметки обычным текстом. `null` очищает их. **Возвращает:** компанию в том виде, в каком её возвращает `organizations.get`. - Укажите хотя бы одно поле. ## `organizations.archive` Перемещает компанию в архив. Её история сохраняется. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **organizationId** (string, required) Компания из `organizations.list`. **Возвращает:** строку компании из списка. - Отменяется операцией `organizations.unarchive`. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `organizations.unarchive` Возвращает компанию из архива. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **organizationId** (string, required) Компания из `organizations.list`. **Возвращает:** строку компании из списка. ## См. также - [Справочник операций](/mcp/operations) - [Сессии](/mcp/operations/sessions) - [Люди и компании в приложении](/knowledge/people-and-companies) --- # Проекты и заметки Операции MCP и CLI, чтобы показывать, читать, создавать, изменять, распределять, закреплять, перемещать в корзину и восстанавливать проекты и заметки. Canonical URL: https://docs.talkbar.ru/mcp/operations/projects-and-notes Операции с проектами читают проекты, объединяющие ваши сессии, заметки и карточки, и управляют ими. Операции с заметками читают и записывают заметки в формате Markdown, включая собственную заметку сессии. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`projects.list`](#projectslist) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`projects.get`](#projectsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`projects.trash.list`](#projectstrashlist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`projects.create`](#projectscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`projects.update`](#projectsupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`projects.pin`](#projectspin) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`projects.trash`](#projectstrash) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`projects.restore`](#projectsrestore) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.list`](#noteslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`notes.get`](#notesget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`notes.trash.list`](#notestrashlist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`notes.create`](#notescreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.update`](#notesupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.append`](#notesappend) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.move`](#notesmove) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.pin`](#notespin) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`notes.trash`](#notestrash) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`notes.restore`](#notesrestore) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | ## `projects.list` Постранично показывает проекты рабочего пространства с количеством сессий, заметок и документов и временем начала последней сессии. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **limit** (integer) Сколько вернуть. От 1 до 100. По умолчанию `100`. **offset** (integer) `nextOffset` из предыдущей страницы. По умолчанию `0`. **Возвращает:** `{items: [{projectId, name, description, sessionCount, noteCount, documentCount, lastSessionAtMs}], totalCount, nextOffset}`. ```json {"tool": "projects.list", "args": {}} ``` ## `projects.get` Читает обзор одного проекта с последними сессиями (до 20) и заметками (до 10). **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string, required) Проект из `projects.list`. **Возвращает:** поля `projects.list`, а также `sessions` (строки как в `sessions.list`) и `notes` (`{noteId, title, snippet, updatedAt}`). - Для проекта в корзине возвращается `not_found`. ```json {"tool": "projects.get", "args": {"projectId": "proj_456"}} ``` ## `projects.trash.list` Показывает проекты в корзине. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **limit** (integer) Сколько вернуть. От 1 до 200. По умолчанию `50`. **Возвращает:** `{projects: [{projectId, name, trashedAt}]}`. ## `projects.create` Создаёт проект в пределах лимита проектов вашего тарифа. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string, required) Название проекта. Не может быть пустым. **description** (string) Описание обычным текстом. **kind** (string) Вид проекта. Одно из значений: `client`, `engagement`, `recurring`, `internal`, `personal`, `research`, `product`, `sales`, `hiring`, `education`, `event`, `support`. По умолчанию `client`. **color** (string) Цвет проекта. **Возвращает:** проект: `{projectId, name, status, kind, pinned, updatedAt}`. - При достижении лимита проектов вашего тарифа вызов отклоняется с `plan_limit` (`limit: "projects"`); проекты считаются в рабочем пространстве, с которым работает вызов. Лимит показывает `plan.get`. ```json {"tool": "projects.create", "args": {"name": "Northwind onboarding", "kind": "client"}} ``` ## `projects.update` Переименовывает проект или меняет его описание, вид или цвет. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **projectId** (string, required) Проект из `projects.list`. **name** (string) Новое название. Не может быть пустым. **description** (string | null) Описание обычным текстом; заменяет описание с форматированием, если оно было. `null` очищает его. **kind** (string) Одно из значений: `client`, `engagement`, `recurring`, `internal`, `personal`, `research`, `product`, `sales`, `hiring`, `education`, `event`, `support`. **color** (string | null) Цвет проекта. `null` очищает его. **Возвращает:** проект в том же виде, что и `projects.create`. - Укажите хотя бы одно поле. ## `projects.pin` Закрепляет или открепляет проект. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **projectId** (string, required) Проект из `projects.list`. **pinned** (boolean, required) `true` закрепляет, `false` открепляет. **Возвращает:** `{projectId, pinned}`. ## `projects.trash` Перемещает проект в корзину. Его можно восстановить. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **projectId** (string, required) Проект из `projects.list`. **Возвращает:** `{projectId, trashed: true}`. Перемещение в корзину проекта, который уже там, проходит успешно, а дата первого перемещения сохраняется. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `projects.restore` Возвращает проект из корзины в пределах лимита проектов вашего тарифа. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **projectId** (string, required) Проект из `projects.list`. **Возвращает:** проект в том же виде, что и `projects.create`. Восстановление проекта, которого нет в корзине, ничего не меняет. - При достижении лимита проектов отклоняется с `plan_limit` (`limit: "projects"`). ## `notes.list` Постранично показывает заметки рабочего пространства, начиная с недавно изменённых; можно ограничить проектом, темой, сессией или поиском по названию и тексту. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **projectId** (string) Только заметки, относящиеся к этому проекту. **search** (string) Текст для поиска в названиях и тексте заметок. **topicId** (string) Только заметки с этой темой (из `topics.list`). **sessionId** (string) Только заметки этой сессии: её собственная заметка, заметки, добавленные на её страницу, и заметки, относящиеся к ней. **limit** (integer) Сколько вернуть. От 1 до 100. По умолчанию `40`. **cursor** (string) Значение `nextCursor` с предыдущей страницы. Не может быть пустым. **Возвращает:** `{items, nextCursor, hasMore, totalCount}`. У каждого элемента есть `noteId`, `title`, `snippet`, `pinned`, `createdAt`, `updatedAt`, `sessionId`, `sessions`, `topics` и `projects`; при поиске добавляется `matchSnippet`. - В каждой строке `sessionId` заполнено только у собственной заметки сессии; `sessions` перечисляет сессии, к которым относится заметка. ```json {"tool": "notes.list", "args": {"search": "onboarding", "limit": 10}} ``` ## `notes.get` Читает одну заметку: её название, текст в формате Markdown (постранично) и ссылки. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **maxChars** (integer) Размер страницы в символах. От 1 000 до 200 000. По умолчанию `20000`. **offset** (integer) `nextOffset` из предыдущего чтения. Смещение за пределами конца отклоняется. **Возвращает:** `{noteId, workspaceId, title, markdown, truncated, nextOffset, pinned, createdAt, updatedAt, links}`. `updatedAt` — это значение, которое `notes.update` принимает как `expectedUpdatedAt`. - Для заметки в корзине возвращается `not_found`. ```json {"tool": "notes.get", "args": {"noteId": "note_789"}} ``` ## `notes.trash.list` Показывает заметки в корзине. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **limit** (integer) Сколько вернуть. От 1 до 200. По умолчанию `50`. **Возвращает:** `{notes: [{noteId, title, trashedAt}]}`. ## `notes.create` Создаёт заметку из Markdown; её можно сразу отнести к проекту и сессиям. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **title** (string) Название заметки. Может быть пустым, как в приложении. **markdown** (string) Текст заметки в формате Markdown. (Аргумент называется `markdown`; `body`, `content` и `text` отклоняются.) **projectId** (string) Отнести заметку к этому проекту. **sessionIds** (string[]) Отнести заметку к этим сессиям. Сессия, указанная дважды, учитывается один раз. **pinned** (boolean) Закрепить заметку. **Возвращает:** `{noteId, title, pinned, sessionId, updatedAt, projectId, sessionIds}`. `projectId` и `sessionIds` показывают, к чему относится заметка. - Проект и сессии должны существовать и не находиться в корзине. ```json {"tool": "notes.create", "args": {"title": "Follow-up plan", "markdown": "## Next steps\n- Send the proposal by Friday", "projectId": "proj_456"}} ``` ## `notes.update` Переименовывает заметку и/или заменяет её текст на Markdown. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **title** (string) Новое название. Пустое название очищает его. **markdown** (string) Новый текст в формате Markdown. Заменяет весь текст заметки. **force** (boolean) Заменить текст, содержащий то, что нельзя передать в Markdown, например встроенные карточки. Без этого аргумента такая заметка отклоняется. **expectedUpdatedAt** (integer) `updatedAt` заметки, от которого вы начали правку. Если с тех пор заметка изменилась — в TalkBar или через другой вызов, — правка отклоняется с `conflict` и ничего не записывается. **Возвращает:** `{noteId, title, pinned, sessionId, updatedAt}`; для собственной заметки сессии — также `sessionStatus` (и `warning`, если сессия была прервана или TalkBar не запущен). - Укажите название, markdown или оба. Если меняется только название, текст и встроенные в него ссылки сохраняются. - Ответ `conflict` содержит текущее значение `updatedAt` заметки: перечитайте заметку, объедините изменения и повторите попытку. - Заметка в корзине отклоняется: сначала восстановите её. ```json {"tool": "notes.update", "args": {"noteId": "note_789", "markdown": "# Plan\nUpdated after the call.", "expectedUpdatedAt": 1761990000000}} ``` ## `notes.append` Добавляет Markdown в конец заметки. Проверка на конфликт не нужна, так как текст только дописывается к имеющемуся. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **markdown** (string, required) Добавляемый текст в формате Markdown. Не может быть пустым. **Возвращает:** то же, что `notes.update`, включая `sessionStatus` для собственной заметки сессии. - Чтобы писать в заметку текущей сессии, найдите её `noteId` через `sessions.notes` (`role: "session"`). ```json {"tool": "notes.append", "args": {"noteId": "note_789", "markdown": "- Dana will send the contract draft."}} ``` ## `notes.move` Задаёт проект заметки и/или сессии, к которым она относится. Остальные связи сохраняются. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **projectId** (string | null) Проект или `null`, чтобы убрать заметку из проекта. **sessionIds** (string[]) Сессии, к которым отнести заметку. Заменяет текущий список сессий заметки. **Возвращает:** `{noteId, projectId, sessionIds}` — к чему заметка относится теперь. - Укажите `projectId`, `sessionIds` или оба. ## `notes.pin` Закрепляет или открепляет заметку. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **pinned** (boolean, required) `true` закрепляет, `false` открепляет. **Возвращает:** `{noteId, pinned}`. ## `notes.trash` Перемещает заметку в корзину. Её можно восстановить. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **Возвращает:** `{noteId, trashed: true}`. Перемещение в корзину заметки, которая уже там, проходит успешно. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `notes.restore` Возвращает заметку из корзины. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **noteId** (string, required) Заметка из `notes.list` или `sessions.notes`. **Возвращает:** `{noteId, restored: true}`. Для заметки, которой нет в корзине, возвращается тот же ответ. ## См. также - [Справочник операций](/mcp/operations) - [Сессии](/mcp/operations/sessions) - [Темы и закладки](/mcp/operations/topics-and-markers) - [Проекты в приложении](/knowledge/projects) - [Заметки в приложении](/chats-and-notes/notes) --- # Планировщик Операции MCP и CLI для просмотра фоновых заданий TalkBar, а также для отмены или повторного запуска отдельного задания. Canonical URL: https://docs.talkbar.ru/mcp/operations/scheduler Работу по времени — например, напоминания о встречах, автоматическое начало записи и экспорт — TalkBar выполняет как фоновые задания. Эти операции позволяют ассистенту видеть очередь заданий рабочего пространства, а также отменить или повторить отдельное задание. Все они по умолчанию включены в разделе «Доступ по MCP». Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`scheduler.status`](#schedulerstatus) | Чтение | `talkbar_read` | Вкл. | `scheduler` | | [`scheduler.jobs.list`](#schedulerjobslist) | Чтение | `talkbar_read` | Вкл. | `scheduler` | | [`scheduler.job.get`](#schedulerjobget) | Чтение | `talkbar_read` | Вкл. | `scheduler` | | [`scheduler.job.cancel`](#schedulerjobcancel) | Изменение | `talkbar_change` | Вкл. | `scheduler` | | [`scheduler.job.retry`](#schedulerjobretry) | Изменение | `talkbar_change` | Вкл. | `scheduler` | ## Статусы заданий Задание может иметь статус `pending`, `leased`, `running`, `succeeded`, `skipped`, `failed` или `cancelled`. ## `scheduler.status` Показывает, сколько фоновых заданий рабочего пространства находится в каждом статусе и когда подойдёт время следующего. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduler` **Аргументы:** только `workspaceId`. **Возвращает:** `{pending, leased, running, succeeded, skipped, failed, cancelled, nextDueAtMs}`. ```json {"tool": "scheduler.status", "args": {}} ``` ## `scheduler.jobs.list` Выводит недавние фоновые задания рабочего пространства, начиная с новых. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduler` **Аргументы** **limit** (integer) Сколько вернуть: от 1 до 500. По умолчанию `100`. **Возвращает:** массив заданий. Задание: `jobId`, `jobKind`, `scopeType`, `scopeId`, `targetType`, `targetId`, `queueName`, `priority`, `runAtMs`, `status`, `attemptCount`, `maxAttempts`, `lastError`, `createdAtMs`, `updatedAtMs`, `startedAtMs`, `completedAtMs`, `cancelledAtMs` и несколько служебных полей маршрутизации. ## `scheduler.job.get` Читает одно фоновое задание и историю его запусков. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduler` **Аргументы** **jobId** (string, required) Фоновое задание из `scheduler.jobs.list`. **runLimit** (integer) Наибольшее число запусков в ответе: от 1 до 500. По умолчанию `50`. **Возвращает:** `{job, runs}`. У каждого запуска есть `runId`, `jobId`, `attemptNumber`, `status`, `startedAtMs`, `finishedAtMs`, `error` и `outputJson`. ```json {"tool": "scheduler.job.get", "args": {"jobId": "job_31"}} ``` ## `scheduler.job.cancel` Отменяет одно задание со статусом `pending`, `leased` или `running`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduler` **Аргументы** **jobId** (string, required) Фоновое задание из `scheduler.jobs.list`. **Возвращает:** задание в его текущем состоянии. - Для уже завершённого задания запрос отклоняется с кодом `failed`. Отмена задания не удаляет встречу, напоминание или экспорт, которые его создали. ## `scheduler.job.retry` Возвращает одно задание с ошибкой в очередь. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Вкл.** · группа политики `scheduler` **Аргументы** **jobId** (string, required) Фоновое задание из `scheduler.jobs.list`. **runAtMs** (integer) Когда запустить, мс эпохи Unix. По умолчанию — сейчас. Прошедшее время означает «сейчас». **Возвращает:** задание в его текущем состоянии — со статусом `pending` и очищенной последней ошибкой. - Повторить можно только задание со статусом `failed`; для остальных запрос отклоняется с кодом `failed`. ## См. также - [Справочник операций](/mcp/operations) - [Календарь и серии](/mcp/operations/calendar-and-series) - [Экспорт](/mcp/operations/exports) --- # Сессии Операции MCP и CLI для сессий: список, чтение, проекты, закрепление, корзина, транскрипты и хронология, имена участников и карточки сессии. Canonical URL: https://docs.talkbar.ru/mcp/operations/sessions Операции с сессиями читают то, что показывает страница сессии (итоги, транскрипт, хронологию, показатели, заметки, документы и карточки), и вносят те же изменения, что доступны там: переименование, привязку к проекту, закрепление, имена участников, добавление карточек, перемещение в корзину и восстановление. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`sessions.list`](#sessionslist) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`sessions.get`](#sessionsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.recording`](#sessionsrecording) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`sessions.stats`](#sessionsstats) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`sessions.transcript`](#sessionstranscript) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.timeline`](#sessionstimeline) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.notes`](#sessionsnotes) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.documents`](#sessionsdocuments) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.live_cards`](#sessionslive_cards) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.trash.list`](#sessionstrashlist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`sessions.rename`](#sessionsrename) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.move`](#sessionsmove) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.pin`](#sessionspin) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.speakers.rename`](#sessionsspeakersrename) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.speakers.link`](#sessionsspeakerslink) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.speakers.unlink`](#sessionsspeakersunlink) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.cards.add`](#sessionscardsadd) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.cards.attach`](#sessionscardsattach) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.cards.detach`](#sessionscardsdetach) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.trash`](#sessionstrash) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`sessions.restore`](#sessionsrestore) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | ## Работа с текущей сессией Ассистент может работать с сессией, которую вы сейчас записываете, и всё, что он добавляет, сразу появляется на экране записи: 1. Вызовите `sessions.recording`, чтобы найти её, и проверьте `stale`. 2. Читайте её через `sessions.transcript` с `cursor: "0:"` и `format: "json"`, затем каждый раз передавайте полученный `nextCursor`. `sessions.timeline` возвращает уже записанные пункты хронологии, а `sessions.stats` — предварительный список участников. 3. Добавляйте закладки (`markers.create`), задачи (`action_items.create`) и карточки знаний (`sessions.cards.add`, `sessions.cards.attach`) или дописывайте заметку сессии (`notes.append`). Во время записи транскрипт, пункты хронологии и участники доступны ассистентам только для чтения (изменения участников отвечают `session_recording`). Запись управляется только в приложении, а итоги и ключевые слова от ИИ появляются после её остановки. ## `sessions.list` Постранично показывает данные о сессиях рабочего пространства, начиная с самых новых, с фильтрами по проекту, серии, статусу, времени начала, теме и названию. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **projectId** (string) Только сессии, относящиеся к этому проекту. **seriesId** (string) Только сессии этой серии (из `series.list`). **status** (string) Только сессии в этом состоянии. `recording` показывает, идёт ли сейчас запись какой-либо сессии. Одно из значений: `recording`, `open`, `interrupted`, `complete`. **startedAfterMs** (integer) Только сессии, начатые в это время или позже (время Unix в мс, включительно). **startedBeforeMs** (integer) Только сессии, начатые раньше этого времени (время Unix в мс, не включительно). **search** (string) Поиск по части названия сессии без учёта регистра. **topicId** (string) Только сессии с этой темой (из `topics.list`). **limit** (integer) Сколько вернуть. От 1 до 100. По умолчанию `40`. **cursor** (string) Значение `nextCursor` с предыдущей страницы. Не может быть пустым. **Возвращает:** `{items, nextCursor, hasMore, totalCount}`. У каждого элемента есть `sessionId`, `title`, `status`, `startedAtMs`, `endedAtMs`, `projectId`, `seriesId`, `participantCount`, `pinned`, `source` и `private`. - Показывает сессии, которые не в корзине; для сессий в корзине используйте `sessions.trash.list`. - Чтобы получить следующую страницу, передайте `nextCursor` обратно как `cursor`. ```json {"tool": "sessions.list", "args": {"projectId": "proj_123", "status": "complete", "limit": 20}} ``` ## `sessions.get` Читает одну сессию: её данные, текст и разделы итогов, задачи и решения. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** поля `sessions.list`, а также `speakerCount`, `workspaceId`, `sessionType`, `createdAt`, `updatedAt`, `revision`, `summary` (`{text, sections, generatedBy}`, где `generatedBy` называет модель и провайдера и сообщает, редактировались ли итоги), `actionItems` и `decisions`. - `participantCount` учитывает всех участников сессии, включая тех, кто ничего не сказал; `speakerCount` — только тех, кто говорил. - `revision` меняется при любом изменении на странице сессии, поэтому ассистент может дёшево опрашивать это поле и перечитывать сессию, только когда оно изменилось. - Пока идёт запись: `recording: true`, `summaryPending: true` и `summary: null`. Итоги подводятся после остановки записи. - Транскрипт читайте через `sessions.transcript`. Для сессии в корзине возвращается `not_found`. ```json {"tool": "sessions.get", "args": {"sessionId": "ses_123"}} ``` ## `sessions.recording` Возвращает сессию, которая записывается прямо сейчас, или `null`, если запись не идёт. Вызывайте её первой при работе с текущей сессией, а затем используйте её `sessionId`. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы:** только `workspaceId`. **Возвращает:** `{recording: null}` или `{recording: {sessionId, title, startedAtMs, elapsedMs, revision, appRunning, stale}}`. - `elapsedMs` — время по часам с момента начала, включая паузы (о паузах знает только приложение). - `appRunning` сообщает, запущено ли приложение TalkBar для этой папки данных (`null`, если это не удаётся определить). `stale: true` означает, что TalkBar не запущен, поэтому сессия лишь выглядит записываемой — при следующем запуске TalkBar отметит её как прерванную. - Никогда не принимайте «самую новую сессию» за текущую: используйте эту операцию. ```json {"tool": "sessions.recording", "args": {}} ``` ## `sessions.stats` Читает показатели сессии: сколько длилась запись, её паузы, реплики, число символов, время разговора каждого участника и какая модель подвела итоги для каждой сохранённой длины. Без текста транскрипта и итогов. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `sessionId`, `status`, `sessionType`, `private`, `startedAtMs`, `endedAtMs`, `elapsedMs`, `recordedMs`, `recordingRuns`, `breaks`, `turns`, `transcriptChars`, `speakerCount`, `talkTimeMs`, `speakers` и `summary`. У каждого участника есть `speakerId`, `contactId` (связанный человек или `null`), `name`, `isUser`, `excludedFromAi`, `talkTimeMs` и `share`. `summary` описывает выбранную длину итогов и модель и перечисляет все сохранённые длины. - Операции `sessions.speakers.*` принимают именно `speakerId`. - Пока идёт запись, участники берутся из текущего транскрипта: `speakerId: null`, а также `turns` и `provisional: true`. ```json {"tool": "sessions.stats", "args": {"sessionId": "ses_123"}} ``` ## `sessions.transcript` Читает транскрипт сессии так, как его показывает страница сессии, с именами участников и временем, страницами из целых реплик. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **speaker** (string) Только реплики участников, имя которых содержит этот текст (без учёта регистра). Чтобы прочитать реплики одного человека, используйте значение `speaker`, которое возвращает `contacts.sessions`. **turnOffset** (integer) Реплика, с которой начать: `nextTurnOffset` из предыдущей страницы. Нельзя сочетать с `cursor`. **maxChars** (integer) Размер страницы в символах. От 1 000 до 200 000. По умолчанию `20000`. **format** (string) `text` (по умолчанию) возвращает строки вида `[mm:ss] Name: text`; `json` возвращает объекты реплик с идентификаторами. **cursor** (string) Следить за изменениями транскрипта. Начните с `"0:"`, затем передавайте `nextCursor` из каждого ответа, чтобы получать только реплики, добавленные или изменённые с тех пор. **Возвращает:** `sessionId`, `title`, `startedAtMs`, `private`, `truncated`, `excludedFromAiSpeakers`, затем `transcript` (для text) или `turns` (для json). При постраничном чтении добавляются `totalTurns`, `turnOffset` и `nextTurnOffset`; при чтении с курсором вместо них добавляется `nextCursor`. Реплики в формате json содержат `turnId`, `chunkId`, `startMs`, `endMs`, `speaker`, `isUser`, `excludedFromAi`, `text` и `translatedText`. - Страницы состоят из целых реплик. `turnOffset` за пределами конца отклоняется. - `turnId` и `chunkId` принимают `markers.create` и `action_items.create`, чтобы указать на момент разговора. - Пока идёт запись, реплики могут быть `provisional: true`, а ответ содержит `recording: true`. - Участники, исключённые из ИИ, отмечаются, а не скрываются. Удалённые реплики при чтении с курсором не сообщаются; когда меняется `revision`, перечитайте транскрипт целиком. ```json {"tool": "sessions.transcript", "args": {"sessionId": "ses_123", "format": "json", "maxChars": 50000}} ``` ## `sessions.timeline` Читает хронологию сессии со временем так, как её показывает страница сессии. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, title, private, points: [{pointId, at, atMs, text, translatedText, edited}]}`. `at` имеет вид `mm:ss` (`h:mm:ss` после первого часа, `--:--`, если у пункта нет времени). - `pointId` принимают `markers.create` и `action_items.create`, чтобы указать на пункт хронологии. ```json {"tool": "sessions.timeline", "args": {"sessionId": "ses_123"}} ``` ## `sessions.notes` Показывает собственную заметку сессии и добавленные к ней заметки. Чтобы прочитать заметку целиком, используйте `notes.get`. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, private, notes: [{noteId, title, role, preview, updatedAt}]}`. `role` равно `session` для собственной заметки сессии и `added` для добавленных к ней заметок; `preview` — первые 160 символов. ```json {"tool": "sessions.notes", "args": {"sessionId": "ses_123"}} ``` ## `sessions.documents` Показывает документы, добавленные к сессии. Чтобы прочитать документ, используйте `documents.read`. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, private, documents: [{documentId, title, fileType, status, pinned, projectId, updatedAt}]}`. ## `sessions.live_cards` Показывает карточки знаний и прежние задачи, взятые в сессию, и моменты, когда разговор к каждой из них возвращался. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, private, cards, broughtInActionItems, capturedActionItems}`. У карточек есть `memoryId`, `title`, `body`, `type`, `status` и `cameUp`. `cameUp` — это `null` или `{count, first, last, moments: [{at, atMs, heard, matchedTerms}]}`, где `heard` — слова, прозвучавшие в этот момент. Задачи возвращаются в том же виде, что и в `action_items.get`; у взятых задач также есть `statusWhenBroughtIn` и `cameUp`. ## `sessions.trash.list` Показывает сессии в корзине. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **limit** (integer) Сколько вернуть. От 1 до 200. По умолчанию `50`. **Возвращает:** `{sessions: [{sessionId, title, trashedAt}]}`. ## `sessions.rename` Меняет название сессии. Работает и во время записи. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **title** (string, required) Новое название. Не может быть пустым; пробелы по краям удаляются. **Возвращает:** `{sessionId, title}`, а также `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). ```json {"tool": "sessions.rename", "args": {"sessionId": "ses_123", "title": "Q4 roadmap review"}} ``` ## `sessions.move` Относит сессию к проекту или убирает её из проекта. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **projectId** (string | null, required) Проект, к которому отнести сессию, или `null`, чтобы убрать её из проекта. Обязательный аргумент: чтобы убрать сессию из проекта, явно передайте `null`. **moveKnowledge** (boolean) Перенести вместе с сессией её карточки знаний. По умолчанию `true`. **Возвращает:** `{sessionId, projectId, previousProjectId}`, а также `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). - Целевой проект должен существовать и не находиться в корзине. ```json {"tool": "sessions.move", "args": {"sessionId": "ses_123", "projectId": "proj_456"}} ``` ## `sessions.pin` Закрепляет или открепляет сессию. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **pinned** (boolean, required) `true` закрепляет, `false` открепляет. **Возвращает:** `{sessionId, pinned}`, а также `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). Операции чтения показывают состояние в поле `pinned`, а `revision` меняется. ## `sessions.speakers.rename` Даёт имя участнику сессии, запись которой не идёт, — так же, как меню участника в приложении. Участник связывается с человеком с этим именем; если такого человека нет, он создаётся. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия. Идентификаторы можно найти через `sessions.list` или `talkbar_find`; идентификатор текущей сессии — через `sessions.recording`. **speakerId** (string, required) `speakerId` из `sessions.stats`. **name** (string, required) Имя участника. От 1 до 40 символов после удаления пробелов по краям. **Возвращает:** `{sessionId, speakerId, name, contactId}`. - Если TalkBar создал человека только для этого участника (ещё не подтверждённого и ни с чем больше не связанного), этот человек переименовывается, а не создаётся новый. - Если с таким именем несколько людей, вызов завершается ошибкой и перечисляет их, чтобы вы могли связать участника с одним из них через `sessions.speakers.link`. - Имя, которое уже есть у другого участника этой сессии, отклоняется: вместо этого объедините этих участников в приложении. - Сессия, запись которой идёт, отклоняется с `session_recording`; неизвестный участник — `not_found`. Сказанное и голосовые данные не меняются. ```json {"tool": "sessions.speakers.rename", "args": {"sessionId": "ses_123", "speakerId": "spk_2", "name": "Dana Lee"}} ``` ## `sessions.speakers.link` Связывает участника сессии, запись которой не идёт, с человеком, который уже есть в TalkBar. Участник получает имя этого человека. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия. Идентификаторы можно найти через `sessions.list` или `talkbar_find`; идентификатор текущей сессии — через `sessions.recording`. **speakerId** (string, required) `speakerId` из `sessions.stats`. **contactId** (string, required) Человек из `contacts.list`. **Возвращает:** `{sessionId, speakerId, name, contactId}`. - Никогда не создаёт человека: для неизвестного или архивного человека возвращается `not_found`. - Сессия, запись которой идёт, отклоняется с `session_recording`. ## `sessions.speakers.unlink` Убирает имя участника и его связь с человеком в сессии, запись которой не идёт, — так же, как **Убрать имя** в приложении. Участник снова становится «Участник 1», «Участник 2» и так далее, по порядку первой реплики. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия. Идентификаторы можно найти через `sessions.list` или `talkbar_find`; идентификатор текущей сессии — через `sessions.recording`. **speakerId** (string, required) `speakerId` из `sessions.stats`. **Возвращает:** `{sessionId, speakerId, name, contactId}`. - Сессия, запись которой идёт, отклоняется с `session_recording`. ## `sessions.cards.add` Создаёт карточку знаний в сессии, в том числе во время записи. Карточка сразу появляется на экране записи. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **title** (string, required) Заголовок карточки. Не может быть пустым. **body** (string) Текст карточки. **type** (string) Тип карточки. Одно из значений: `fact`, `preference`, `decision`, `commitment`, `risk`, `open_question`, `relationship_context`, `instruction`, `key_moment`, `contract_term`, `pricing_detail`, `technical_detail`. По умолчанию `fact`. **sessionOnly** (boolean) Оставить карточку только в этой сессии. Иначе она сохраняется так же, как приложение сохраняет карточку, добавленную во время сессии: в проекте сессии, если он есть (если только настройка памяти сессии не оставляет карточки в сессии), а иначе — только в этой сессии. **Возвращает:** карточку (`memoryId`, `title`, `type`, `status`, `pinned`, `projectId`, `sessionOnly`, `updatedAt`) с `sessionId` и `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). - В сессии может быть до 24 карточек; попытка добавить 25-ю отклоняется с `limit_reached`. ```json {"tool": "sessions.cards.add", "args": {"sessionId": "ses_123", "title": "Budget capped at $40k", "type": "decision"}} ``` ## `sessions.cards.attach` Добавляет в сессию существующую карточку знаний, в том числе во время записи. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **memoryId** (string, required) Карточка из `knowledge.list`. **Возвращает:** `{memoryId, sessionId, attached: true, alreadyAttached}`, а также `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). - В сессии может быть до 24 карточек (сверх этого — `limit_reached`). Для карточки из другого рабочего пространства возвращается `not_found`. ## `sessions.cards.detach` Убирает карточку знаний из сессии. Сама карточка сохраняется, поэтому операция выполняется через `talkbar_change`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **memoryId** (string, required) Карточка из `sessions.live_cards` или `knowledge.list`. **Возвращает:** `{memoryId, sessionId, attached: false}`, а также `sessionStatus` (и `warning`, если сессия была прервана или записывается, когда TalkBar не запущен). ## `sessions.trash` Перемещает завершённую сессию в корзину. Её можно восстановить. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия. Идентификаторы можно найти через `sessions.list` или `talkbar_find`; идентификатор текущей сессии — через `sessions.recording`. **Возвращает:** `{sessionId, trashed: true}`. - Сессия, запись которой ещё идёт, отклоняется с `session_recording`. - Перемещение в корзину сессии, которая уже там, проходит успешно, а дата первого перемещения сохраняется. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ```json {"tool": "sessions.trash", "args": {"sessionId": "ses_123"}} ``` ## `sessions.restore` Возвращает сессию из корзины. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия. Идентификаторы можно найти через `sessions.list` или `talkbar_find`; идентификатор текущей сессии — через `sessions.recording`. **Возвращает:** `{sessionId, restored: true}`. Для сессии, которой нет в корзине, возвращается тот же ответ. - Учитывается в лимите сессий вашего тарифа: при достижении лимита отклоняется с `plan_limit` (`limit: "sessions"`). Лимит показывает `plan.get`. ## См. также - [Справочник операций](/mcp/operations) - [Темы и закладки](/mcp/operations/topics-and-markers) (ключевые слова и закладки сессий) - [Задачи](/mcp/operations/action-items) - [База знаний](/mcp/operations/knowledge) - [Подробности сессии в приложении](/sessions/session-details) --- # Темы и закладки Операции MCP и CLI для тем, которыми помечаются сессии и заметки, для ключевых слов сессии и для закладок на моментах сессии. Canonical URL: https://docs.talkbar.ru/mcp/operations/topics-and-markers Темы помечают сессии и заметки; ключевые слова — это слова, которые TalkBar (или вы) привязывает к сессии; закладки отмечают момент сессии и могут содержать заметку. Каждая операция также принимает необязательный `workspaceId`. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`topics.list`](#topicslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`topics.create`](#topicscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`topics.rename`](#topicsrename) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`topics.delete`](#topicsdelete) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | | [`topics.assign`](#topicsassign) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`topics.unassign`](#topicsunassign) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`sessions.keywords.get`](#sessionskeywordsget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`markers.list`](#markerslist) | Чтение | `talkbar_read` | Вкл. | `content` | | [`markers.create`](#markerscreate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`markers.update`](#markersupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`markers.delete`](#markersdelete) | Изменение | `talkbar_delete` | Выкл. | `contentChanges` | ## `topics.list` Выводит темы, которыми помечаются сессии и заметки. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы:** только `workspaceId`. **Возвращает:** `{topics: [{topicId, name, color}]}`, по алфавиту названий. ```json {"tool": "topics.list", "args": {}} ``` ## `topics.create` Добавляет тему. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string, required) Название темы, от 1 до 80 символов. **color** (string) Одно из значений: `slate`, `sky`, `stone`, `teal`, `indigo`, `green`, `yellow`, `blue`, `purple`, `rose`, `lime`, `emerald`, `amber`, `cyan`, `fuchsia`, `pink` — или цвет в шестнадцатеричном виде `#RGB` / `#RRGGBB`. Если цвет не указан, он выбирается по названию, поэтому одно и то же название всегда получает один и тот же цвет. **Возвращает:** `{topicId, name, color}`. - Уже существующее название отклоняется с кодом `failed`. Неподдерживаемый цвет отклоняется с кодом `failed` («Unsupported topic color»). ```json {"tool": "topics.create", "args": {"name": "Hiring", "color": "teal"}} ``` ## `topics.rename` Изменяет название или цвет темы. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **topicId** (string, required) Тема из `topics.list`. **name** (string) Новое название, от 1 до 80 символов. **color** (string) Новый цвет, как в `topics.create`. **Возвращает:** `{topicId, name, color}`. - Укажите `name`, `color` или оба. ## `topics.delete` Удаляет тему и снимает её со всех сессий и заметок. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **topicId** (string, required) Тема из `topics.list`. **Возвращает:** `{topicId, deleted: true}`. - У тем нет корзины: тема удаляется так же, как в приложении. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## `topics.assign` Добавляет тему одной сессии или заметке. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **topicId** (string, required) Тема из `topics.list`. **sessionId** (string) Сессия, которую нужно пометить. Укажите это поле или `noteId`, но не оба. **noteId** (string) Заметка, которую нужно пометить. Укажите это поле или `sessionId`, но не оба. **Возвращает:** `{sessionId, noteId, topics}` — темы элемента после изменения. ```json {"tool": "topics.assign", "args": {"topicId": "top_9", "sessionId": "ses_123"}} ``` ## `topics.unassign` Снимает тему с одной сессии или заметки. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **topicId** (string, required) Тема из `topics.list`. **sessionId** (string) Сессия. Укажите это поле или `noteId`, но не оба. **noteId** (string) Заметка. Укажите это поле или `sessionId`, но не оба. **Возвращает:** `{sessionId, noteId, topics}` — темы элемента после изменения. ## `sessions.keywords.get` Читает ключевые слова сессии. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, keywords: [string]}`, а пока идёт запись сессии — ещё и `pending: true`. - TalkBar записывает свои ключевые слова от ИИ вместе с итогами, после остановки записи; до этого выводятся только ключевые слова, добавленные вами. ```json {"tool": "sessions.keywords.get", "args": {"sessionId": "ses_123"}} ``` ## `markers.list` Выводит закладки сессии: заметку, время, цвет и слова, прозвучавшие в этот момент. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **Возвращает:** `{sessionId, markers}`. Каждая закладка — `{markerId, sessionId, kind, body, quote, atMs, turnId, chunkId, pointId, color, updatedAt}`. ```json {"tool": "markers.list", "args": {"sessionId": "ses_123"}} ``` ## `markers.create` Добавляет закладку в сессию, в том числе во время записи: на реплику или фрагмент транскрипта, точку хронологии, момент или цитату, с необязательной заметкой и цветом. Закладка сразу появляется в сессии. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **sessionId** (string, required) Сессия, с которой нужно работать. Идентификатор сессии, которая записывается сейчас, возвращает `sessions.recording`. **turnId** (string) Реплика транскрипта (`sessions.transcript` с `format: "json"`). Укажите хотя бы одно из полей `turnId`, `chunkId`, `pointId`, `atMs` или `quote`. **chunkId** (string) Фрагмент транскрипта, записанного в реальном времени (`sessions.transcript` с `format: "json"`). Закладка ставится на первую реплику фрагмента. Укажите хотя бы одно из полей `turnId`, `chunkId`, `pointId`, `atMs` или `quote`. **pointId** (string) Точка хронологии (`sessions.timeline`). Нельзя сочетать с `turnId` или `chunkId`. Укажите хотя бы одно из полей `turnId`, `chunkId`, `pointId`, `atMs` или `quote`. **atMs** (integer) Момент в мс от начала сессии. Вместе с репликой, фрагментом или точкой он должен попадать внутрь них; во время записи он не может быть позже текущего момента. Укажите хотя бы одно из полей `turnId`, `chunkId`, `pointId`, `atMs` или `quote`. **quote** (string) Слова, к которым относится закладка. Само по себе это поле находит реплику с этими словами; если таких реплик несколько, добавьте `turnId` или `atMs`, чтобы выбрать одну. Укажите хотя бы одно из полей `turnId`, `chunkId`, `pointId`, `atMs` или `quote`. **body** (string) Заметка к закладке, до 2 000 символов. **color** (string) Цвет закладки, от 1 до 40 символов; по умолчанию `amber`. **Возвращает:** закладку (`{markerId, sessionId, kind, body, quote, atMs, turnId, chunkId, pointId, color, updatedAt}`) и `sessionStatus` (а также `warning`, если сессия была прервана или идёт её запись, когда TalkBar не запущен). - Идентификатор, которого нет в сессии, или `atMs` за пределами указанного места отклоняются с кодом `invalid_arguments`. - Закладка хранит не только идентификаторы, но и свой момент, поэтому приложение правильно размещает её и после улучшения транскрипта. ```json {"tool": "markers.create", "args": {"sessionId": "ses_123", "quote": "we can ship in March", "body": "Ship date commitment", "color": "rose"}} ``` ## `markers.update` Изменяет заметку или цвет закладки. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **markerId** (string, required) Закладка из `markers.list`. **body** (string) Новая заметка. **color** (string) Новый цвет. **Возвращает:** закладку и `sessionStatus` (а также `warning`, если сессия была прервана или идёт её запись, когда TalkBar не запущен). - Укажите `body`, `color` или оба. ## `markers.delete` Удаляет закладку. **Изменение** · выполняется через [`talkbar_delete`](/mcp/tools#talkbar_delete) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **markerId** (string, required) Закладка из `markers.list`. **sessionId** (string) Необязательная проверка: сессия, которой принадлежит закладка. Если указана другая сессия, ничего не удаляется и возвращается `not_found`. **Возвращает:** `{markerId, sessionId, deleted: true}` и `sessionStatus` (а также `warning`, если сессия была прервана или идёт её запись, когда TalkBar не запущен). `sessionId` — сессия, которой принадлежит закладка. - У закладок нет корзины: закладка удаляется так же, как в приложении. - Выполняется через `talkbar_delete`: [требует вашего подтверждения](/mcp/access-and-permissions#подтверждение-удаления), если ваше ИИ-приложение умеет его запрашивать; запросы приложений, которые не умеют, отклоняются, если не включён параметр **Разрешить удаление без подтверждения**. ## См. также - [Справочник операций](/mcp/operations) - [Сессии](/mcp/operations/sessions) - [Темы и ключевые слова в приложении](/knowledge/topics-and-keywords) --- # Рабочее пространство и профиль Операции MCP и CLI для рабочих пространств, поиска и статистики по пространству, вашего профиля и тарифа. Canonical URL: https://docs.talkbar.ru/mcp/operations/workspace-and-profile Эти операции сообщают ассистенту, в каком рабочем пространстве он работает, ищут по нему, считают, что в нём хранится, и читают ваш профиль и тариф. Все операции здесь, кроме `workspace.list`, также принимают необязательный `workspaceId`; без него используется пространство, открытое в приложении. Общие правила описаны в разделе [Как читать этот справочник](/mcp/operations#как-читать-этот-справочник). | Операция | Тип | Инструмент | По умолчанию | Группа | | --- | --- | --- | --- | --- | | [`workspace.list`](#workspacelist) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`workspace.search`](#workspacesearch) | Чтение | `talkbar_read` | Вкл. | `content` | | [`workspace.stats`](#workspacestats) | Чтение | `talkbar_read` | Вкл. | `metadata` | | [`workspace.rename`](#workspacerename) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`profile.get`](#profileget) | Чтение | `talkbar_read` | Вкл. | `content` | | [`profile.update`](#profileupdate) | Изменение | `talkbar_change` | Выкл. | `contentChanges` | | [`plan.get`](#planget) | Чтение | `talkbar_read` | Вкл. | `metadata` | ## `workspace.list` Показывает ваши рабочие пространства и отмечает то, которое открыто в приложении. Операции, вызванные без `workspaceId`, используют это открытое пространство. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы:** нет. **Возвращает:** `{workspaces: [{workspaceId, name, active}]}`. `active: true` отмечает пространство, открытое в приложении. - Хороший первый вызов: он сообщает ассистенту, какое пространство по умолчанию будут использовать все остальные вызовы. ```json {"tool": "workspace.list", "args": {}} ``` ## `workspace.search` Ищет по названиям и тексту в рабочем пространстве среди сессий, заметок, документов, чатов, задач, проектов, серий, людей, компаний и карточек знаний, начиная с лучших совпадений. Инструмент [`talkbar_find`](/mcp/tools#talkbar_find) выполняет тот же поиск. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы** **query** (string, required) Что искать. Не может быть пустым. Регистр и диакритические знаки не учитываются. **projectId** (string) Искать только в этом проекте. **kinds** (string[]) Какие виды элементов искать. Пустой список или отсутствие аргумента означает все виды. Значения: `session`, `note`, `document`, `chat`, `action_item`, `project`, `series`, `person`, `company`, `memory` (карточка знаний). **limit** (integer) Наибольшее число совпадений в ответе. От 1 до 100. По умолчанию `20`. **match** (string) `any` (по умолчанию) принимает запрос на естественном языке и находит элементы, содержащие любое из оставшихся слов; `all` требует всех слов. **includeArchived** (boolean) Искать также в архивных сериях, людях, компаниях и карточках знаний; они возвращаются с отметкой `archived`. По умолчанию `false`. Элементы в корзине не ищутся никогда. **Возвращает:** `{matches, contentSearch}`. У каждого совпадения есть `kind`, `id`, `title`, `snippet`, `href` (ссылка в приложение), `score`, `projectId`, `matchedIn`, `atMs` (начало сессии, для остальных элементов — последнее изменение), `detail`, `context`, `itemCount`, `archived` и, для совпадения в проиндексированном тексте транскрипта или документа, `content`. `contentSearch` сообщает, искал ли поиск по проиндексированному содержимому: `on`, `keywordOnly` (модель эмбеддингов не установлена), `off` или `failed` (совпадения по названиям и тексту всё равно возвращаются). - Фрагменты могут содержать текст транскрипта. - Поиск идёт по названиям элементов и их собственному тексту (итоги сессий, текст заметок, сообщения чатов, подробности задач, текст карточек), а также по проиндексированному содержимому, если оно доступно. ```json {"tool": "workspace.search", "args": {"query": "pricing decision for Northwind", "kinds": ["session", "note"], "limit": 10}} ``` ## `workspace.stats` Считает сессии по статусам, заметки, документы, проекты и одобренные карточки знаний в рабочем пространстве. Текст содержимого не возвращается. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы** **projectId** (string) Считать только в этом проекте. Действует на сессии, заметки, документы и карточки знаний; на число проектов не влияет. **startedAfterMs** (integer) Считать только сессии, начатые в это время или позже (время Unix в мс, включительно). Действует только на сессии. **startedBeforeMs** (integer) Считать только сессии, начатые раньше этого времени (время Unix в мс, не включительно). Действует только на сессии. **Возвращает:** `{sessions: {total, byStatus, firstStartedAtMs, lastStartedAtMs}, notes: {total}, documents: {total}, projects: {total}, knowledge: {approvedTotal}}`. ```json {"tool": "workspace.stats", "args": {"startedAfterMs": 1761955200000}} ``` ## `workspace.rename` Переименовывает рабочее пространство: открытое или то, которое указано в `workspaceId`. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string, required) Новое название. Не может быть пустым; пробелы по краям удаляются. **Возвращает:** `{workspaceId, name}`. - Создание, переключение и удаление пространств в корзину остаются в приложении. ```json {"tool": "workspace.rename", "args": {"name": "Client work"}} ``` ## `profile.get` Читает ваше имя, email и должность из профиля, который использует рабочее пространство. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `content` **Аргументы:** только `workspaceId`. **Возвращает:** `{profileId, workspaceId, name, email, jobTitle, isDefault}`. ```json {"tool": "profile.get", "args": {}} ``` ## `profile.update` Меняет ваше имя, email или должность в профиле, который использует рабочее пространство. **Изменение** · выполняется через [`talkbar_change`](/mcp/tools#talkbar_change) · переключатель MCP по умолчанию **Выкл.** · группа политики `contentChanges` **Аргументы** **name** (string | null) Ваше имя. `null` или пустая строка очищает его. **email** (string | null) Ваш email. В нём должен быть ровно один символ `@` с текстом до и после него и не должно быть пробелов. `null` или пустая строка очищает его. **jobTitle** (string | null) Ваша должность. `null` или пустая строка очищает её. **Возвращает:** профиль в том же виде, что и `profile.get`. - Укажите хотя бы одно поле. Неуказанные поля не меняются; аватар сохраняется. - Профиль виден в приложении и на страницах, которыми вы делитесь. ```json {"tool": "profile.update", "args": {"jobTitle": "Head of Product"}} ``` ## `plan.get` Читает ваш тариф TalkBar: его лимиты и сколько из каждого занято в этом рабочем пространстве и в папке данных, состояние лицензии, а также тарифы выше вашего и что даёт каждый из них. **Чтение** · выполняется через [`talkbar_read`](/mcp/tools#talkbar_read) · переключатель MCP по умолчанию **Вкл.** · группа политики `metadata` **Аргументы:** только `workspaceId`. **Возвращает:** `plan` (`{id, name}`, действующий тариф), `licensedPlan`, `previewTrialActive`, `previewTrialExpiresAt`, `environment`, `license` (`plan`, `status`, `paid`, `updatesUntil`, `onlineServicesUntil`, `renewalOpen`), `limits`, `features`, `upgrades` (`[{id, name, adds, limits}]`, пустой на самом старшем тарифе) и `upgradeUrl` (`null`, если тарифа выше нет). - `limits` содержит `projects` и `sessions` (на рабочее пространство), `workspaces`, `profiles` и `shareLinks` (на папку данных) и `devices` (на лицензию), каждый в виде `{max, used, per}`; `max: null` означает «без ограничений». У других лимитов, например `recordingMinutes`, нет `used`. - Во время пробного периода тестовой версии `plan` — тариф пробного периода, а `licensedPlan` сохраняет тариф вашей лицензии. - Никогда не возвращает лицензионный ключ, email, имя владельца или платёжные данные и не может сменить тариф. Если изменение отклонено с `plan_limit`, именно здесь ассистент видит причину. Подробнее — в разделе [Ошибки и ограничения](/mcp/errors-and-limits). ```json {"tool": "plan.get", "args": {}} ``` ## См. также - [Справочник операций](/mcp/operations) - [Пять инструментов MCP](/mcp/tools) - [Ошибки и ограничения](/mcp/errors-and-limits) - [Тарифы и лицензия](/data/plans-and-license)