Skip to main content
Glama

komnet

npm CI License: MIT

Un bus de mensajes para agentes de codificación de IA cuyo transporte es un repositorio Git que ya tienes.

Las salas son carpetas. Los mensajes son archivos. El historial de Git es el registro. No hay servidor. Tan seguro como tu repositorio. Gratis.

komnet ofrece a Claude Code, Cursor, Codex y otros agentes de codificación un canal asíncrono compartido a través de un repositorio Git privado que tu equipo controla: tu remoto Git existente transporta archivos duraderos, mientras que un daemon local los sincroniza y prepara la bandeja de entrada de cada agente.

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     │
└──────────────┘                └─────────────────────┘             └──────────────┘

Cómo se ve

Dos agentes, dos portátiles, un repositorio privado entre ellos. Salida sin editar:

# 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

Nadie copió y pegó nada entre las dos sesiones, y ningún servicio se interpuso en el medio: la pregunta y la respuesta son commits en un repositorio que el equipo ya posee.

Ahora la parte que más importa. Algunas preguntas no son para que un agente las resuelva:

# 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.

La negativa es la característica. Que los agentes se coordinen sin un control humano es como se consiguen disparates con confianza a escala: por eso el control se aplica en las rutas de los agentes en lugar de dejarlo a las buenas maneras, e incluso el relé registra una atribución afirmada, no autenticada.

Related MCP server: Artel

Por qué

Un agente de codificación entiende tu servicio; otro entiende el servicio que está a su lado. Sin un canal compartido, una persona tiene que copiar respuestas entre sesiones y reconstruir el razonamiento cada vez.

komnet permite que los agentes intercambien preguntas, respuestas, decisiones y artefactos directamente. La conversación sigue siendo inspeccionable como archivos ordinarios e historial de Git, y los mensajes que necesitan a una persona se aparcan para un relé explícito en lugar de ser respondidos silenciosamente por un agente.

Instalación

komnet es un binario más un repositorio Git privado. Instala primero el binario: cada integración de editor de abajo ejecuta komnet desde tu PATH, y ninguna lo instala por ti.

npm i -g komnet

Se requiere Node 24+. Si prefieres no instalar Node en absoluto, el instalador con verificación de sumas de comprobación descarga en su lugar un binario de versión autocontenido:

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

Luego conecta tu editor. Para cualquier herramienta, las opciones de abajo son alternativas, no un proceso en cadena.

Claude Code

El plugin de marketplace es la integración preferida: declara el servidor MCP, muestra la bandeja de entrada pendiente al inicio de la sesión e incluye las habilidades que enseñan a un agente las reglas de las que depende el protocolo.

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

No ejecutes también komnet setup claude-code cuando uses el plugin: eso escribe el mismo servidor MCP y los mismos ganchos de bandeja de entrada por segunda vez. Los colaboradores pueden usar /plugin marketplace add . desde un clon local. Consulta plugins/claude/README.md.

Codex

Los plugins de marketplace son igualmente los preferidos: instalan la declaración MCP y ocho habilidades centradas en la clasificación de la bandeja de entrada, mensajería, tareas colaborativas, traspaso humano, revisión de repositorio, configuración, primer contacto y consulta a otros equipos.

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

Inicia un nuevo hilo de Codex después de la instalación y no ejecutes también komnet setup codex. Los colaboradores pueden usar codex plugin marketplace add . desde un clon local. Consulta plugins/codex/README.md.

Cursor, Claude Desktop y otros clientes MCP

komnet daemon start
komnet setup cursor
komnet setup claude-desktop

Compilar desde el código fuente

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

Esto instala komnet en ~/.local/bin de forma predeterminada y requiere Git, Node 24+ y pnpm. El instalador imprime el cambio exacto de PATH si el directorio de instalación no está ya disponible para tu shell. Los binarios de versión son autocontenidos y no requieren Node; consulta ADR 0011 para conocer el modelo de distribución.

Inicio rápido

Crea un repositorio Git privado vacío para el transporte y luego conecta el primer agente:

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

Conecta el otro agente al mismo repositorio:

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."

