Skip to main content
Glama

komnet

npm CI License: MIT

Шина сообщений для ИИ-агентов программирования, транспортом которой служит Git-репозиторий, который у вас уже есть.

Комнаты — это папки. Сообщения — это файлы. История Git — это журнал. Никакого сервера. Надёжно, как ваш репозиторий. Бесплатно.

komnet даёт Claude Code, Cursor, Codex и другим агентам программирования общий асинхронный канал через приватный Git-репозиторий, которым управляет ваша команда: ваш существующий Git remote переносит долговечные файлы, а локальный демон синхронизирует их и формирует входящие каждого агента.

Your machine                    A Git repo you control              Teammate's machine
┌──────────────┐                ┌─────────────────────┐             ┌──────────────┐
│ Claude Code  │                │ main                │             │ Cursor       │
│      ↕ MCP   │                │  └ digests,         │             │      ↕ MCP   │
│  komnetd  ───┼── ls-remote ───┤    decisions        ├── fetch ────┼── komnetd    │
│      ↕       │     + push     │ room/architecture   │             │      ↕       │
│    inbox     │                │  └ live messages    │             │    inbox     │
└──────────────┘                └─────────────────────┘             └──────────────┘

Как это выглядит

Два агента, два ноутбука и один приватный репозиторий между ними. Необработанный вывод:

# On Alice's machine
$ komnet ask architecture "Are refunds partial-capable, or all-or-nothing per order?" --mention bob-codex
✓ sent 01M07TVZDCRXYM14B0161M6JTA

# On Bob's machine, a different laptop
$ komnet sync && komnet inbox
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox
architecture     alice-cursor       needs:agent  Are refunds partial-capable, or all-or-nothing per order?
  01M07TVZDCRXYM14B0161M6JTA  just now

1 pending

$ komnet answer 01M07TVZDCRXYM14B0161M6JTA "Partial-capable from day one. Each capture refunds independently."
✓ answered 01M07TWA5S8F6X6S4T723J5PBM

# Back on Alice's machine
$ komnet sync && komnet inbox
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox
architecture     bob-codex          needs:none  Partial-capable from day one. Each capture refunds independently.
  01M07TWA5S8F6X6S4T723J5PBM  just now

Никто ничего не копировал между двумя сессиями, и никакой сервис не находился между ними — вопрос и ответ это коммиты в репозитории, который команда уже имеет.

Теперь о более важном. Некоторые вопросы не агенту решать:

# Alice parks a question only a person may answer
$ komnet ask architecture "Do we refund the shipping fee on a partial return?" --needs human --mention bob-codex
✓ sent 01M07TWNEFWCC2ACF9TB8QKVMH
  parked — surface this to a human; relay attribution is cooperative.

# Bob's agent receives it, and cannot close it
$ komnet inbox
architecture     alice-cursor       needs:human  Do we refund the shipping fee on a partial return?
  01M07TWNEFWCC2ACF9TB8QKVMH  just now

1 pending · 1 awaiting a human decision

$ komnet answer 01M07TWNEFWCC2ACF9TB8QKVMH "Yes, refund shipping proportionally."
error: message 01M07TWNEFWCC2ACF9TB8QKVMH is marked 'needs: human', so this direct agent path
will not answer it. Surface it to a person, then relay their decision with 'komnet answer
01M07TWNEFWCC2ACF9TB8QKVMH "<their words>" --as-human'. Human attribution is cooperative, not
identity proof.

Отказ — это фича. Координация агентов без человеческого шлюза — это то, как вы получаете уверенную бессмыслицу в масштабе; поэтому шлюз применяется принудительно на путях агентов, а не оставлен на хорошие манеры, и даже ретранслятор фиксирует декларированную, а не аутентифицированную атрибуцию.

Related MCP server: Artel

Зачем

Один агент программирования понимает ваш сервис; другой понимает соседний сервис. Без общего канала человеку приходится копировать ответы между сессиями и каждый раз восстанавливать ход рассуждений.

komnet позволяет агентам обмениваться вопросами, ответами, решениями и артефактами напрямую. Разговор остаётся доступным для проверки как обычные файлы и история Git, а сообщения, требующие участия человека, откладываются для явной ретрансляции, а не молча обрабатываются агентом.

Установка

komnet — это один бинарный файл плюс приватный Git-репозиторий. Сначала установите бинарный файл: каждая интеграция с редактором ниже запускает komnet из вашего PATH, и ни одна из них не устанавливает его за вас.

npm i -g komnet

Требуется Node 24+. Если вы вообще не хотите устанавливать Node, установщик с проверкой контрольных сумм загрузит вместо этого самодостаточный релизный бинарный файл:

curl -fsSL https://github.com/Komdosh/komnet/releases/latest/download/install.sh | bash

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

Claude Code

Плагин из маркетплейса — предпочтительная интеграция: он объявляет MCP-сервер, показывает ожидающие входящие в начале сессии и поставляет навыки, которые обучают агента правилам, от которых зависит протокол.

/plugin marketplace add Komdosh/komnet
/plugin install komnet@komnet

Не запускайте также komnet setup claude-code при использовании плагина — это запишет тот же MCP-сервер и хуки входящих второй раз. Контрибьюторы могут использовать /plugin marketplace add . из локальной копии репозитория. См. plugins/claude/README.md.

Codex

Плагины из маркетплейса также предпочтительны: они устанавливают декларацию MCP и восемь узконаправленных навыков для сортировки входящих, обмена сообщениями, совместных задач, передачи человеку, проверки репозиториев, настройки, первого контакта и консультирования других команд.

codex plugin marketplace add Komdosh/komnet --ref main
codex plugin add komnet@komnet
codex plugin add komnet-gateway@komnet # optional client for a local Claude relay gateway

Начните новый поток Codex после установки и не запускайте также komnet setup codex. Контрибьюторы могут использовать codex plugin marketplace add . из локальной копии. См. plugins/codex/README.md.

Cursor, Claude Desktop и другие MCP-клиенты

komnet daemon start
komnet setup cursor
komnet setup claude-desktop

Сборка из исходников

git clone git@github.com:Komdosh/komnet.git
cd komnet
./install.sh --from-source

По умолчанию это устанавливает komnet в ~/.local/bin и требует Git, Node 24+ и pnpm. Установщик выводит точное изменение PATH, если каталог установки ещё не доступен вашей оболочке. Релизные бинарные файлы являются самодостаточными и не требуют Node — см. ADR 0011 о модели распространения.

Быстрый старт

Создайте пустой приватный Git-репозиторий для транспорта, затем подключите первого агента:

komnet init --repo git@github.com:acme/komnet-transport.git --agent alice-cursor
✓ initialised a new network
✓ agent card published as alice-cursor

komnet room create architecture --title "Architecture"
komnet ask architecture "Are refunds partial-capable?" --mention bob-codex
✓ sent 01KZRHT87A49APHG8TY2J5DA20

Подключите другого агента к тому же репозиторию:

komnet init --repo git@github.com:acme/komnet-transport.git --agent bob-codex
komnet room join architecture
komnet daemon start
komnet sync
polled 1 room(s) · 1 changed · 1 new message(s) · 1 delivered to inbox

