Skip to main content
Glama

ktalk-cli

PyPI Python

CLI ktalk — интерфейс командной строки для тех, кто работает с записями видеовстреч Контур.Толк (KTalk) программно: читает записи, транскрипты и саммари, управляет расписанием, ведёт локальный реестр обработки записей на SQLite. Годится и как самостоятельный инструмент, и как предусловие плагина Claude Code ktalk — подробнее в разделе «Пакет и плагин Claude Code» ниже.

Раньше пакет назывался ktalk-mcp и, помимо CLI, поднимал MCP-сервер для Claude Code (инструменты вида ktalk_list_recordings). Этот слой снят целиком — MCP в пакете больше нет, единственная точка входа — команда ktalk. Пришли по старой ссылке или ищете ktalk-mcp — это тот же проект под новым именем, старый пакет дальше не развивается (о конфликте имени команды при апгрейде — ниже, в «Установке»).

Умеет:

  • Список записей конференций и детали одной записи.

  • Транскрипты (речь по спикерам с таймкодами, с чанкингом для длинных).

  • Саммари и протоколы встреч.

  • Полный состав участников записи (обходит лимит в 6 из списковых ответов).

  • Скачивание видеофайла записи.

  • Архив встреч и историю чата (только с персональным API-ключом).

  • Конфигурацию комнаты и календарь запланированных встреч (только с session token).

  • Предпросмотр и создание новой встречи — создание требует интерактивного терминала и явного подтверждения, см. «Планирование встречи» ниже.

  • Диагностику авторизации — какой ключ/токен активен и почему запрос не проходит.

  • Операционный реестр обработки записей на 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-cli

Related MCP server: Speak AI MCP Server

Авторизация

CLI поддерживает два способа авторизации: session token (кука браузера) и персональный API-ключ. Способы исключают друг друга: если задать обе переменные, побеждает KTALK_PERSONAL_API_KEYKTALK_SESSION_TOKEN в этом случае вообще не читается. Не задать ни один — команда завершится понятной ошибкой.

Персональный API-ключ не привязан к браузерной сессии и не протухает без предупреждения, в отличие от session token. Берите его, если нужна стабильная работа без ручного обновления, а не только разовый запрос.

Session token

Session token — токен вашей браузерной сессии Толка. Быстрый способ начать, но токен живёт недолго и протухает без предупреждения — при регулярном использовании удобнее персональный API-ключ (ниже).

Два шага. На вкладке, где вы залогинены в 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

KTALK_PERSONAL_API_KEY

режим персонального ключа, сессия дальше не читается

2

KTALK_SESSION_TOKEN (окружение или .env в рабочей директории)

заданное явно сильнее лежащего на диске

3

~/.config/ktalk-mcp/token

дефолтный путь для повседневной работы

Путь ~/.config/ktalk-mcp/token не переименован вместе с пакетом и остаётся таким намеренно: он выбран независимо от имени дистрибутива (каталог ktalk/ уже занят другим — санкцией на запись, у неё свой жизненный цикл), а смена пути молча лишила бы уже настроенные машины третьего источника авторизации.

Токен из файла обслуживает и чтение, и запись: создание и отмена встречи шлют то же значение другим транспортом (заголовок Authorization: Session, а не query-параметр) — источник значения транспорт не меняет. Санкция на запись при этом остаётся обязательной, она к токену отношения не имеет.

Файл с правами шире 0600 читается так, будто его нет (ktalk token status покажет usable: False) — секрет не должен молча читаться с диска, доступного другим пользователям машины.

Важно: session token имеет ограниченный срок жизни. Если команда возвращает ошибку авторизации, повторите те же два шага — ktalk token set - перезаписывает файл, права переставлять не нужно.

Персональный API-ключ

Персональный API-ключ выдаётся в админке Толка на конкретного пользователя на настраиваемый срок и не зависит от того, открыт ли браузер. Передаётся заголовком X-Auth-Token, а не в URL — секрет не попадает в query-параметры и логи веб-сервера.