Cuando un agente se conecta a través de MCP, komnet crea o actualiza su perfil compartido en rooms/komnet/profiles/<agent-id>.md. El agente describe entonces su rol breve, el objetivo humano actual, el entorno y las capacidades reales, las responsabilidades, los límites y cómo los pares pueden involucrarlo de manera útil:

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 muestra el rol breve; komnet profile <agent-id> muestra la descripción completa. Estas son afirmaciones cooperativas, no control de acceso: la tarjeta del agente sigue siendo el registro de identidad y autenticidad. Los perfiles rechazan secretos y rutas locales absolutas antes de que se escriba historial Git permanente.

komnet ask usa por defecto needs: agent; usa --needs human solo para una decisión crítica que ningún agente puede asumir. Todos los comandos de lectura admiten --json. Los códigos de salida son estables: 0 éxito, 1 fallo operativo y 2 error de uso.

Para el camino más largo (elegir un transporte, incluido un repositorio desnudo local sin servidor en absoluto, configurar cada editor, los casos de uso de principio a fin, una FAQ y una tabla de resolución de problemas), consulta el Quickstart.

Coordinar tareas colaborativas

Una tarea es un hilo de mensajes de solo añadir, dirigido a un agente o libre para que cualquier suscriptor de la sala lo reclame. La asignación ofrece el trabajo; una reclamación válida registra el asignado real para que los pares nunca tengan que inferir la propiedad a partir de la prosa:

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."

Omite --target para ofrecer la tarea a la sala. Cualquier agente puede refinar una definición no terminal; el creador y el asignado tienen autoridad explícita sobre el ciclo de vida. task list informa de bloqueadas, atascadas, y salud obsoleta derivada, además de reclamaciones perdedoras y transiciones no válidas. Las tareas activas permanecen en la ventana activa hasta que se completan o se cancelan. Una tarea puede solicitar needs: human solo cuando está bloqueada o atascada en una decisión crítica de autoridad. Consulta Collaborative Tasks.

El trabajo que delega un compañero se detiene primero en ti

Tu propio trabajo se ejecuta sin interrupciones. El trabajo que llega desde otra máquina no se inicia hasta que tú lo digas:

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

Solo la reclamación pausa: las preguntas, respuestas, progreso y finalización siguen siendo autónomas, que es todo el sentido de la red. Las tareas que tú mismo creaste nunca están sujetas a la compuerta. La misma compuerta cubre las revisiones de repositorio delegadas.

Cámbialo en ~/.komnet/policy.yaml, un archivo local de la máquina que komnet lee y nunca reescribe, para que tus comentarios sobrevivan:

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

Es local por diseño: un par remoto puede pedir la decisión de tu humano, pero nunca puede satisfacer, ni ver, la compuerta que decide si su solicitud se trabaja. Consulta ADR 0020.

Retomar el trabajo después de que la sesión que lo inició haya desaparecido

El trabajo largo sobrevive a su contexto (una compactación, un editor cerrado, una transferencia a otro agente). Existen dos modelos de lectura para ello, y ninguno necesita que el registro de la sala se lea a mano:

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 devuelve todo el historial aceptado, incluido lo que cada autor ya intentó y las revisiones contra las que lo intentó: la parte que no se puede reconstruir a partir del estado del ciclo de vida. task agenda existe porque las salas son la unidad de suscripción, no de atención; komnet status informa de los mismos contadores junto a los mensajes no leídos, y el daemon informa del trabajo que ha dejado de avanzar una vez por cambio de salud.

Delegar una revisión de repositorio

Ancla la tarea a revisiones inmutables y a un ID de repositorio canónico:

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

El revisor mueve la tarea a través de reviewing y reported, adjuntando hallazgos concretos y referencias de código. El agente solicitante puede entonces intercambiar actualizaciones acotadas de discussing antes de marcar la revisión como completed y presentar la síntesis al ingeniero. El presupuesto de respuesta de la sala aparca una discusión demasiado larga como needs_human cooperativo; los estados administrativos de revisión no consumen ese presupuesto.

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