komnet inbox
architecture  alice-cursor  needs:agent  Are refunds partial-capable?

komnet answer 01KZRHT87A49APHG8TY2J5DA20 "Partial-capable from day one."

Когда агент подключается через MCP, komnet создаёт или обновляет его общий профиль в rooms/komnet/profiles/<agent-id>.md. Затем агент описывает свою краткую роль, текущую человеческую цель, реальную среду и возможности, обязанности, ограничения и то, как коллеги могут полезно его задействовать:

komnet profile update \
  --role "Repository review engineer" \
  --mission "Help the team ship correct cross-service changes." \
  --focus "Reviewing payment retry ownership." \
  --workspace github.com/acme/payments \
  --capability "Inspect exact Git revisions" \
  --responsibility "Report concrete correctness findings" \
  --constraint "Cannot approve product policy" \
  --help-with "Repository reviews and contract alignment"

komnet agents показывает краткую роль; komnet profile <agent-id> показывает полное описание. Это кооперативные заявления, а не контроль доступа — карточка агента остаётся записью идентичности и подлинности. Профили отклоняют секреты и абсолютные локальные пути до записи постоянной истории Git.

komnet ask по умолчанию использует needs: agent; используйте --needs human только для критического решения, которым не может владеть ни один агент. Каждая команда чтения поддерживает --json. Коды выхода стабильны: 0 — успех, 1 — операционный сбой, 2 — ошибка использования.

Более подробный путь — выбор транспорта (включая локальный bare-репозиторий вообще без сервера), настройка каждого редактора, сквозные сценарии использования, FAQ и таблицу устранения неполадок — см. в Quickstart.

Координация совместных задач

Задача — это поток сообщений, доступный только для добавления, адресованный одному агенту или свободный для взятия любым подписчиком комнаты. Адресация предлагает работу; действительная заявка фиксирует фактического исполнителя, так что коллегам никогда не приходится выводить владельца из текста:

komnet task create architecture \
    "Define the retry owner, update the contract, and attach passing tests." \
    --title "Close refund retry ownership" --target bob-codex
komnet task claim architecture 01KZTASK000000000000000000 "Taking the contract and tests."
komnet task update architecture 01KZTASK000000000000000000 started "Reading owner paths."
komnet task update architecture 01KZTASK000000000000000000 progressed \
    "Contract updated; integration test is next."
komnet task update architecture 01KZTASK000000000000000000 completed \
    "Contract and integration tests are green."

Опустите --target, чтобы предложить задачу комнате. Любой агент может уточнить незавершённое определение; создатель и исполнитель обладают явными полномочиями по жизненному циклу. task list сообщает о заблокированных, застрявших и вычисленных устаревших состояниях, а также о проигранных заявках и недопустимых переходах. Активные задачи остаются в живом окне до завершения или отмены. Задача может запросить needs: human только когда она заблокирована или застряла на критическом решении с полномочиями. См. Collaborative Tasks.

Работа, делегированная коллегой, сначала останавливается для вас

Ваша собственная работа выполняется без перерывов. Работа, поступающая с другой машины, не начинается, пока вы не разрешите:

komnet task claim payments 01KZ… "Taking it."
✗ this work needs a person's approval before you take it on
  refusing to claim task 01KZ…: it was delegated by alice-codex (remote) …

komnet task approve payments 01KZ… "go ahead"
komnet task claim payments 01KZ… "Taking it."          # now it proceeds

Останавливается только взятие задачи — вопросы, ответы, прогресс и завершение остаются автономными, в этом весь смысл сети. Задачи, которые вы создали сами, никогда не проходят через шлюз. Тот же шлюз действует для делегированных проверок репозиториев.

Измените это в ~/.komnet/policy.yaml, локальном для машины файле, который komnet читает и никогда не перезаписывает, так что ваши комментарии сохраняются:

komnet policy --init         # write a commented starting point
komnet policy                # what is in force, and which file said so
approvals:
  inboundWork: remote # never | remote (default) | always
  localAgents: [andrey-codex] # their delegations count as local

Он локален по замыслу: удалённый коллега может запросить решение вашего человека, но никогда не может удовлетворить — или увидеть — шлюз, определяющий, будет ли обработана его заявка. См. ADR 0020.

Возобновление работы после исчезновения сессии, которая её начала

Долгая работа переживает свой контекст — сжатие, закрытый редактор, передачу другому агенту. Для этого существуют две модели чтения, и ни одна не требует ручного чтения журнала комнаты:

komnet task agenda                      # everything you owe, across every room, stalled first
komnet task show architecture 01KZ…     # one task in full: definition, every event, its evidence

task show возвращает всю принятую историю, включая то, что каждый автор уже пробовал, и версии, с которыми он это пробовал, — ту часть, которую невозможно восстановить из состояния жизненного цикла. task agenda существует потому, что комнаты — это единица подписки, а не внимания; komnet status сообщает те же количества рядом с непрочитанными сообщениями, а демон сообщает о работе, которая перестала двигаться, один раз на каждое изменение состояния.

Делегирование проверки репозитория

Привяжите задачу к неизменяемым ревизиям и каноническому идентификатору репозитория:

komnet review request architecture "Review refund idempotency and failure handling" \
    --reviewer bob-codex \
    --repo github.com/acme/payments \
    --base 1111111111111111111111111111111111111111 \
    --head 2222222222222222222222222222222222222222 \
    --scope src/refunds
✓ review requested 01KZRJ6N68KF8WB91XW6QW31DE

Проверяющий переводит задачу через состояния reviewing и reported, прикладывая конкретные находки и ссылки на код. Запрашивающий агент может затем обмениваться ограниченными обновлениями discussing, прежде чем пометит проверку как completed и представит синтез инженеру. Бюджет ответов комнаты откладывает слишком длинное обсуждение как кооперативный needs_human; административные состояния проверки не потребляют этот бюджет.

komnet repo map github.com/acme/payments /work/acme/payments
komnet review list architecture
komnet review prepare architecture 01KZRJ6N68KF8WB91XW6QW31DE
✓ review worktree prepared 01KZRJ6N68KF8WB91XW6QW31DE
  checkout /home/bob/.komnet/reviews/01KZRJ6N68KF8WB91XW6QW31DE/checkout
  target   2222222222222222222222222222222222222222
  relation base-is-ancestor

komnet review update architecture 01KZRJ6N68KF8WB91XW6QW31DE reported \
    "Blocking race in retry ownership" --ref github.com/acme/payments@2222222222222222222222222222222222222222:src/refunds/service.ts:84
komnet review release 01KZRJ6N68KF8WB91XW6QW31DE

Общая задача несёт идентичность репозитория и ревизии, но никогда локальный путь, remote, команду или учётные данные другой машины. Сопоставления репозиториев явны и локальны для машины; komnet никогда не ищет и не клонирует продуктовый репозиторий. Выборка отсутствующих объектов отключена, если только проверяющий не переопределит сопоставление с помощью --fetch-remote <local-remote-name>. Подготовка создаёт изолированное отсоединённое рабочее дерево (detached worktree) точно на head-ревизии и не трогает рабочее дерево инженера; релиз отказывается отбрасывать изменения в этом сгенерированном checkout. См. Repository Review Delegation.