Выпускается и ротируется в разделе Управление → API-ключи админки Толка (UI-шаг, CLI-эквивалента нет; экранные шаги здесь не расписываем — актуальный порядок действий смотрите в справке Контура: «Персональный API-ключ доступа в Толке»). Значение ключа показывается один раз в течение часа после создания — не скопировали вовремя, придётся выпускать новый.

Не путайте с ключом пространства. В Толке есть второй, отдельный ключ — пространственный, с заголовком X-API-Key, выдаётся не на пользователя, а на всё пространство целиком. ktalk-cli работает только с персональным ключом (X-Auth-Token); ключ пространства не поддерживается — переменная называется KTALK_PERSONAL_API_KEY, а не KTALK_API_KEY, намеренно, чтобы их не перепутать.

При выпуске ключа в админке выбираются права (scope). Не хватает прав — запрос вернёт 403, и по виду это неотличимо от «ключ невалиден», хотя ключ рабочий (подробнее — «Диагностика авторизации» ниже).

Право (scope)

Даёт доступ к

application.recording.read

Список записей, детали, транскрипт, саммари, скачивание файла, участники

application.reporting.read

Архив встреч, чат встречи, отчёты по участникам

application.applications.read

Опционально. Без него ktalk auth-status не покажет состав прав и срок действия ключа — только «ключ живой / не живой»

Если реестр ktalk уже накопил записи в session-режиме, перед первым ktalk sync после переключения на персональный ключ обязательно выполните ktalk sync --dry-run. Внутренний и официальный контуры API отдают идентификаторы записей по-разному, и без сверки первый боевой sync под ключом рискует задвоить весь реестр. Команда только сверяет id и ничего не пишет — см. таблицу команд реестра ниже.

Переменные окружения

export KTALK_PERSONAL_API_KEY="ваш_персональный_api_ключ"
# или
export KTALK_SESSION_TOKEN="ваш_session_token"
export KTALK_BASE_URL="https://your-domain.ktalk.ru"

Для session-режима переменная не обязательна: без неё читается файл ~/.config/ktalk-mcp/token (см. «Session token»).

Также поддерживается файл .env в рабочей директории:

KTALK_PERSONAL_API_KEY=ваш_персональный_api_ключ
KTALK_BASE_URL=https://your-domain.ktalk.ru

Диагностика авторизации

Проверьте авторизацию без запроса записей:

ktalk auth-status

Диагностика различает два случая, которые снаружи выглядят одинаково — просто ошибка, — но чинятся по-разному:

  • 401 — ключ или токен невалиден либо истёк. Перевыпустите его.

  • 403 — ключ рабочий, но конкретному запросу не хватает прав (scope). Отредактируйте права ключа в админке Толка (см. таблицу в разделе «Персональный API-ключ» выше) — перевыпускать ключ не нужно.

У session token понятия scope нет — диагностика в этом режиме пробным запросом списка записей сообщает только «токен работает / не работает», без прав и срока действия.

Режим ключа не проверен полностью на боевом окружении — команда описывает задуманное поведение, а не гарантию для любого ключа.

Команды чтения записей и справочников

Все команды поддерживают --json (валидный JSON в stdout; ошибки — в stderr с ненулевым кодом возврата).

Коды возврата

Код

Значение

0

Успех.

1

Отказ вызова — сеть, сервер, конфигурация.

2

Usage error — неверные аргументы CLI (argparse).

3

Только ktalk get-transcript. Данные получены и напечатаны полностью, но независимая сверка идентичности не сошлась (identity_check.result == "mismatch") — состав участников транскрипта разошёлся с составом записи. Это не сбой команды: код 3 отличает «данные есть, но сверка не сошлась» от 0 (сошлось или не проверялось) и от 1/2 (данных нет вовсе). Подробности — в самом теле ответа, поле identity_check (ADR-024 §Д1).

Команда

Назначение

ktalk list-recordings [--query Q] [--start-from ISO] [--start-to ISO] [--top N] [--order O] [--page-token T]