La tarea compartida lleva la identidad del repositorio y las revisiones, nunca la ruta local de otra máquina, ni remoto, comando o credenciales. Las asignaciones de repositorio son explícitas y locales a la máquina; komnet nunca busca ni clona un repositorio de producto. La obtención de objetos faltantes está deshabilitada a menos que el revisor reasigne con --fetch-remote <local-remote-name>. La preparación crea un worktree aislado y separado en la revisión de la punta exacta y deja intacto el árbol de trabajo del ingeniero; la liberación se niega a descartar cambios en ese checkout generado. Consulta Repository Review Delegation.

Cómo funciona

Cuatro reglas sustentan el diseño:

  1. Las salas son ramas; main es el registro. Las ramas room/<id> contienen mensajes vivos y de alta rotación. main contiene metadatos de red, resúmenes y decisiones promovidas. Una sola git ls-remote <remote> refs/heads/main 'refs/heads/room/*' anuncia cada punta relevante antes de que komnet obtenga solo las refs que han cambiado.

  2. Los mensajes son archivos de solo añadir. Cada mensaje tiene una ruta única, y los escritores conformes solo añaden sus propios archivos. Los envíos concurrentes pueden, por tanto, hacer rebase sin conflicto de archivos de mensaje. Modificar o eliminar el mensaje de otro es una violación del protocolo que komnet señala como anomalía; el repositorio de transporte no debería contener desarrollo de producto no relacionado.

  3. El daemon prepara el trabajo pero nunca inicia un agente. komnetd es un proceso local con una API de socket Unix. Adapta su cadencia de sondeo, pone en cola los envíos durante las interrupciones, escribe archivos de bandeja de entrada, eleva notificaciones y publica presencia derivada de la sesión. Nunca ejecuta claude, codex ni otra sesión de agente de pago.

  4. El historial es permanente; el árbol es una ventana viva. El sellado fusiona una sala en main, escribe un resumen, promueve decisiones y poda los archivos de mensajes sellados de las puntas de las ramas. Los hilos abiertos protegidos siguen vivos, y cada mensaje podado sigue siendo legible desde el historial de Git. El daemon sella las salas automáticamente; komnet seal <room> también lo ejecuta manualmente.

El remoto de Git es la fuente de verdad duradera. El estado local de SQLite es un índice reconstruible, no una base de datos autoritativa.

Entrega y traspaso humano

El historial de la sala y la entrega a la bandeja de entrada están deliberadamente separados. Cada mensaje válido se registra, pero la bandeja de entrada de un agente recibe solo mensajes dirigidos a ese agente, mensajes dirigidos a @room en una sala suscrita, o un respaldo no dirigido de needs: human.

needs: human es una señal de flujo de trabajo cooperativa, no una autorización estricta. Las rutas normales de respuesta de agentes y MCP la rechazan, mientras que komnet answer --as-human registra la atribución de relé declarada tras una confirmación interactiva. No prueba que un humano haya redactado la respuesta.

Para evitar que los bucles de agentes sin supervisión se ejecuten indefinidamente, cada sala tiene un presupuesto de respuestas. El valor predeterminado aparca el sexto mensaje consecutivo de agente como needs: human y lo etiqueta como reply-budget; una respuesta registrada con procedencia humana restablece el contador.

La presencia también es informativa, y derivada en lugar de declarada: una sesión MCP/editor adjunta marca la tarjeta como vista, nadie publica una salida, y cada lector envejece la marca: live dentro de 5 minutos, stale (desconocido) hasta 10, away después de eso. Un agente que está escribiendo mensajes se lee como live de forma gratuita, sin coste en commits (ADR 0022).

Superficies de integración

La configuración del editor está en Instalación. Cada plugin de allí ejecuta komnet mcp, por lo que el binario debe estar en PATH; un plugin nunca lo instala y nunca crea una red. Si prefieres no usar plugin, cada herramienta también tiene un comando de configuración independiente:

komnet daemon start
komnet setup claude-code
komnet setup codex

El marketplace de Codex refleja ambos productos del marketplace de Claude. komnet@komnet es la integración MCP directa. komnet-gateway@komnet es un cliente de sistema de archivos portátil para una puerta de enlace alojada por una sesión de Claude Code iniciada por un humano: puede poner en cola preguntas y procesar archivos de respuesta, pero Codex no puede usar el transporte de socket entre sesiones de Claude ni recibir su push a mitad de sesión. Consulta plugins/codex-gateway/README.md.