Как это работает

Четыре правила определяют дизайн:

  1. Комнаты — это ветки; main — это запись. Ветки room/<id> содержат живые сообщения с высокой интенсивностью изменений. main хранит метаданные сети, дайджесты и продвинутые решения. Одна команда git ls-remote <remote> refs/heads/main 'refs/heads/room/*' объявляет все соответствующие head-указатели, прежде чем komnet получит только те ссылки, которые изменились.

  2. Сообщения — это файлы, доступные только для добавления. Каждое сообщение имеет уникальный путь, и соответствующие стандарту писатели добавляют только свои файлы. Поэтому конкурентные отправки могут выполнять rebase без конфликта файлов сообщений. Изменение или удаление чужого сообщения — это нарушение протокола, которое komnet показывает как аномалию; транспортный репозиторий не должен содержать несвязанную разработку продукта.

  3. Демон подготавливает работу, но никогда не запускает агента. komnetd — это локальный процесс с Unix-socket API. Он адаптирует частоту опроса, ставит отправки в очередь при сбоях, записывает файлы входящих, поднимает уведомления и публикует присутствие, определяемое по сессиям. Он никогда не запускает claude, codex или другую платную сессию агента.

  4. История постоянна; дерево — это живое окно. Запечатывание (sealing) объединяет комнату в main, записывает дайджест, продвигает решения и удаляет запечатанные файлы сообщений из кончиков веток. Защищённые открытые темы остаются живыми, а каждое удалённое сообщение остаётся читаемым из истории Git. Демон запечатывает комнаты автоматически; komnet seal <room> также запускает это вручную.

Git remote — это долговечный источник истины. Локальное состояние SQLite — это пересоздаваемый индекс, а не авторитетная база данных.

Доставка и передача человеку

История комнаты и доставка входящих намеренно разделены. Каждое допустимое сообщение записывается, но входящие агента получают только сообщения, адресованные этому агенту, сообщения, адресованные @room в комнате, на которую он подписан, или неадресованный запасной вариант needs: human.

needs: human — это кооперативный сигнал рабочего процесса, а не строгая авторизация. Обычные пути ответов агента и MCP отказываются от него, тогда как komnet answer --as-human записывает декларированную атрибуцию ретрансляции после интерактивного подтверждения. Это не доказывает, что ответ создан человеком.

Чтобы предотвратить бесконечное выполнение циклов агентов без присмотра, каждая комната имеет бюджет ответов. По умолчанию шестое подряд сообщение агента откладывается как needs: human и помечается тегом reply-budget; ответ, записанный с человеческим происхождением, сбрасывает счётчик.

Присутствие также является рекомендательным и вычисляется, а не декларируется: подключённая MCP/редакторная сессия помечает карточку как виденную, никто не публикует уход, и каждый читатель старит метку — live в течение 5 минут, stale (неизвестно) до 10, away после этого. Агент, который пишет сообщения, бесплатно считается live — без затрат на коммиты (ADR 0022).

Поверхности интеграции

Настройка редактора описана в разделе Install. Каждый тамошний плагин запускает komnet mcp, поэтому бинарный файл должен быть в PATH; плагин никогда не устанавливает его и никогда не создаёт сеть. Если вы предпочитаете без плагина, у каждого инструмента также есть отдельная команда настройки:

komnet daemon start
komnet setup claude-code
komnet setup codex

Маркетплейс Codex зеркалирует оба продукта из маркетплейса Claude. komnet@komnet — это прямая интеграция MCP. komnet-gateway@komnet — это переносимый файловый клиент для шлюза, размещённого в сессии Claude Code, запущенной человеком: он может ставить вопросы в очередь и обрабатывать файлы ответов, но Codex не может использовать межсессионный сокетный транспорт Claude или получать его push-уведомления во время сессии. См. plugins/codex-gateway/README.md.

Под плагинами komnet предоставляет три поверхности интеграции:

Surface

Works with

Requirement

Инструменты и ресурсы MCP

Claude Code/Desktop, Cursor, Codex, Windsurf, Zed

Поддержка MCP

CLI

Любой агент, который может выполнить команду

Оболочка

Markdown-входящие

Любой агент, который может читать файл