Список записей. --top 1–1000 (по умолчанию 30); --order: byTimeNewFirst (умолчание), byTimeOldFirst, byTitle, bySizeBigFirst, bySizeSmallFirst.

ktalk get-recording <recording_key>

Детали записи — автор, дата, длительность, участники (список ограничен 6, полный состав — get-participants).

ktalk get-transcript <recording_key> [--chunk N] [--chunk-size N]

Транскрипт по спикерам с таймкодами. Длинный транскрипт режется на чанки по границам реплик: --chunk 0 (умолчание) — целиком или первый чанк; --chunk-size — макс. символов в чанке (умолчание 30000, ~7500 токенов). Независимая сверка идентичности включена по умолчанию (--no-verify-identity отключает); --chunk вне диапазона сверку по сети не запускает вовсе, identity_check.result == "not_checked"/reason: "chunk_out_of_range".

ktalk get-summary <recording_key>

Полное саммари (краткое резюме + протокол).

ktalk get-summary-type <recording_key> --type shortSummary|protocol

Саммари одного типа.

ktalk get-participants <recording_key>

Полный состав участников, включая анонимных — обходит лимит в 6, который отдают get-recording/list-recordings.

ktalk download-recording <recording_key> --target PATH [--quality Q]

Скачивает видеофайл потоково, без буферизации в памяти. Существующий файл не перезаписывается; --quality не указано — берётся дефолт для записи (например 900p).

ktalk list-archive --from ISO --to ISO [--room-name N]

Архив встреч за период. Только режим персонального ключа (право application.reporting.read). Читает всё окно на клиенте, без постраничного чтения.

ktalk get-chat-messages [--recording-key K | --conference-key K] [--channel C]

Сообщения чата встречи; один из двух ключей обязателен. Только режим персонального ключа. Канал не указан — определяется автоматически.

ktalk get-room <room_name>

Конфигурация комнаты — политики аудио/видео/демонстрации, модераторы, SIP, чат, маскирование. Только режим session token. Побочный эффект: если комнаты с таким именем ещё нет, она создаётся.

ktalk list-calendar --start ISO --end ISO [--room-name N]

Встречи за окно дат, видимые активной авторизации — это не «ваш личный календарь», а всё, что видит текущая авторизация, включая чужие встречи. Только режим session token. Сервер лимитирует один запрос семью днями и сотней встреч на сегмент — команда сама режет произвольное окно на сегменты; при упоре в потолок ответ предупреждает о возможно неполной выдаче.

Планирование встречи

Создание встречи — единственная операция пакета, которая что-то меняет вне вашего компьютера: она рассылает приглашения реальным людям. Удаление созданного события эти письма не отзывает. Из-за этого создание устроено умышленно неудобно:

  • Создание — команда ktalk create-meeting-confirm. Она работает только в интерактивном терминале (проверяет, что и ввод, и вывод — реальный TTY) и перед отправкой печатает предпросмотр и требует набрать слово да.

  • Предпросмотр без создания — ktalk create-meeting-preview, не делает ни одного сетевого запроса.

  • Обе команды работают только в режиме session token — в режиме персонального ключа создание встречи не подтверждено ни разу и потому отключено.

Ни одно поле не имеет значения по умолчанию (кроме описания встречи — пустая строка, если не задано). Тема, начало, конец, часовой пояс, комната, участники, анонимный доступ, 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-code

API

CLI работает с KTalk Web API. Набор путей, которые вызывает клиент, зависит от активного режима авторизации (см. «Авторизация» выше):

  • Session-режим — авторизация query-параметром sessionToken, используется внутренний контур API.

  • Режим персонального ключа — авторизация заголовком X-Auth-Token, используются официальные пути интеграторского API (talk.public.api-api-2.json).

Транскрипт и саммари используют один и тот же путь в обоих режимах:

Эндпоинт

Описание

GET /api/recordings/{id}/transcript

Транскрипт

