ktalk-mcp
ktalk-mcp is a Model Context Protocol server that lets assistants read and analyze Kontur.Talk (KTalk) data: recordings, transcripts, summaries, participants, archives, chats, room configs, calendar, and meeting previews, plus authorization diagnostics.
List and search conference recordings with filters, date ranges, pagination, sorting, and raw/markdown output.
Get details of a specific recording (author, date, duration, participants).
Retrieve transcripts — speaker-segmented speech-to-text with timecodes — and automatic chunking for long recordings.
Get full meeting summaries or a specific summary type (shortSummary / protocol).
Get the complete participant list, including anonymous users, beyond the normal 6-person limit.
Download a recording's video file to disk, streamed, with optional quality selection.
List archived meetings over a date window and filter by room names (personal API key mode only).
Read meeting chat messages using a recording key or conference key, with automatic channel resolution.
Get room configuration: audio/video/screen-sharing policies, moderators, SIP, chat, masking, session lobbies (session-token mode only).
List scheduled meetings visible to the active authorization within a date window, with transparent server-side segmentation (session-token mode only).
Preview a meeting without creating it; all required fields are validated with no silent defaults. Actual creation is intentionally CLI-only.
Search the contacts directory to resolve numeric attendee keys for meeting previews (session-token mode only).
Preview meeting cancellation; actual cancellation is intentionally CLI-only.
Diagnose authorization: which key/token is active, whether it is alive, and for API keys, its scopes and expiration.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ktalk-mcplist my recent recordings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ktalk-cli
CLI ktalk — интерфейс командной строки для тех, кто работает с записями видеовстреч
Контур.Толк (KTalk) программно: читает записи, транскрипты и саммари,
управляет расписанием, ведёт локальный реестр обработки записей на SQLite. Годится и как
самостоятельный инструмент, и как предусловие плагина Claude Code ktalk — подробнее в
разделе «Пакет и плагин Claude Code» ниже.
Раньше пакет назывался
ktalk-mcpи, помимо CLI, поднимал MCP-сервер для Claude Code (инструменты видаktalk_list_recordings). Этот слой снят целиком — MCP в пакете больше нет, единственная точка входа — командаktalk. Пришли по старой ссылке или ищетеktalk-mcp— это тот же проект под новым именем, старый пакет дальше не развивается (о конфликте имени команды при апгрейде — ниже, в «Установке»).
Умеет:
Список записей конференций и детали одной записи.
Транскрипты (речь по спикерам с таймкодами, с чанкингом для длинных).
Саммари и протоколы встреч.
Полный состав участников записи (обходит лимит в 6 из списковых ответов).
Скачивание видеофайла записи.
Историю чата встречи.
Конфигурацию комнаты и календарь запланированных встреч.
Предпросмотр и создание новой встречи — создание требует интерактивного терминала и явного подтверждения, см. «Планирование встречи» ниже.
Диагностику авторизации — жив ли токен и почему запрос не проходит.
Операционный реестр обработки записей на SQLite — синхронизация, статусы, markdown-зеркало для git, см. «Реестр записей» ниже.
Установка
Требуется Python 3.12+ и uv.
uv tool install ktalk-cliИли через pip:
pip install ktalk-cliЕсли на машине уже стоит старый ktalk-mcp (он тоже владел командой
ktalk), uv tool install ktalk-cli откажет: uv не отдаёт занятое имя
команды второму пакету молча. Сначала освободите имя:
uv tool uninstall ktalk-mcp
uv tool install ktalk-cliПроверка версии — после установки или обновления:
ktalk --version # печатает, например: ktalk-cli 2.1.0Обновление до последней версии — та же команда install, только upgrade:
uv tool upgrade ktalk-cliRelated MCP server: Speak AI MCP Server
Авторизация
С версии 3.0.0 CLI работает только через session token (кука браузера) — режим
персонального API-ключа (KTALK_PERSONAL_API_KEY) снят целиком (ADR-025): он
конкурировал с сессией молча (при обеих заданных переменных побеждал ключ без
объяснения в тексте отказа) и диагностика auth-status объявляла заведомо
невалидный ключ «валидным» на 403.
Цена снятия для тех, кто держал постоянный ключ: персональный ключ не протухал
без предупреждения, session token — протухает. Постоянная работа теперь требует
ручного обновления токена по мере его протухания (ktalk token set -, см. ниже) —
это не восстанавливается автоматически снятием ключа.
Переменная KTALK_PERSONAL_API_KEY, если она всё ещё задана в окружении, не
читается как credential ни на одном шаге — CLI печатает об этом одно предупреждение
на stderr при каждом вызове и продолжает работу на сессионном токене.
Session token
Session token — токен вашей браузерной сессии Толка. Единственный поддерживаемый источник credential (ADR-025). Живёт недолго и протухает без предупреждения — при регулярной работе повторяйте те же два шага ниже, когда команда начнёт отказывать кодом авторизации.
Два шага. На вкладке, где вы залогинены в https://your-domain.ktalk.ru, откройте
DevTools (F12, или Cmd+Option+I на Mac) → Console и выполните:
copy(JSON.parse(localStorage.session).data.token)Токен — в буфере обмена. Положите его в файл одной командой:
pbpaste | ktalk token set - # macOS
xclip -o | ktalk token set - # Linux (X11)Команда сама создаёт ~/.config/ktalk-mcp/token с правами 0600 (каталог — 0700),
отвергает значение, не похожее на токен, и никогда не печатает его в вывод. Проверка:
ktalk token status # есть ли файл, права, маска значения
ktalk auth-status # жива ли авторизация — реальный запрос, не имитацияПуть переопределяется переменной KTALK_TOKEN_FILE; каталог уважает XDG_CONFIG_HOME.
Порядок источников — первый непустой выигрывает:
# | Источник | Комментарий |
1 |
| заданное явно сильнее лежащего на диске |
2 |
| дефолтный путь для повседневной работы |
Цена этого порядка. Файл читается только тогда, когда переменная пуста — значит переменная переживает
ktalk token set. Записали свежий токен, аktalk auth-statusпродолжает отвечатьalive: false? Проверьте, не задана ли переменная: она перекрывает файл, и ротация проходит вхолостую. Разводит источники один вызов —env -u KTALK_SESSION_TOKEN ktalk auth-status; если он отвечаетalive: true, а обычный вызовalive: false, причина найдена. Процедура целиком — OPS-003.
Ни один запрос не несёт заголовок X-Auth-Token — единственный транспорт credential
теперь query-параметр sessionToken.
Путь
~/.config/ktalk-mcp/tokenне переименован вместе с пакетом и остаётся таким намеренно: он выбран независимо от имени дистрибутива (каталогktalk/уже занят другим — санкцией на запись, у неё свой жизненный цикл), а смена пути молча лишила бы уже настроенные машины третьего источника авторизации.
Токен из файла обслуживает и чтение, и запись: создание и отмена встречи шлют то же
значение другим транспортом (заголовок Authorization: Session, а не query-параметр) —
источник значения транспорт не меняет. Санкция на запись при этом остаётся обязательной,
она к токену отношения не имеет.
Файл с правами шире 0600 читается так, будто его нет (ktalk token status покажет
usable: False) — секрет не должен молча читаться с диска, доступного другим
пользователям машины.
Важно: session token имеет ограниченный срок жизни. Если команда возвращает ошибку авторизации, повторите те же два шага —
ktalk token set -перезаписывает файл, права переставлять не нужно.
Переменные окружения
Адрес контура задаётся переменной — постоянно, в стартовом файле оболочки:
export KTALK_BASE_URL="https://your-domain.ktalk.ru"Токен так задавать не стоит. KTALK_SESSION_TOKEN предназначена для CI и разовых
прогонов, где она живёт ровно один вызов:
KTALK_SESSION_TOKEN="ваш_session_token" ktalk auth-statusВ стартовом файле (~/.zshenv, ~/.zshrc, ~/.bashrc) она превращается в невидимый
перехват ротации: ktalk token set пишет в файл, а читается по-прежнему переменная — со
старым, возможно уже отозванным значением. Для повседневной работы токен держат в файле
(см. «Session token» выше). Если переменная уже прописана и мешает —
OPS-003.
Тот же порядок действует для файла .env в рабочей директории — он читается наравне с
окружением и так же старше файла токена:
KTALK_BASE_URL=https://your-domain.ktalk.ruДиагностика авторизации
Проверьте авторизацию без запроса записей:
ktalk auth-statusДиагностика различает два случая, которые снаружи выглядят одинаково — просто ошибка, — но чинятся по-разному:
401 — токен невалиден либо истёк. Вердикт
alive: false, код возврата1. Обновите токен:ktalk token set -(а если задана переменнаяKTALK_SESSION_TOKEN— обновлять надо её либо снять её вовсе, см. «Порядок источников»).403 — токен рабочий, но у текущей сессии нет прав на эту операцию. Вердикт
alive: true, код возврата0: нехватка прав не является отказом токена, и перевыпускать его не нужно.
У session token понятия scope и срока действия нет — диагностика выполняет реальный пробный запрос (список записей), а не имитацию без сети.
--json-ответ — {"alive": bool, "note": str | None}. Отказ пробного запроса виден
по обоим каналам сразу: поле alive: false в теле ответа И ненулевой код возврата
процесса — полагаться только на один из двух нельзя.
Команды чтения записей и справочников
Все команды поддерживают --json (валидный JSON в stdout; ошибки — в stderr с
ненулевым кодом возврата).
Коды возврата
Код | Значение |
| Успех. |
| Отказ вызова — сеть, сервер, конфигурация. |
| Usage error — неверные аргументы CLI ( |
| Только |
Команда | Назначение |
| Список записей. |
| Детали записи — автор, дата, длительность, участники (список ограничен 6, полный состав — |
| Транскрипт по спикерам с таймкодами. Длинный транскрипт режется на чанки по границам реплик: |
| Полное саммари (краткое резюме + протокол). |
| Саммари одного типа. |
| Полный состав участников, включая анонимных — обходит лимит в 6, который отдают |
| Скачивает видеофайл потоково, без буферизации в памяти. Существующий файл не перезаписывается; |
| Архив встреч за период. Недоступна — архив никогда не имел рабочего пути под session token; команда отказывает до сети с явным сообщением на каждый вызов (ADR-025). |
| Сообщения чата встречи; один из двух ключей обязателен. Канал не указан — определяется автоматически. |
| Конфигурация комнаты — политики аудио/видео/демонстрации, модераторы, SIP, чат, маскирование. Побочный эффект: если комнаты с таким именем ещё нет, она создаётся. |
| Встречи за окно дат, видимые активной авторизации — это не «ваш личный календарь», а всё, что видит текущая авторизация, включая чужие встречи. Сервер лимитирует один запрос семью днями и сотней встреч на сегмент — команда сама режет произвольное окно на сегменты; при упоре в потолок ответ предупреждает о возможно неполной выдаче. |
Планирование встречи
Создание встречи — единственная операция пакета, которая что-то меняет вне вашего компьютера: она рассылает приглашения реальным людям. Удаление созданного события эти письма не отзывает. Из-за этого создание устроено умышленно неудобно:
Создание — команда
ktalk create-meeting-confirm. Она работает только в интерактивном терминале (проверяет, что и ввод, и вывод — реальный TTY) и перед отправкой печатает предпросмотр и требует набрать словода.Предпросмотр без создания —
ktalk create-meeting-preview, не делает ни одного сетевого запроса.Обе команды используют session token — единственный оставшийся режим авторизации (ADR-025).
Ни одно поле не имеет значения по умолчанию (кроме описания встречи — пустая строка, если не задано). Тема, начало, конец, часовой пояс, комната, участники, анонимный доступ, PIN — каждое нужно передать явно; иначе команда откажет и назовёт, какого поля не хватает. Так сделано намеренно: молчаливый часовой пояс сдвинет встречу в календаре участников на другое время, а молчаливая автозапись незаметно для организатора изменит, записывается ли встреча.
Из этого вытекают практические следствия:
Часовой пояс принимает только форму
GMT±N(примерGMT+3) — IANA-имена видаEurope/Moscow, смещения ISO и аббревиатуры сервер не распознаёт.--enable-auto-recordingи--allow-anonymousпринимают только явныеtrueилиfalse— «флаг просто не указан» не считается ответом.«Встреча без обязательных участников» — это отдельный флаг
--no-required-attendees, а не просто отсутствие--required-attendee-key. Значение--required-attendee-key— числовой id участника, не логин.«Без PIN» — отдельный флаг
--no-pin-code, а не пустая строка в--pin-code.--anonymous-access-expirationобязателен, только если--allow-anonymous true.
Повторяющиеся встречи в этой версии не поддерживаются — можно создать только разовое событие.
При сетевом сбое во время создания команда не повторяет запрос сама: если сеть
оборвалась, неизвестно, ушло приглашение или нет, и автоматический повтор рискует
создать дубль. Решение о повторной попытке — за вами; перед ней стоит проверить
ktalk list-calendar, не появилась ли встреча уже.
Создание встречи ещё ни разу не выполнялось на боевом окружении — команда реализует задуманное поведение, но не проверена живым вызовом.
# Предпросмотр — без сети, без побочных эффектов
ktalk create-meeting-preview \
--subject "Синк по проекту" \
--start 2026-08-20T10:00:00 --end 2026-08-20T10:30:00 --timezone GMT+3 \
--room-name "Переговорная 1" \
--no-required-attendees \
--enable-auto-recording false --allow-anonymous false \
--no-pin-code
# Создание — только в интерактивном терминале, требует ввода "да"
ktalk create-meeting-confirm \
--subject "Синк по проекту" \
--start 2026-08-20T10:00:00 --end 2026-08-20T10:30:00 --timezone GMT+3 \
--room-name "Переговорная 1" \
--required-attendee-key 123 --required-attendee-key 456 \
--enable-auto-recording false --allow-anonymous false \
--no-pin-codeAPI
CLI работает с KTalk Web API через единственный (session token) режим авторизации
(см. «Авторизация» выше) — query-параметр sessionToken, внутренний недокументированный
контур API:
Эндпоинт | Описание |
| Список записей |
| Детали записи |
| Транскрипт |
| Полное саммари (v2) |
| Саммари по типу |
Архив встреч (list-archive) недоступен: под session token у него нет и никогда не
было рабочего пути (ADR-025) — команда отказывает до сети с явным сообщением.
OpenAPI спецификация
talk.public.api-api-2.jsonвключена как справочник, но содержит расхождения с реальным API (пути, формат авторизации, структура ответов). Пути, достижимые только под снятым режимом персонального ключа (X-Auth-Token), больше не применимы к этому CLI.
Реестр записей (ktalk)
Та же команда ktalk ведёт операционный реестр обработки записей на SQLite.
Вся детерминированная механика (синхронизация списка записей, дедуп,
экспирация, смена статусов, рендер дашборда и markdown-зеркала, разовая
миграция) живёт в коде, а не в рассуждениях модели.
SQLite — операционный source of truth. Markdown-файл registry.md —
генерируемое read-only зеркало для git (ktalk export), руками не редактируется.
Путь к базе: флаг --db PATH > переменная KTALK_REGISTRY_DB > дефолт
95_TRANSCRIPTS/.registry.db (относительно текущего каталога). Бинарную БД
нужно добавить в .gitignore (.registry.db, .registry.db-wal, .registry.db-shm).
ktalk auth-status, ktalk create-meeting-preview и ktalk create-meeting-confirm
реестр не открывают вовсе — им он не нужен. В частности, auth-status работает
даже если файла базы данных нет или он недоступен. Планирование встречи —
отдельный раздел «Планирование встречи» выше.
Команда | Назначение |
| Загрузить записи из KTalk, upsert новых ( |
| Записать session-токен в |
| Есть ли файл токена, его права и маска значения. |
| Диагностика активной авторизации — жив ли токен. См. «Диагностика авторизации». |
| Дашборд: новые записи, статистика по статусам. |
| Список записей с фильтром по статусу. |
| Детали записи: участники, статус, пути, длительность. |
| Перевести в |
| Завершить, проставить пути и |
| Частичная обработка. |
| Пропустить вручную. |
| Привязать профиль к участнику. |
| Сгенерировать markdown-зеркало. |
| Разовый импорт из markdown-реестров. |
Несколько фоновых агентов могут безопасно писать параллельно (WAL + busy_timeout
транзакция на операцию).
Разработка
git clone https://github.com/mdemyanov/ktalk-cli.git
cd ktalk-cli
uv sync
# Запуск тестов
uv run pytest -v
# Линтинг
uv run ruff check .
# Локальный запуск CLI (session token — см. «Авторизация»)
KTALK_SESSION_TOKEN=... KTALK_BASE_URL=... uv run ktalk auth-statusПакет и плагин Claude Code
ktalk-cli работает и сам по себе, и как предусловие плагина Claude Code ktalk. Плагин не
обращается к KTalk напрямую и не поднимает MCP-сервер — он вызывает эту же команду ktalk
как единственную точку входа в контур.
Плагин пинует точную версию пакета (не нижний порог: «ровно эта версия», не «эта или новее») в собственном файле совместимости. Если что-то в интеграции с плагином ведёт себя не так, как описано в его документации, — первым делом сверьте версию:
ktalk --version # см. «Проверка версии» в разделе «Установка»Версия не совпадает с той, что требует плагин, — обновите пакет тем же способом, что при
установке (uv tool upgrade ktalk-cli, см. «Установка»); не совпадает в другую сторону
(пакет новее, чем ожидает плагин) — не откатывайте его самостоятельно, сверьтесь с тем, кто
настраивал плагин.
Проблемы и вопросы
Нашли баг, некорректное поведение или неточность в документации — заведите issue в этом репозитории: https://github.com/mdemyanov/ktalk-cli/issues.
Лицензия
MIT
Available Tools
15 toolsktalk_auth_statusA
Diagnose the active authorization mechanism (FR-11).
Reports whether the personal API key or session token is alive, and — for the API key — its scopes and expiration, when available.
Args: format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses that the tool reports liveness of either a personal API key or session token, and for the API key also scopes and expiration when available. This goes well beyond the tool name and effectively communicates a read-only, diagnostic behavior, though it does not discuss error or edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the purpose appears in the first sentence, followed by the concrete report contents and the single parameter. Every sentence carries useful information, with no filler or repetition of structural data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with one optional parameter, and the description covers its purpose, output semantics, and parameter values. Since an output schema exists, the description does not need to detail return fields. Nothing essential for selecting or invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the parameter name, type, and default with no description (0% coverage). The tool description compensates fully by explaining the 'format' parameter and enumerating its allowed values: 'raw' (JSON) or 'markdown'. This gives the agent everything needed to choose the correct value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Diagnose') and resource ('active authorization mechanism'), and explains exactly what is reported: API key/token liveness, scopes, and expiration. This clearly distinguishes it from the sibling tools, which all deal with meetings, recordings, transcripts, or contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is clear from the opening phrase 'Diagnose the active authorization mechanism' — an agent can infer this is for checking authentication state. It does not explicitly list exclusions or alternatives, but the sibling tools are all data-retrieval operations with no functional overlap, so no alternative routing is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_download_recordingA
Download a KTalk recording video file to disk, streamed (FR-7).
Args: recording_key: Recording key/identifier (required) target_path: Filesystem path to write the file to (required). Parent directories are created; an existing file is not overwritten. quality: Requested video quality (e.g. "900p"). None picks a sensible default from the record's available qualities. format: Output format for the returned metadata — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| quality | No | ||
| target_path | Yes | ||
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: streaming downloads, file writes, directory creation, non-overwrite policy, and quality selection defaults. It does not detail all edge cases (e.g., error handling, permissions), but given the moderate complexity, this is a solid 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is direct, with a one-sentence summary followed by bullet-like parameter explanations. It is front-loaded with the core purpose, and each sentence adds unique value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, all necessary information is covered: main action, parameter specifics, defaults, and a format enum. No output schema is specified, but the description hints at metadata formats ('raw' vs 'markdown'), which suffices for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully explain parameters. It does so for all fields: recording_key is self-explanatory, target_path gets file-write details, quality explains default selection, and format gives allowed values ('raw'/'markdown'). This more than compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Download' with a specific resource ('a KTalk recording video file to disk'), and it also specifies the streaming behavior with a requirement traceability tag ('FR-7'). This is clear enough to distinguish it from siblings like ktalk_get_recording, which likely retrieves metadata rather than a file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and mentions the parameter behavior (e.g., 'Parent directories are created; an existing file is not overwritten'), which provides implicit usage context. However, it does not explicitly compare to sibling tools or state when to use this vs. alternatives, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_chat_messagesA
Get chat messages of a meeting (FR-10).
Either recording_key or conference_key must be given; if channel
is omitted, an available channel is resolved automatically instead of
failing with a raw "channel field is required" error.
Args: recording_key: Recording key/identifier (resolves the meeting bridge) conference_key: Meeting/conference key (used directly if given) channel: Chat channel name (e.g. "general"); auto-resolved if omitted format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| channel | No | ||
| recording_key | No | ||
| conference_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so meaningfully. It discloses that an omitted channel is auto-resolved rather than causing a raw error, and that recording_key resolves a meeting bridge. It does not mention auth, rate limits, or ordering, but the read-only nature is clear from 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with a front-loaded purpose and an Args block. The 'FR-10' tag is minor noise, but the rest of the text is dense and useful without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a schema that fails to describe parameters, the description covers all inputs needed to call the tool correctly, including fallback behavior. It does not address distinction from sibling tools, but an output schema exists and the tool is a simple read operation, so nothing critical is missing for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the input schema has 0% description coverage, the description fully compensates by explaining each of the four parameters, providing an example for channel ('general'), the exact allowed values for format, and the crucial either/or constraint that is invisible in the schema. This is more than sufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Get chat messages of a meeting'), making the tool's purpose immediately unambiguous. Although it does not name sibling tools, 'chat messages' is distinct from the other ktalk_get_* tools, and the rest of the description reinforces the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear guidance on which identifier to pass ('Either recording_key or conference_key must be given') and explains the channel fallback, but it never addresses when to prefer this tool over siblings like ktalk_get_transcript or ktalk_get_summary. Usage context is implied rather than explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_participantsA
Get the full participant list of a KTalk recording (FR-8).
Unlike the list/details response (capped by maxParticipantCount), this
dedicated tool enriches the result so records with more participants than
the default page shows are still complete.
Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It usefully discloses that results are enriched and uncapped, and that output can be raw JSON or markdown. It does not state auth or side-effect details, but for a read-only 'get' tool this is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a clear purpose sentence, a short why-this-tool differeniator, and a minimal Args list. Every sentence adds value, and the key distinction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with an output schema present, the description covers purpose, differentiation, parameters, and output format. Nothing essential is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% property description coverage, but the description's Args section fully compensates: it explains recording_key as the required identifier and defines format as 'raw' (JSON) or 'markdown', including the default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get the full participant list of a KTalk recording.' It also clearly differentiates from sibling tools by contrasting with the capped 'list/details response' and framing this as the dedicated, complete participant-list tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use this tool when the standard list/details participant list would be truncated by maxParticipantCount. It does not name a specific sibling tool as an alternative, but the boundary is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_recordingA
Get details of a specific KTalk recording.
Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (human-readable)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as read-only nature, error handling for missing recordings, or authentication requirements. Only output format options are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with a clear front-loaded purpose followed by parameter descriptions. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description adequately covers parameters and purpose. However, it could briefly indicate what type of details are returned to set expectations beyond the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning for both parameters: recording_key as 'Recording key/identifier' and format with explicit options 'raw' (JSON) or 'markdown'. This compensates well, though the format semantics could be more detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'details of a specific KTalk recording', distinguishing it from sibling tools like ktalk_list_recordings (listing) and ktalk_get_transcript (transcript).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings such as ktalk_get_summary or ktalk_get_transcript. The description does not provide context on preconditions or relative utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_roomA
Get room details (FR-17, session mode only — no confirmed API-key profile).
WARNING — SIDE EFFECT (ADR-006): the server returns 200 for any room name, including one never seen before, with an identically shaped response (never a 404). Calling this with a name not yet read in this contour CREATES the room object as a side effect of reading; this is irreversible — the project has no delete operation. Do NOT use this tool to check whether a name is available/occupied — the check itself creates the occupancy.
Args: room_name: Room name (path-quoted before the request) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| room_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical side effect: the server always returns 200, creates the room object as a side effect, and this is irreversible (no delete operation). With no annotations provided, the description carries the full burden and excels at it, warning the agent about a behavior that would otherwise be undiscoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose statement, then a prominent warning block, then the args list. Every sentence contributes vital information, and the critical side-effect warning is front-loaded. Despite its length, there is no redundancy or fluff; it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, usage constraints, side effects, and parameter details. It references project-specific identifiers (FR-17, ADR-006) that add traceability. Although it doesn't describe the return value, an output schema exists, so that is not required. For a tool with such a subtle and dangerous behavior, this is exceptionally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema offers no descriptions, so the description is the only source for parameter meaning. It explains both parameters: room_name is 'path-quoted before the request' and format lists the allowed values 'raw' (JSON) or 'markdown'. This fully compensates for the schema gap and gives the agent actionable detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get room details' and adds a scoping constraint (session mode only), making the operation unambiguous. It clearly differentiates from sibling tools by targeting a specific resource (room) rather than participants, recordings, or transcripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides both a when-to-use context (session mode) and an explicit prohibition: 'Do NOT use this tool to check whether a name is available/occupied — the check itself creates the occupancy.' This gives clear guidance on when not to invoke it, which is exactly the type of directive that prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_summaryA
Get full summary of a KTalk recording (short summary + protocol + transcription).
Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (structured summary)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral transparency. It only states that the tool retrieves a summary, implying a read-only operation. However, it does not disclose error behavior (e.g., invalid recording_key), prerequisites, rate limits, or whether the operation is synchronous. For a tool with no annotation support, this is insufficient detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a short argument list. It is front-loaded with the core purpose and then lists parameters. Every sentence adds value; there is no redundancy or fluff. The structure is optimal for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, required 1) and the existence of an output schema (reducing need for return value description), the description covers the essentials. However, it does not mention error cases or preconditions (e.g., recording must exist). It is nearly complete for a straightforward get operation, but a small gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains recording_key as 'Recording key/identifier (required)' and format as 'Output format — raw (JSON) or markdown (structured summary)', adding meaning beyond the schema's type and default. This enables correct parameter usage, especially the format enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full summary of a KTalk recording' and specifies the components (short summary, protocol, transcription). It uses specific verbs and resources, and the inclusion of 'full summary' distinguishes it from siblings like ktalk_get_transcript (only transcript) and ktalk_get_summary_by_type (potentially a different kind of summary).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention siblings or specify scenarios where this is preferred over ktalk_get_transcript, ktalk_get_recording, or ktalk_get_summary_by_type. The purpose is clear, but the lack of usage notes limits the agent's ability to choose correctly without trial and error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_summary_by_typeA
Get a specific type of summary for a KTalk recording.
Args: recording_key: Recording key/identifier (required) summary_type: Type of summary — "shortSummary" or "protocol" (required) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| summary_type | Yes | ||
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses output formats ('raw' or 'markdown') and parameter details, but lacks information on idempotency, error handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and structured with an Args section, making it easy to parse. It front-loads the purpose and then details parameters. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values. It covers the tool's purpose, parameters, and output formats, which is sufficient for a simple getter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description adds meaning by specifying the allowed values for summary_type ('shortSummary' or 'protocol') and format ('raw' or 'markdown'). The recording_key is described only as 'identifier,' so some param details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a specific type of summary for a KTalk recording,' with a specific verb and resource. It distinguishes from sibling tools like ktalk_get_summary and ktalk_get_transcript by focusing on summary by type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for getting a specific summary type ('shortSummary' or 'protocol'), but does not explicitly state when to use this vs ktalk_get_summary or other siblings. No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_get_transcriptA
Get transcript of a KTalk recording (speech-to-text by speakers).
Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (dialogue with timecodes) chunk: Chunk number. 0 = auto (returns full text if small, first chunk if large). 1+ = specific chunk number for paged reading. chunk_size: Max characters per chunk (~7500 tokens at 30000). Soft limit — chunks split at utterance boundaries, never mid-utterance.
| Name | Required | Description | Default |
|---|---|---|---|
| chunk | No | ||
| format | No | markdown | |
| chunk_size | No | ||
| recording_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It details chunking behavior (auto vs specific chunk, utterance boundaries) and format options. It does not mention safety or error handling, but the output schema covers return value expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured as a docstring with parameter list. It is informative but slightly verbose. All sentences add value, though some could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, the description covers key behavioral aspects (chunking, format). The output schema reduces need to describe return values. However, it lacks details on error states or prerequisite recording existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description thoroughly explains each parameter: recording_key (required), format (raw vs markdown), chunk (auto mode and paging), and chunk_size (soft limit with utterance boundary splitting). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get transcript of a KTalk recording (speech-to-text by speakers)', providing a specific verb and resource. It distinguishes from sibling tools like ktalk_get_summary and ktalk_list_recordings by focusing on transcript retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. However, the sibling tool names (e.g., summary, list) imply distinct use cases. No when-not-to-use or prerequisite guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_list_archiveA
List archived meetings within a date window (FR-9, personal API key only).
Reads the whole window client-side across all pages — unlike
ktalk_list_recordings, this returns the full result in one call.
Args: from_date: Window start date (ISO 8601) to_date: Window end date (ISO 8601) room_names: Optional filter by room name(s) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown | |
| to_date | Yes | ||
| from_date | Yes | ||
| room_names | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses pagination ('reads the whole window client-side across all pages'), that it returns the full result in one call (vs sibling), and the auth requirement (personal API key only). It could mention error behavior or rate limits, but the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact, front-loaded summary, then a key behavioral distinction, then a concise Args section. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present ad no annotations, the description covers auth, pagination behavior, and all parameter semantics. Complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must describe parameters. It does so: from_date/to_date as ISO 8601 window, room_names as optional filter, format as 'raw' or 'markdown'. This adds meaning beyond the bare schema, though not exhaustively (e.g., date format specifics, markdown structure).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('archived meetings'), and scope (date window), and explicitly differentiates from the sibling tool ktalk_list_recordings by noting it returns the full result in one call. This makes the tool's purpose unambiguous and distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: for archived meetings within a date range, with a personal API key. It contrasts with ktalk_list_recordings on the pagination behavior, which helps an agent choose between them. It doesn't explicitly state when NOT to use it, but the sibling comparison implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_list_calendarA
List scheduled meetings visible to the active authorization (FR-18).
Reports meetings this session/key can see — not necessarily a personal calendar. Window is segmented server-side into <=7-day chunks transparently; segments hitting the 100-item cap are flagged.
Args: start: Window start date (ISO 8601), required, inclusive end: Window end date (ISO 8601), required, inclusive (FR-39/ADR-017) room_name: Optional filter by room name format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| format | No | markdown | |
| room_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses authorization-dependent visibility, 7-day chunking, the 100-item cap flag, and output format options. This goes well beyond a minimal tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loads the purpose, followed by a concise behavioral note and a clear args list. The FR/ADR references add traceability but little practical selection value; overall it remains appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers authorization scope, segmentation, cap behavior, and all parameters, and an output schema is present so return values need not be explained. The main gap is the unresolved required-versus-default discrepancy between the description and the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains all four parameters, which is essential given 0% schema description coverage. However, it says start and end are 'required' while the schema marks them as nullable with defaults and lists zero required parameters, creating a mismatch that could confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list scheduled meetings visible to the active authorization. It also clarifies that results are not necessarily a personal calendar, which helps distinguish this tool from siblings like ktalk_list_archive or ktalk_get_room.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context about visibility scope and server-side segmentation, but it does not explicitly say when to prefer this tool over sibling tools or when not to use it. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_list_recordingsA
List available KTalk conference recordings.
Args: query: Search by title, room name, or author start_from: Start date filter (ISO 8601, e.g. 2026-03-01) start_to: End date filter (ISO 8601) top: Number of recordings per page (1-100, default 30). The API rejects values above 100 with HTTP 400. order: Sort order (byTimeNewFirst, byTimeOldFirst, byTitle, bySizeBigFirst, bySizeSmallFirst) page_token: Pagination token from previous response format: Output format — "raw" (JSON) or "markdown" (human-readable table)
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| order | No | byTimeNewFirst | |
| query | No | ||
| format | No | markdown | |
| start_to | No | ||
| page_token | No | ||
| start_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are present, the description carries the full burden. It does disclose useful behavior: pagination via 'page_token from previous response', an HTTP 400 rejection for top > 100, and the markdown vs JSON output option via the 'format' parameter. However, it does not state whether this is read-only, authentication requirements, or possible errors beyond the HTTP 400. Some behavioral context is present, but significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a single-purpose statement followed by a terse, well-structured parameter list. Every sentence adds information; no redundancy, no filler. The arg list uses clear formatting with name, type, default, and inline constraints, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (flagged true), so return-value documentation is handled externally. However, the description entirely lacks usage context: when to use it instead of ktalk_get_recording/ktalk_download_recording, whether it requires prior auth, or how pagination cycles work beyond a token mention. It also gives no hint about the returned payload (metadata vs transcripts). These omissions make it incomplete for an agent deciding when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero descriptions (0% coverage), so the description is the sole source of parameter meaning. It fully explains each of the 7 arguments with types, examples (ISO 8601 date format), allowed values (sort orders, output formats), and constraints (max page size 100). This completely compensates for the empty schema and adds operational detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific purpose: 'List available KTalk conference recordings.' The verb 'List' and resource 'conference recordings' make the operation unambiguous notification. Though the sibling tools include get and download variants, the name and first line already establish which action this covers, so no further clarification is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over its siblings (e.g., 'use for browsing metadata; use ktalk_get_recording for details'). It does not mention prerequisites, relationships to other calls, or typical filter combinations. The agent must infer usage solely from the function name and parameters, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_preview_cancel_meetingA
Preview cancellation of a single meeting (ADR-011) — zero network calls.
Does not cancel anything, ever: there is no MCP tool that does. To
actually cancel the meeting, run cancel-meeting-confirm in an
interactive terminal (CLI) with the same parameters.
Args:
id: Base64 meeting id (from create-meeting-confirm output or
calendar reads) — not resolved by name/date, not stored
reason: Optional cancellation reason (default "" — the only
confirmed working configuration, Ф-50)
format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| format | No | markdown | |
| reason | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses zero network calls, no mutation of state, no persistence of the id, and a caveat about the only reliably working `reason` value. These are exactly the behavioral traits an agent needs to know and are not inferable from the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured: a one-line core purpose, a crucial non-behavior warning, and a clear Args block. Every sentence adds operational value, and the most important caveat is front-loaded before the parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a non-mutating preview operation with three straightforward parameters and an output schema present, the description covers everything an agent needs: what it does, what it does not do, how to actually cancel, and the semantics of every parameter. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly. It explains that `id` is a Base64 meeting id from specific sources and is not resolved by name/date, that `reason` defaults to empty and is the only confirmed working value, and that `format` selects 'raw' JSON or 'markdown'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('preview cancellation') and resource ('a single meeting'), and immediately clarifies that it does not actually cancel anything. It clearly distinguishes itself from the real cancellation path (CLI) and from any sibling MCP tool by explicitly saying no MCP tool cancels meetings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when not to use this tool ('Does not cancel anything, ever') and names the exact alternative for actually canceling a meeting: `cancel-meeting-confirm` in an interactive terminal. This gives an agent unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_preview_meetingA
Preview a single meeting to be created (FR-13) — zero network calls.
Does not create anything, ever: there is no MCP tool that does. To
actually create the meeting, run create-meeting-confirm in an
interactive terminal (CLI) with the same parameters. The
confirmation_id in the output is informational for a human to
cross-check against the terminal prompt — it is not a machine-checkable
link between this call and the CLI confirmation (separate processes).
Args: subject: Meeting subject (required) start: Local ISO 8601 start time with offset (required) — converted to UTC internally (ADR-009) end: Local ISO 8601 end time with offset (required) — converted to UTC internally (ADR-009) timezone: Timezone (required — no silent default, NFR-9) room_name: Room name (required) required_attendee_keys: Numeric attendee ids as strings (not logins, ADR-009); explicit empty list is valid description: Optional description (only field with a silent default) enable_auto_recording: Whether the meeting is recorded (required, no silent default) pin_code: Room PIN code pin_code_explicit_none: True means "explicitly no PIN" (JSON null); without either signal, pin_code is required allow_anonymous: Whether unauthenticated participants may join (required) anonymous_access_expiration: Required only if allow_anonymous is True (ADR-009 §3 — no computed default) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| format | No | markdown | |
| subject | No | ||
| pin_code | No | ||
| timezone | No | ||
| room_name | No | ||
| description | No | ||
| allow_anonymous | No | ||
| enable_auto_recording | No | ||
| pin_code_explicit_none | No | ||
| required_attendee_keys | No | ||
| anonymous_access_expiration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It reveals zero network calls, no side effects, and the internal UTC conversion (ADR-009). It also explains the pin_code_explicit_none semantics and the lack of silent defaults, providing a clear picture of what the tool does and does not do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (needed for 13 parameters) but well-structured with a clear heading, a short behavioral summary, and a bulleted Args list. Information is front-loaded with the core purpose and key caveats. It is dense yet readable; every sentence earns its place. Slightly on the verbose side, but justified given the parameter count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, no annotations, external CLI dependency), the description covers purpose, usage, parameter semantics, and behavioral constraints. It even references ADRs for internal decisions and clarifies the confirmation_id's informational role. An output schema exists to cover return details, so no gap remains. A complete and self-sufficient definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning. It explains each of the 13 parameters with type, requiredness, valid patterns (e.g., ISO 8601 with offset, numeric IDs as strings), and conditional requirements (e.g., anonymous_access_expiration needed only if allow_anonymous is True). This adds far more value than the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Preview a single meeting to be created' and immediately adds the critical scoping fact that it makes zero network calls. It also states explicitly that 'Does not create anything, ever', differentiating it from any hypothetical creation tool. This is precise and disambiguates from sibling tools like preview_cancel_meeting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: it is for previewing before creation. It also names the actual creation path (`create-meeting-confirm` in an interactive terminal) and clarifies that the confirmation_id is informational, not a machine-checkable link. This tells an agent exactly when to choose this tool and when to defer to external actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ktalk_search_contactsA
Search the KTalk contacts directory to resolve a numeric attendee
key (ADR-010) — session mode only, no confirmed API-key profile.
Never auto-selects a candidate: 0 matches is a refusal, 1 match is
shown explicitly (not applied anywhere), >1 matches are listed in
full without ranking. The resolved key still has to be passed
explicitly to meeting creation (required_attendee_keys) — this tool
does not feed it there automatically.
Args: query: Free-text name/surname (not a login — unverified, ADR-010 §4) format: Output format — "raw" (JSON) or "markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it never auto-selects, it does not apply the key anywhere, it treats query as free-text (unverified), and it limits to session mode. These are critical constraints an agent needs to avoid misinvocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: purpose first, then key behavioral notes, followed by a clear args list. No superfluous sentences; every line adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown but flagged), the description doesn't need to describe return formats. It covers purpose, usage context, behavior, parameter details, and edge cases (match counts). Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero descriptions (0% coverage), so the description carries all parameter meaning. It explains that query is a free-text name/surname (not a login) and enumerates the valid format values ('raw' JSON or 'markdown'). This fully compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (search/resolve), a specific resource (contacts directory), and the exact outcome (resolving a numeric attendee key). It references ADR-010 for context and clearly distinguishes this from sibling tools by its focus on contact lookup rather than participants, recordings, or calendars.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the operational context ('session mode only, no confirmed API-key profile') and spells out the matching behavior (0 matches = refusal, 1 match shown explicitly, >1 listed without ranking). It also warns that the resolved key must still be passed manually to meeting creation, so an agent knows exactly how to use the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.10.0- Added
ktalk_auth_status - Added
ktalk_download_recording - Added
ktalk_get_chat_messages - Added
ktalk_get_participants - Added
ktalk_get_room - Added
ktalk_list_archive - Added
ktalk_list_calendar - Added
ktalk_preview_cancel_meeting - Added
ktalk_preview_meeting - Added
ktalk_search_contacts
5 tool updates
v0.4.0- First observed
ktalk_get_recording - First observed
ktalk_get_summary - First observed
ktalk_get_summary_by_type - First observed
ktalk_get_transcript - First observed
ktalk_list_recordings
TDQS
Scored across 15 tools
Most tools are clearly separated by resource and action, and the ktalk_ prefix keeps the set coherent. The only mild overlap is among recording-content tools (get_transcript vs get_summary vs get_summary_by_type) and between list_recordings/list_archive/list_calendar, but the descriptions clarify those boundaries.
The ktalk_ prefix plus a verb_object pattern is largely consistent (get_, list_, download_, search_, preview_). Minor deviations exist: ktalk_auth_status lacks a verb, and ktalk_preview_cancel_meeting is slightly awkward compared to a pattern like cancel_meeting_preview.
Fifteen tools is within the well-scoped range for a server covering recordings, meetings, rooms, contacts, and auth. Each tool addresses a distinct capability, and none feels redundant enough to remove.
The read surface is thorough, covering recordings, transcripts, summaries, participants, chat, calendar, rooms, contacts, and auth. However, the write lifecycle is essentially absent: preview_meeting and preview_cancel_meeting explicitly cannot create or cancel anything, and there are no create/update/delete tools for any resource. Agents trying to schedule, modify, or cancel meetings will hit a hard dead end.
Maintenance
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Claude makes real phone calls for you — in many languages, with transcript and outcome back in chat.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables Claude Code to search and retrieve documents from an Outline knowledge base.2-

Speak AI MCP Serverofficial
AlicenseAqualityBmaintenanceConnects Speak AI transcription and insight data to Claude and ChatGPT, enabling natural language queries for summaries, action items, and quotes from recordings.100286 npmMIT- AlicenseNot gradedqualityDmaintenanceConnects your Plaud voice recorder to Claude, giving access to recordings, transcripts, and AI summaries so you can query your notes via natural language.13MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to access your Fathom meetings, transcripts, and AI summaries.10 npm16MIT