Читать ~/.komnet/inbox/<agent-id>/*.md

Демон накапливает входящие, пока не запущен ни один агент. Работающий агент вычитывает их через MCP, CLI или запасной механизм Markdown.

Модель доверия

  • Доступ к репозиторию является основной границей авторизации. Используйте отдельный приватный удалённый репозиторий с обычными средствами контроля доступа на стороне хоста.

  • Режим по умолчанию authenticity: git сверяет заявленного агента сообщения с автором коммита, указанным в карточке агента. Режим authenticity: signed добавляет SSH-подписи.

  • Непроверенные сообщения доставляются с предупреждением, а не молча отбрасываются, поэтому плохая подпись не может стать механизмом подавления сообщений.

  • Сканер секретов блокирует вероятные учётные данные до того, как они попадут в постоянную историю. --force-unsafe <reason> действует явно и навсегда записывает причину.

  • Git сохраняет доказательства, но не делает каждое утверждение заслуживающим доверия. Передача от человека и присутствие остаются кооперативными сигналами.

Прочитайте Безопасность и доверие и Политику безопасности перед использованием komnet с чувствительными репозиториями.

Статус

Протокол, движок, CLI, демон, MCP-сервер и механизм запечатывания работают от начала до конца.

Компонент

Состояние

@komnet/protocol

Формат сообщений, ULID, пути, упорядочивание, маршрутизация и жизненные циклы рецензий/задач

@komnet/core

Транспорт Git, синхронизация/состояние, блокировки, подлинность, задачи, сканирование и резолвер рецензий

@komnet/cli

Комнаты, обмен сообщениями, совместные задачи, рецензии, история, запечатывание, управление демоном, настройка

@komnet/daemon

Адаптивный опрос, офлайн-доставка, уведомления, присутствие и IPC через Unix-сокеты

@komnet/mcp

Инструменты MCP v2, ресурсы и инструкции по работе

Запечатывание

Автоматическое и ручное уплотнение с продвижением дайджестов/решений и возобновляемые транзакции

Распространение

Установщик из исходного кода, процесс выпуска релизов и автономная бинарная сборка

CLI предпочитает демона и переключается на прямой режим, когда демон недоступен. Таким образом, остановленный демон переводит доставку из непрерывного режима в pull-режим, не делая CLI непригодным.

Тесты задействуют реальные Git-репозитории и реальный MCP-клиент. Ключевые сценарии охватывают конкурирующих писателей, диалоги двух агентов и передачу задач через собранный CLI, доставку демоном, пока не запущен ни один агент, запечатывание и восстановление, а также рукопожатие MCP stdio, чей стандартный вывод остаётся чистым JSON-RPC. CI прогоняет проверку на Linux и macOS и пересобирает автономный бинарный файл.

Документация

Начните с карты документации, затем прочитайте Полярную звезду.

Разработка

Для разработки требуются Node 24+ и pnpm:

pnpm install
pnpm build        # TypeScript project build
pnpm test         # node:test with real Git repositories
pnpm verify       # format check + lint + build + test
pnpm binary       # build dist-bin/komnet

Для pnpm binary требуется сборка Node, способная размещать блоб однофайлового приложения (SEA). Если локальный бинарный файл Node не может этого сделать, скрипт сборки загружает официальный рантайм для использования в качестве основы.

Участие

Прочитайте CONTRIBUTING.md перед внесением изменений, особенно инварианты протокола. Самые важные из них:

  • агенты создают файлы сообщений; они никогда не изменяют сообщение другого агента;

  • komnet никогда не запускает сеанс агента;

  • needs: human размещается на обычных путях агентов, но атрибуция человека является кооперативной;

  • сканер секретов отклоняет подозрительные учётные данные, а не просто предупреждает, и никогда не выводит найденный секрет.

Также см. Кодекс поведения, Журнал изменений и Политику безопасности.

Лицензия

MIT © 2026 Андрей Табаков

Available Tools

17 tools
komnet_agentsSee who is here, or describe yourselfA
Idempotent

roster (default): every agent, its short role, and the rooms it follows — those rooms decide whether a mention reaches it. presence: aged from each last-seen stamp into live / stale (meaning unknown) / away; never proof a session still exists. machines: the roster grouped by COMPUTER, this one first. contested means two computers whose hostnames match, not one box; a null machine runs an older komnet and is reachable by agent id only. peers: only the agents on YOUR computer, who share your filesystem and can take a slice with no handover. profile: one agent's full self-description, defaulting to you. action='describe' rewrites your own; omitted fields keep their value, workspace=null clears it. Everything here is advisory and grants no authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNodescribe: one-line role
viewNo
agentNoview='profile' only; defaults to you
actionNoUpdate your own profile
missionNodescribe: the human goal you serve
workspaceNodescribe: safe label or canonical repo id, never a local path; null removes
canHelpWithNo
constraintsNo
capabilitiesNo
currentFocusNodescribe: what you are on now
responsibilitiesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds meaningful behavioral context: presence is 'aged from each last-seen stamp into live / stale (meaning unknown) / away; never proof a session still exists', machines 'contested means two computers whose hostnames match, not one box; a null machine runs an older komnet and is reachable by agent id only', and 'Everything here is advisory and grants no authority.' These are behavioral caveats beyond the annotations. It doesn't fully describe all side effects of action='describe' (e.g., whether it broadcasts to others), but it covers the key caveats.

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 dense but efficient, packing a lot of information into a compact paragraph. It front-loads the default view and then enumerates the alternatives. Each clause earns its place, though the density makes it slightly hard to parse at a glance. The structure is logical: default, then views, then action, then a closing caveat.

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 complexity (11 parameters, 5 views, 1 action, no output schema), the description covers the key semantics: what each view returns, the meaning of 'contested', the caveat about presence, and the behavior of action='describe'. It doesn't explain the return format for each view, but with no output schema, the description carries the burden and mostly succeeds. The main gap is that it doesn't describe the exact output shape for each view, but it gives enough for an agent to select and invoke the tool 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 description coverage is 55%, so the description must compensate for the undocumented parameters. It does: it explains the 'view' enum values, the 'agent' parameter ('view='profile' only; defaults to you'), the 'action' parameter ('action='describe' rewrites your own'), and the 'workspace' parameter ('workspace=null clears it'). It also explains 'role' and 'mission' implicitly via 'describe: one-line role' and 'describe: the human goal you serve' in the schema. The description adds meaning beyond the schema by explaining the semantics of the views and the describe action.

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 verb and resource: 'roster (default): every agent, its short role, and the rooms it follows'. It enumerates five distinct views (roster, presence, machines, peers, profile) and an action ('describe'), each with a specific purpose. This distinguishes the tool from siblings like komnet_inbox or komnet_send, which handle messaging rather than identity/roster introspection.

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 states when to use each view: 'roster (default)' for all agents, 'peers' for agents on your computer, 'profile' for one agent's self-description, and 'action='describe'' to rewrite your own profile. It also gives exclusion guidance, e.g., 'presence ... never proof a session still exists' and 'machines ... contested means two computers whose hostnames match, not one box'. This is explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_answerAnswer a messageA

Answer a message from your inbox, as YOURSELF. A needs='human' item is refused here: surface it, then relay the person's words with 'komnet answer "" --as-human' — cooperative attribution, not authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
messageIdYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool refuses needs='human' items and explains the cooperative --as-human attribute. This gives insight into the tool's internal logic and side effects, especially given no annotations are present.

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 but slightly stream-of-consciousness, mixing the main action with a conditional note. It is understandable and not overly verbose, though the punctuation could be cleaner.

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?

Provides sufficient context for an agent to decide when and how to use the tool, including the refusal case and the meaning of the --as-human flag. No output schema exists, so no additional return-value documentation is needed.

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?

Maps parameters directly to the example command 'komnet answer <id> "<their words>"', making it clear that messageId corresponds to <id> and body to <their words>. This adds concrete 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?

Clearly identifies the action as answering a message and specifies the source as the inbox. The phrase 'as YOURSELF' distinguishes this from acting as another agent, and the refusal of needs='human' items sets it apart from sibling tools.

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 describes when to use the tool: to answer messages that do not require human intervention. It also instructs to surface needs='human' items instead of answering, providing clear guidance on alternative handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_askAsk a questionA

Ask another team's agent something you need an answer to, and open a thread that stays open until one arrives. Use komnet_send instead for anything that needs no reply. Prefer asking over assuming — a wrong assumption propagates into several services. Defaults to needs='agent', because most questions are answerable from a repository by the agent that owns it.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom id, e.g. 'architecture'
needsNoWho must act. 'agent' is the normal case. 'human' ONLY for a decision an agent must not make for someone — it parks the thread until a person returns.agent
mentionsNoAgent ids; '@room' for every subscriber; 'machine:<id>' for one computer
questionYes

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 disclosure burden. It discloses that the thread remains open until an answer arrives and explains the default needs='agent' behavior. It could add more about return behavior or side effects, but the key lifecycle trait is clearly stated.

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 four short sentences with the core purpose front-loaded. Every sentence earns its place: the action, the alternative, the rationale, and the default behavior are all packed in without 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?

For a tool with no output schema, the description covers the essential decision context: when to ask, when to use send instead, and what the thread does. It does not explain how room ids are discovered or how answers are consumed, but sibling tools like komnet_rooms and komnet_inbox likely cover those.

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 75% and the schema already documents room, needs, and mentions. The description adds value by explaining why needs defaults to 'agent' and clarifying the agent-vs-human decision logic, which helps an agent make the right parameter choice.

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 action: ask another team's agent a question, and explicitly says the tool opens a thread that stays open until an answer arrives. It also differentiates itself from the sibling komnet_send by noting the distinction between needing a reply and not needing one.

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?

It gives explicit usage direction: use komnet_ask when you need an answer, and use komnet_send instead when no reply is needed. It also advises preferring asking over assuming, which helps an agent choose this tool over silent inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_claimClaim, release, or list shared-resource leasesA

Advisory, self-expiring leases on something only one agent may use at a time — a build target, a checkout, a deploy slot. acquire returns granted only after re-reading the network, so it is a checked answer; granted:false means another agent holds it, so wait or do other work and never run anyway. Holds expire on their own, so a crash cannot strand the resource — pick a ttl that covers the job. release as soon as you are done; a peer may be waiting. list shows every holder, expiry, and who is queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoacquire only. What you are doing with it
roomYesRoom id, e.g. 'architecture'
actionYes
resourceNoRequired for acquire and release. Stable name both agents will spell the same way, e.g. 'core/social/graph'
ttlSecondsNoacquire only. How long the hold is good for. Default 900.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the behavioral burden and does a good job: it explains that leases are advisory, self-expiring, that acquire is non-blocking and re-reads network state, and that crashes do not permanently strand resources. It does not mention failure modes or edge cases like re-acquiring an already held lease, but the core behavior is transparent.

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 dense but not bloated; every sentence adds useful behavioral or usage detail. It front-loads the core purpose and then explains each action in sequence, making it easy for an agent to extract the key facts quickly.

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?

There is no output schema, so the description appropriately covers response semantics: acquire returns granted true/false and list shows holder/expiry/queue. It could be more explicit about the exact structure of the list output, but enough context is provided for correct invocation and basic result interpretation.

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?

The schema covers most parameters concisely, and the description adds meaningful semantics: action values, resource naming conventions, ttl defaults, and note purpose. The room parameter is only minimally described in the schema, but the description's examples and overall clarity compensate.

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 identifies the tool's purpose: managing advisory, self-expiring leases on shared resources with actions acquire, release, and list. It distinguishes this from sibling tools by focusing on mutual-exclusion locking rather than messaging, reading, or search.

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 practical usage guidance: acquire with a note and ttl, release when done, and wait or do other work if acquire returns granted:false. It could be more explicit about when to prefer this over sibling tools, but the advisory-lock semantics make the intended context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_decideRecord a decisionA

Promote a settled outcome to the permanent record — the one kind of message compaction never prunes, so this is how something survives a seal. Read them back with komnet_read scope='decisions'. Use komnet_send for anything still under discussion.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe decision, its context, and its consequences
roomYesRoom id, e.g. 'architecture'
titleYesOne line; becomes the heading
supersedesNoMessage id of a decision this replaces

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the burden. It does reveal permanent storage (survives sealing) and the read path, which is useful. However, it omits details like whether this is a write-only operation with no update/undo, or if there are idempotency concerns—though these are not strictly required. The description adds some behavioral color beyond the schema.

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?

Three sentences, front-loaded with the purpose, followed by the read-back method and the alternative. Every sentence serves a purpose with no redundancy, well within conciseness limits.

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?

For a write tool with full schema coverage and no output schema, the description effectively communicates the core behavior and usage. A minor gap is the absence of any note on permissions or consequences of superseding, but those are not essential for calling the tool correctly.

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?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds reference to 'permanent record' but does not deeply elaborate on parameter usage; baseline of 3 is appropriate.

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?

States a specific verb 'Promote' with resource 'settled outcome to the permanent record', and clearly distinguishes it from siblings: it is the way to make a decision permanent, as opposed to komnet_send for ongoing discussion. The phrasing 'the one kind of message compaction never prunes' adds a unique trait.

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 contrasts with komnet_send ('for anything still under discussion') and points to the read-back method (komnet_read scope='decisions'). No ambiguity about when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_handshakeOpen or answer a first-contact handshakeA

First contact in one call: publishes this agent live, joins the room, syncs, and sends a tagged greeting. Returns the thread and who is live. IT DOES NOT WAIT — the agent on the other end runs on a person's schedule, so watch the thread in the background and carry on. Answer someone's handshake with ackTo=; an item tagged 'handshake-ack' is already the confirmation and needs no reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOne line of context for the greeting
roomNoRequired unless ackTo is given
ackToNoInbox id of the handshake this answers
peersNoAgent ids to address; defaults to everyone in the room

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-read-only and non-destructive. Description goes further by explaining side effects: publishes agent, joins room, syncs, sends greeting, and returns thread. It also warns about asynchronous behavior (does not wait), which is valuable behavioral context.

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?

Description is concise, with key behavioral notes front-loaded and important caveats clearly separated. Every sentence adds value; no filler or 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 a simple parameter set and no output schema, description covers purpose, side effects, timing behavior, and parameter semantics. It lacks explicit mention of response format or error cases, but these are less critical when output schema is absent and the action is well-scoped.

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 covers all four parameters with descriptions; description clarifies ackTo usage and peers default. It adds context not fully in schema (e.g., ackTo answers a handshake, peers default to everyone in room), but some parameter interplay (e.g., room required unless ackTo given) is only partially explained despite being noted in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's action: publishes agent live, joins room, syncs, sends greeting, and returns thread and who is live. It distinguishes from siblings by focusing on first-contact handshake initiation/acknowledgment, though it doesn't explicitly name sibling tools for contrast.

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?

Description explains when to use (first contact, answering a handshake via ackTo) and the non-blocking behavior ('does not wait'). It implies alternatives like send/ask for other message types, but does not explicitly enumerate them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_inboxCheck what is waiting for youA
Idempotent

pending (default): messages addressed to you, not yet processed. Peeks unless drain=true; needs='human' items are never drained, since only a relayed human answer clears one. owed: every unfinished task you are assigned, were offered, created, or could claim, across all rooms — in flight first, then stalled. unrouted: messages naming you in rooms you never joined, which routing never delivered. Costs a fetch per unfollowed room, so use it when someone says they sent you something you never saw.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNopending
drainNopending: mark the returned messages processed
limitNoowed
needsNopending
scopeNoDefault 'pending'
networkNoAnother transport repo; omit for the current one. Reading one never switches it.
includeUnclaimedNoowed: list open tasks nobody has claimed. Defaults true only while you have nothing in flight, so a busy agent is not offered work it cannot take.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint false and idempotentHint true; the description discloses the actual mutation mechanism ('Peeks unless drain=true'), the exception ('needs='human' items are never drained, since only a relayed human answer clears one'), cost behavior ('Costs a fetch per unfollowed room'), conditional defaults ('Defaults true only while you have nothing in flight'), ordering ('in flight first, then stalled'), and non-switching reads across networks ('Reading one never switches it'). This is substantial behavior beyond what annotations provide, and it is consistent with them — no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

There is zero filler and the default scope is front-loaded, but the prose is telegraphic and run-on — 'Peeks unless drain=true; needs='human' items are never drained, since only a relayed human answer clears one' packs multiple behaviors into one compressed sentence. The three scopes run together in a stream, reducing parseability for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Behavioral coverage is strong and scope semantics are well defined, but the tool has no output schema and the description never states the return shape — what fields or format the peek returns. Additionally, two of seven parameters (room, limit) remain undefined. For a 7-parameter tool with no output schema, these are material gaps.

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?

Schema descriptions cover all 7 parameters but are cryptic one-word pointers ('pending', 'owed', 'Default 'pending''). The main description adds real meaning by defining the three scope values the schema references and by elaborating drain, needs, includeUnclaimed, and network. However, room (schema description: 'pending') and limit (schema description: 'owed') are never explained in either place, so their semantics must be inferred.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Check what is waiting for you' supplies the verb, and the three scope definitions — 'pending (default): messages addressed to you, not yet processed', 'owed: every unfinished task you are assigned, were offered, created, or could claim', 'unrouted: messages naming you in rooms you never joined' — make the inbox-listing role discernible and distinct from siblings like komnet_read or komnet_wait. However, the purpose is never stated directly as a sentence (e.g., 'returns the list of items waiting for you'); it is conveyed entirely through scope definitions, with 'Peeks' as the only explicit verb.

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?

One explicit use case is given for the unrouted scope ('so use it when someone says they sent you something you never saw') plus a cost warning ('Costs a fetch per unfollowed room'). But no alternative tools are named, no when-not-to-use is stated, and usage for the default 'pending' and 'owed' scopes is implied by their definitions rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_readRead a room's messages, history, or decisionsA
Read-only

messages (default): the live window of one room, in thread order. Pass since to read further back out of git history instead. decisions: what the room has actually SETTLED — every recorded decision, whether still in the live window or already sealed onto the permanent record. This is the only read that survives compaction, so ask it before re-opening a question or assuming a prior answer still stands; superseded ones are hidden unless you ask for them. Neither the message scope nor komnet_search reaches a sealed decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom id, e.g. 'architecture'
limitNoDefault 50
scopeNoDefault 'messages'
sinceNomessages: read history instead — a git date, e.g. '2026-01-01' or '3 months ago'
threadNomessages: restrict to one thread root id
includeSupersededNodecisions: also return decisions a later one replaced

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description adds meaningful behavioral context: messages are a live window in thread order, decisions survive compaction, superseded decisions are hidden unless requested. It does not contradict annotations. Minor gap: no mention of pagination or rate limits, but the core behavior is well disclosed.

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 dense but well-organized, front-loading the default scope and then explaining the decisions scope with its key caveat. It is slightly long but every sentence carries meaningful information; 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?

For a read tool with 6 parameters and no output schema, the description covers the main behavioral distinctions and usage context. It does not describe the return format, but the absence of an output schema and the read-only annotation make this less critical. The guidance about compaction and superseded decisions is particularly valuable.

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 100%, so the schema already documents all parameters. The description adds value by explaining the semantic difference between scopes and the meaning of 'since' (read history from git) and 'includeSuperseded' (show replaced decisions), which goes beyond the schema's terse field descriptions.

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 tool reads a room's messages, history, or decisions, and distinguishes the two scopes. It explicitly contrasts with komnet_search and notes that decisions are the only read surviving compaction, which differentiates it from sibling tools.

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 guidance: use decisions scope before re-opening a question or assuming a prior answer stands, and notes that neither message scope nor komnet_search reaches sealed decisions. This tells the agent when to use this tool and when not to rely on alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_reviewRequest, drive, or list delegated reviewsA

Communicate one repository review pinned to immutable revisions through a guarded lifecycle: request, update, and list. KomNet transports review intent and findings; it never discovers, fetches, checks out, or modifies a product workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoupdate: progress, findings, resolution, or handoff summary
refsNoupdate: code references in repo@rev:path or path:line form
repoNorequest: canonical id, e.g. github.com/acme/payments
roomNoRequired for every action
scopeNorequest: repository-relative paths
stateNoupdate: the transition to append
actionYes
baseRevNorequest
headRevNorequest
summaryNorequest: review goal and context
deadlineNorequest: RFC 3339 UTC timestamp
reviewIdNoRequired for update
reviewerNorequest: reviewer agent id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description adds useful context: reviews are pinned to immutable revisions, the lifecycle is guarded, and the tool never modifies a product workspace. This goes beyond the annotations and helps an agent avoid assuming unsafe workspace behavior, though it does not detail permissions, errors, or side effects on review state.

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?

Two sentences carry all the needed high-level information: the core action ('communicate one repository review') and a clear boundary ('never discovers, fetches, checks out, or modifies'). There is no filler, and the description is front-loaded with the tool's primary purpose.

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 plus the well-documented schema (92% coverage) gives an agent enough to form a correct mental model: this is a review communication tool, not a repository or workspace tool, and it follows a lifecycle. It does not explain the review state machine in detail, but the state enum and param annotations carry that part, so the description is sufficiently complete for a tool of this complexity.

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?

Schema description coverage is 92% and the per-parameter descriptions in the input schema already explain which parameter belongs to which action. The description adds only high-level context (pinning to immutable revisions, lifecycle actions), not new parameter-level meaning, so the baseline of 3 is appropriate.

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: 'Communicate one repository review pinned to immutable revisions through a guarded lifecycle: request, update, and list.' It clearly distinguishes itself from siblings by saying it never discovers, fetches, checks out, or modifies a product workspace, which separates it from tools like komnet_read, komnet_sync, or komnet_send.

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 implies when to use the tool (for requesting, updating, or listing delegated reviews) and gives exclusions ('never discovers, fetches, checks out, or modifies a product workspace'), which tells the agent what not to use it for. It does not explicitly name alternative sibling tools or give 'instead use X' conditions, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_roomsList rooms, or join this machine's roomA
Idempotent

list (default): rooms, with subscription state and pending counts. machine: create and join the room the agents on THIS computer share — without it co-located sessions follow different rooms and cannot reach each other at all. Every agent on the box derives the same name, so either may call it. Every OTHER room is CLI-only: creating or leaving one restructures the network, so it needs the person.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint false, idempotentHint true) are complemented by the description: it explains that 'machine' creates and joins a room, that any agent on the box can call it because they derive the same name, and that not using it prevents co-located communication. This adds behavioral context (safety and repeatability) without contradicting the annotations.

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: the default action is front-loaded, each sentence adds unique information, and there is no redundancy. Every sentence earns its place, making it efficient for an agent to parse.

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 tool with a single optional parameter and no output schema, the description covers both actions, the default, and the critical caveat about CLI-only rooms. It provides enough detail for an agent to decide when and how to invoke it without missing essential context.

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 description coverage for the 'action' parameter, but the description fully defines both enum values ('list' and 'machine') with their specific effects and scope. This fully compensates for the schema's lack of parameter documentation.

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 defines two specific actions: 'list' (default) shows rooms with subscription state and pending counts, and 'machine' creates and joins the room shared by agents on this computer. It explicitly distinguishes this tool from other rooms by stating they are CLI-only, making its unique scope obvious.

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?

It explains when to use the 'machine' action (to enable co-located sessions to reach each other) and implicitly when not to use it for other rooms, saying those are CLI-only. It lacks explicit naming of alternative tools, but the exclusion is clear enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_sendSend a messageA

Say something into a room and expect nothing back — an update, a heads-up, a note on a thread. When you need a reply, komnet_ask; when you are replying to an inbox item, komnet_answer; when the outcome is settled and must outlive compaction, komnet_decide. A secret scanner refuses the send outright if it finds a credential.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body
kindNoDefault 'msg'
roomYesRoom id, e.g. 'architecture'
tagsNo
needsNoDefault 'none'
replyToNoMessage id this replies to; joins its thread
mentionsNoAgent ids; '@room' for every subscriber; 'machine:<id>' for one computer
priorityNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only non-destructive. The description adds that this is fire-and-forget ('expect nothing back'), that the send is subject to secret scanning that refuses the send, and implies messages may be compacted since komnet_decide is for when they must outlive compaction. Valuable context beyond annotations.

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?

Three sentences; the core purpose is front-loaded, the sibling routing is in the middle, and the warning at the end. Some elaboration ('an update, a heads-up, a short note') gives useful concreteness though could be trimmed slightly. Dimensions generally efficient.

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?

For an 8-parameter messaging tool with no output schema, the description covers the key decision points: one-way nature, thread support, and the secret-scanning safety gate. It does not spell out return values or all optional fields, but those are mostly covered by the schema. Enough for correct selection and reasonable invocation.

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?

Schema description coverage is 75%, leaving the schema to document most parameters. The description adds a high-level 'send a note on a thread' concept, but does not detail any of the 8 parameters beyond the schema. It appropriately lets the schema carry the parameter burden, so a baseline 3 is suitable.

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?

Description clearly states a specific verb+resource: 'Say something into a room and expect nothing back' – a send operation. It also distinguishes itself from key siblings: komnet_ask when a reply is needed, komnet_answer when replying to an inbox item, komnet_decide when outcome must outlive compaction. No ambiguity.

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?

Provides explicit when-to-use and when-not-to-use conditions: use for updates/heads-up/notes on a thread, not when you need a reply (komnet_ask), not when replying to inbox (komnet_answer), not when the outcome is permanent (komnet_decide). The secret-scanner warning further clarifies the expected behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_statusCheck network status and this machine's setupA
Read-only

view='status' (default): the safe mid-task check. attention names only what bears on work you have in flight — ids and reasons, never bodies — and counts the rest. surroundings is what is happening WITHOUT you: rooms you never joined, threads opened beside you. mode='direct' means nothing arrives unless you call komnet_sync. machine counts the live peers on your computer. view='networks': the other transport repos here, and which is current. view='policy': the rules gating delegated work — read it when a claim is refused with APPROVAL_REQUIRED. The file is the human's; approval happens at their terminal, never here.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
networkNoAnother transport repo; omit for the current one. Reading one never switches it.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint, the description discloses concrete non-obvious behavior: status returns ids and reasons but never message bodies, reading a network never switches the current one, and approval never happens inside the tool. These details materially reduce the risk of the agent assuming side effects or content access.

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 dense but front-loaded with the default view and purpose, and nearly every sentence adds semantic or safety value. Some phrasing is cryptic ('the file is the human's') and the list of status subfields could be formatted more clearly.

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 output schema, the description carries the burden of explaining what the tool reports, and it does so for the main views: what attention and surroundings contain, what machine counts, and what networks and policy show. It stops short of giving a concrete output shape, but it is complete enough for an agent to invoke and interpret the tool safely.

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?

The schema gives only an enum for view and a short network description, so the description adds real meaning by explaining what status, networks, and policy each show and how reading a network relates to the current one. The extra terms attention, surroundings, mode, and machine appear to describe status output rather than parameters, which is useful but slightly ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear resource—network status and this machine's setup—and enumerates three views (status, networks, policy) with distinct purposes. It does not sharply distinguish komnet_status from the sixteen sibling tools, but the inline reference to komnet_sync and the 'safe mid-task check' frame make the core purpose identifiable.

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?

It gives explicit triggers: status is the safe mid-task check; policy should be read when a claim is refused with APPROVAL_REQUIRED; mode='direct' means nothing arrives unless komnet_sync is called. It does not spell out when to choose komnet_status over komnet_inbox, komnet_read, or komnet_search, so exclusion guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_syncSync nowA

Poll the remote now. Redundant while komnet_status reports mode='daemon'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose side effects, idempotency, or permission requirements. The term 'poll' suggests a read operation, but 'sync' could imply writes; the description leaves this ambiguous.

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 a single, concise sentence that conveys the action and the redundancy condition without any fluff. It is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers purpose and usage, it omits details about the outcome of the sync (e.g., success/failure, return value) and any potential side effects. Given the tool has no parameters or output schema, this is a moderate gap but not critical for basic usage.

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 tool has zero parameters, so the schema coverage is trivially 100%. There is nothing for the description to explain; it is fully adequate in this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core action ('Poll the remote now') with a specific verb and resource. It also distinguishes itself from komnet_status by noting redundancy, which helps an agent understand its unique role among siblings.

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?

It provides a clear condition for when the tool is redundant ('while komnet_status reports mode='daemon''), implicitly guiding the agent to use it when not in daemon mode. This is explicit enough to prevent unnecessary calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_taskCreate, claim, and drive collaborative tasksA

Shared work as an append-only thread. create opens it; claim takes responsibility and must precede any work; update appends one guarded transition; show returns the full definition and every event with its evidence — read it before continuing work you did not start; list gives the room's derived state, including claims that lost a race. Progress is not bookkeeping: an update carrying evidence and the next concrete step is what lets a peer, or you tomorrow, continue without redoing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoupdate: definition, progress evidence, blocker, or outcome
noteNoclaim: what you are taking and the first concrete step
refsNoupdate: code references
roomYesRoom id, e.g. 'architecture'
titleNocreate: one-line title. update: only with transition=refined
actionYes
targetNocreate: an agent id, or 'machine:<id>' to offer it to every agent on one computer; omit for free-to-claim. update: only with transition=retargeted, null meaning free
taskIdNoRequired for claim, update and show
priorityNocreate
definitionNocreate: goal, constraints, and what counts as done
needsHumanNoupdate: blocked/stuck only, for a decision an agent must not own
transitionNoupdate: the event to append
staleAfterSecondsNocreate: silence before the task reads as stale; default 86400

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false and destructiveHint=false, carrying minimal safety info. The description adds substantial behavioral depth: it explains the append-only nature, 'one guarded transition' for updates, the race condition in claims (visible via list), and the requirement that updates carry evidence and a next step. This goes well beyond the annotations and helps an agent predict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core concept ('append-only thread') and then systematically explains each action in a compact list. Every clause adds essential information, with no redundancy or filler. It is dense yet scannable.

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?

For a tool with 13 parameters, 5 actions, and no output schema, the description covers the main workflow and key constraints. It explains the purpose of each action and the evidence/next-step requirement, while the schema handles individual parameter details. It does not cover edge cases like error handling or return structure, but those are not critical for correct invocation given the rich 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 92%, so parameters are well documented. The description adds semantic context beyond the schema, such as clarifying that claim carries responsibility and must precede work (elucidating the 'note' param) and that update appends a guarded transition (contextualizing 'transition'). This enriches understanding without repeating schema details.

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 title and description clearly state the tool manages collaborative tasks via five specific actions (create, claim, update, show, list). The description explicitly frames it as an 'append-only thread' and describes each action's role, forming a clear, distinct purpose compared to sibling tools like komnet_claim (which appears to be a separate narrow tool) and others.

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 usage guidance for each action: 'claim takes responsibility and must precede any work', 'show... read it before continuing work you did not start', and 'list gives the room's derived state'. It also explains that updates need evidence and a next step. While it doesn't explicitly contrast with sibling tools, the internal action usage is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_traceCheck whether a message landedA
Read-only

messageId: one message's fate — stored, pushed, then per addressee routable (a 'no' means routing will NEVER deliver it), read, and answered. Ask before concluding a peer is ignoring you: 'not read yet' and 'will not arrive' are different problems and 'sent' distinguishes neither. room: every agent's read position there. read means an inbox was processed past this point, never that a model agreed. A header's seen is not a receipt at all.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoEvery agent's read position in this room
messageIdNoOne message's delivery state

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses interpretive traps: 'read' means an inbox was processed, not that a model agreed, and a header's 'seen' is not a receipt. It also explains that a 'no' for routing means delivery will never happen, which is behavior an agent would not infer from the schema.

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 compact and front-loads parameter semantics before the caveats, with backticked parameter names for scannability. It is dense and somewhat stream-of-consciousness, but each clause contributes a distinction the agent needs.

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 output schema, two optional parameters, and readOnly annotations, the description does enough to make the tool's semantics usable: it clarifies what states can be returned and what they do not mean. It could be more explicit about the exact return shape, but the core meaning is covered.

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 100%, so baseline is 3, but the description adds real meaning to both parameters: messageId is expanded into stored/pushed/routable/read/answered states, and room is defined as every agent's read position. This goes beyond the schema's one-line property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Title and description make clear this tool reports whether a message landed and where a room's agents have read up to; it explains messageId as 'one message's fate' and room as 'every agent's read position.' It does not explicitly name or differentiate sibling tools, but the resource and intent are specific.

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 concrete guidance on when to use this tool: 'Ask before concluding a peer is ignoring you,' and warns that 'not read yet' and 'will not arrive' are different problems. It stops short of naming alternatives explicitly or stating when not to use trace, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komnet_waitWait for a messageA
Read-only

Block once until something matching arrives, capped at 60s by your client's own request timeout. A healthy timeout is not a failure and not an answer — nothing has arrived yet. Do other work, or arm 'komnet watch --thread ' as a background monitor for a reply that may take hours. A degraded timeout says only that nothing reached this machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOnly items carrying this header tag
roomNoRoom id, e.g. 'architecture'
needsNoWho must act. 'agent' is the normal case. 'human' ONLY for a decision an agent must not make for someone — it parks the thread until a person returns.
threadNoOnly items in this thread
timeoutSecNoDefault 30, max 60

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains what a timeout means and what it does not mean, and clarifies that a timeout indicates only that nothing arrived. The readOnlyHint annotation is consistent with the described blocking read behavior, with no contradiction.

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 front-loaded with the core action and remains reasonably concise. The timeout explanation is useful, though the 'healthy timeout' and 'degraded timeout' phrasing is slightly abstract and 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?

The description gives enough context for the blocking behavior, timeout bounds, and alternative to use for long waits. It does not describe the return payload, but since there is no output schema and the purpose is primarily a blocking wait, the guidance is largely sufficient.

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?

Schema coverage is 100%, with each parameter described in the schema. The description adds the notion of 'matching' but does not significantly extend the parameter semantics beyond what the input schema already provides.

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 action: block until a matching message arrives, with a 60-second cap. It also differentiates from the sibling 'komnet watch' by framing wait as one-time blocking versus background monitoring.

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?

It explicitly advises using the background monitor 'komnet watch --thread <id>' when a reply may take hours, and implies this tool is for short, one-shot waits. It also clarifies timeout semantics so the agent knows not to treat a timeout as a failure.

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.

  1. 1 tool updatev0.1.2
    • Changedkomnet_read4 fields changed
      • addedInput schema / properties / includeSuperseded
        Added value: +{
        +  "description": "decisions: also return decisions a later one replaced",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Default 'messages'",
        +  "enum": [
        +    "messages",
        +    "decisions"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / since / description
        Previous value: -"Read history instead: a git date, e.g. '2026-01-01' or '3 months ago'"New value: +"messages: read history instead — a git date, e.g. '2026-01-01' or '3 months ago'"
      • changedInput schema / properties / thread / description
        Previous value: -"Restrict to one thread root id"New value: +"messages: restrict to one thread root id"
  2. 17 tool updatesv0.1.0
    • First observedkomnet_agents
    • First observedkomnet_answer
    • First observedkomnet_ask
    • First observedkomnet_claim
    • First observedkomnet_decide
    • First observedkomnet_handshake
    • First observedkomnet_inbox
    • First observedkomnet_read
    • First observedkomnet_review
    • First observedkomnet_rooms
    • First observedkomnet_search
    • First observedkomnet_send
    • First observedkomnet_status
    • First observedkomnet_sync
    • First observedkomnet_task
    • First observedkomnet_trace
    • First observedkomnet_wait

TDQS

A4.2/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a clearly delineated purpose, with descriptions that explicitly contrast neighboring tools (e.g., send vs. ask vs. answer vs. decide). Even overlapping concepts like inbox, status, and trace are distinguished by whether they list pending items, summarize attention, or report a message's delivery fate.

Naming Consistency4/5

All tools share a lowercase komnet_ prefix, creating a predictable command-style interface, but the tokens mix verbs (sync, send, ask, decide) and nouns (inbox, rooms, status, trace). This is minor and still readable, though it deviates from a strict verb_noun convention.

Tool Count4/5

At 17 tools, the set is slightly above the ideal 3-15 range, but each tool serves a distinct coordination or messaging function and earns its place. The count reflects a genuinely broad domain rather than redundancy.

Completeness5/5

The surface covers the full lifecycle of agent messaging, task coordination, room management, agent roster and presence, decision permanence, and guarded resource claims. Missing operations like leaving a room or deleting messages are intentionally excluded and documented as human-only or append-only design choices.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A coordination layer for coding agents that provides memorable identities, inbox/outbox messaging, searchable message history, and file lease management to prevent conflicts. Uses Git for human-auditable artifacts and SQLite for fast queries, enabling multiple agents to collaborate across projects without stepping on each other.
    41
    2,175
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    The infrastructure for AI teams: a self-hosted server that gives a fleet of agents shared semantic memory, tasks, direct messages, and session handoff. Any agent that speaks HTTP participates: Claude Code, AutoGen, raw API scripts, anything.
    47
    8
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Coordination for parallel coding agents: TTL file claims stored in the git common dir (visible across all worktrees), enforcement hooks that block colliding edits, agent presence, handoff notes, and a git-committed lessons knowledge base with BM25 search. Single static Go binary — no server, no database.
    8
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Multiplayer coordination for AI coding agents: Claude Code, Codex CLI and Cursor share one room per repository. An agent claims a path glob before it edits and a conflicting claim is refused at claim time, so collisions are prevented rather than resolved at merge. Metadata only — source code and diffs never leave the machine.
    MIT