GET /api/recordings/v2/{id}/summary

Полное саммари (v2)

GET /api/recordings/{id}/summary/{type}

Саммари по типу

Список записей и детали записи используют разные пути в session- и api-key-режимах. Архив встреч, чат, полный состав участников, скачивание файла и диагностика ключа доступны только в режиме персонального ключа (нужные права — в таблице раздела «Персональный API-ключ» выше).

Комната, календарь и создание встречи работают только в режиме session token — в режиме персонального ключа эти операции отказывают осознанно, а не по случайному пробелу: путь на api-key либо не подтверждён вовсе, либо ведёт себя необъяснимо непоследовательно при проверке.

OpenAPI спецификация talk.public.api-api-2.json включена как справочник, но содержит расхождения с реальным API (пути, формат авторизации, структура ответов).

Реестр записей (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 sync [--days 7] [--json] [--dry-run]

Загрузить записи из KTalk, upsert новых (new), экспирировать new старше N дней → skipped, показать дашборд. Идемпотентно. --dry-run — сверить id с реестром без записи, ничего не пишет (обязателен перед первым sync в режиме персонального ключа — см. «Персональный API-ключ»).

ktalk token set <значение|->

Записать session-токен в ~/.config/ktalk-mcp/token (0600). - — прочитать из stdin: pbpaste | ktalk token set -. Значение не печатается.

ktalk token status [--json]

Есть ли файл токена, его права и маска значения.

ktalk auth-status [--json]

Диагностика активной авторизации — жив ли ключ/токен, какие права у ключа. См. «Диагностика авторизации».

ktalk dashboard [--json]

Дашборд: новые записи, статистика по статусам.

ktalk list [--status S] [--json]

Список записей с фильтром по статусу.

ktalk show <id> [--json]

Детали записи: участники, статус, пути, длительность.

ktalk mark-processing <id>

Перевести в processing.

ktalk mark-done <id> --transcript P --protocol P [--type T]

Завершить, проставить пути и processed_at.

ktalk mark-partial <id> [--transcript P] [--protocol P]

Частичная обработка.

ktalk mark-skipped <id>

Пропустить вручную.

ktalk set-vault-id <id> <ktalk_id> <vault_id>

Привязать профиль к участнику.

ktalk export [--out PATH] [--full]

Сгенерировать markdown-зеркало.

ktalk migrate <vault> [--dry-run] [--json]

Разовый импорт из 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_PERSONAL_API_KEY — см. «Авторизация»)
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 tools
ktalk_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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
qualityNo
target_pathYes
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
channelNo
recording_keyNo
conference_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
room_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
summary_typeYes
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chunkNo
formatNomarkdown
chunk_sizeNo
recording_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
to_dateYes
from_dateYes
room_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
formatNomarkdown
room_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
orderNobyTimeNewFirst
queryNo
formatNomarkdown
start_toNo
page_tokenNo
start_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
formatNomarkdown
reasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
formatNomarkdown
subjectNo
pin_codeNo
timezoneNo
room_nameNo
descriptionNo
allow_anonymousNo
enable_auto_recordingNo
pin_code_explicit_noneNo
required_attendee_keysNo
anonymous_access_expirationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. Dates show when Glama detected each change.

  1. 10 tool updatesv0.10.0
    • Addedktalk_auth_status
    • Addedktalk_download_recording
    • Addedktalk_get_chat_messages
    • Addedktalk_get_participants
    • Addedktalk_get_room
    • Addedktalk_list_archive
    • Addedktalk_list_calendar
    • Addedktalk_preview_cancel_meeting
    • Addedktalk_preview_meeting
    • Addedktalk_search_contacts
  2. 5 tool updatesv0.4.0
    • First observedktalk_get_recording
    • First observedktalk_get_summary
    • First observedktalk_get_summary_by_type
    • First observedktalk_get_transcript
    • First observedktalk_list_recordings

TDQS

A4/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness2/5

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

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mdemyanov/ktalk-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server