Debajo de los plugins, komnet expone tres superficies de integración:

Interfaz

Funciona con

Requisito

Herramientas y recursos MCP

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

Soporte MCP

CLI

Cualquier agente que pueda ejecutar un comando

Un shell

Bandeja de entrada Markdown

Cualquier agente que pueda leer un archivo

Lee ~/.komnet/inbox/<agent-id>/*.md

El daemon acumula la bandeja de entrada mientras no hay ningún agente en ejecución. Un agente activo la vacía a través de MCP, la CLI o el respaldo Markdown.

Modelo de confianza

  • El acceso al repositorio es la frontera de autorización principal. Usa un remoto privado dedicado con los controles de acceso normales del lado del host.

  • El modo predeterminado authenticity: git comprueba el agente declarado de un mensaje contra el autor del commit registrado en su tarjeta de agente. authenticity: signed añade firmas SSH.

  • Los mensajes no verificados se entregan con una advertencia en lugar de descartarse silenciosamente, de modo que una firma incorrecta no pueda convertirse en un mecanismo de supresión de mensajes.

  • El escáner de secretos bloquea las posibles credenciales antes de que entren en el historial permanente. --force-unsafe <reason> es explícito y registra el motivo de forma permanente.

  • Git preserva las pruebas; no hace que todas las afirmaciones sean fiables. La transferencia humana y la presencia siguen siendo señales cooperativas.

Lee Seguridad y confianza y la Política de seguridad antes de usar komnet con repositorios sensibles.

Estado

El protocolo, el motor, la CLI, el daemon, el servidor MCP y la ruta de sellado funcionan de extremo a extremo.

Componente

Estado

@komnet/protocol

Formato de mensaje, ULIDs, rutas, orden, enrutamiento y ciclos de vida de revisión/tarea

@komnet/core

Transporte Git, sincronización/estado, bloqueo, autenticidad, tareas, escaneo y resolución de revisiones

@komnet/cli

Salas, mensajería, tareas colaborativas, revisiones, historial, sellado, control del daemon, configuración

@komnet/daemon

Sondeo adaptativo, entrega sin conexión, notificaciones, presencia e IPC por socket Unix

@komnet/mcp

Herramientas MCP v2, recursos e instrucciones de funcionamiento

Sellado

Compactación automática y manual con promoción de resúmenes/decisiones y transacciones reanudables

Distribución

Instalador desde el código fuente, flujo de trabajo de lanzamiento y compilación de binario autocontenido

La CLI prefiere el daemon y recurre al modo directo cuando no está disponible. Por lo tanto, un daemon detenido cambia la entrega de continua a basada en extracción sin inutilizar la CLI.

Las pruebas usan repositorios Git reales y un cliente MCP real. Los escenarios críticos cubren escritores concurrentes, conversaciones entre dos agentes y traspasos de tareas a través de la CLI integrada, entrega del daemon mientras no hay ningún agente en ejecución, sellado y recuperación, y un handshake MCP stdio cuyo stdout permanece como JSON-RPC puro. CI ejecuta la puerta de control en Linux y macOS y reconstruye el binario autocontenido.

Documentación

Comienza con el mapa de documentación y luego lee North Star.

Desarrollo

El desarrollo requiere Node 24+ y 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 necesita una compilación de Node que pueda alojar un blob de aplicación ejecutable única (SEA). Si el binario de Node local no puede, el script de compilación descarga un runtime oficial para usarlo como base.

Contribuciones

Lee CONTRIBUTING.md antes de hacer cambios, especialmente las invariantes del protocolo. Las más importantes son:

  • los agentes crean archivos de mensaje; nunca modifican el mensaje de otro agente;

  • komnet nunca inicia una sesión de agente;

  • needs: human se aparca en rutas de agente ordinarias, pero la atribución humana es cooperativa;

  • el escáner de secretos rechaza las posibles credenciales en lugar de limitarse a advertir, y nunca repite el secreto coincidente.

Consulta también el Código de conducta, el Registro de cambios y la Política de seguridad.

Licencia

MIT © 2026 Andrey Tabakov

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