list_review_threads

Read the review conversations pinned to the lines of a diff.

Agentread-onlyidempotentMCP tool

Each thread names a round, a file and a line range, quotes the diff lines it was written against, and holds the messages said in it so far, oldest first. The review you were sent is read whole with get_review; this is for looking a thread up again, and for answering one. Every thread belongs to a round, which is a frozen snapshot, so its line numbers are true of that round even after you have edited the file: run git diff against the round's shas to see what was reviewed, or search the file for quotedLines to find where that code sits now. Answer with add_review_message, saying what you did. You are shown only reviews that have been released, so a comment somebody is still writing is not here yet. agentId defaults to your own agent; give another agent's id to read the review of its work instead.

Calling it#

curl -X POST http://127.0.0.1:8787/agent.v1.AgentService/ListReviewThreads \
  -H 'Content-Type: application/json' \
  -d '{}'

Request#

ListReviewThreadsRequest#

FieldTypeDescription
agentIdstring

The agent whose diff is being reviewed. An agent reading its own threads may leave this unset, since the call already carries which agent is asking.

Response#

ListReviewThreadsResponse#

FieldTypeDescription
threadslist of ReviewThread

The threads on that diff and what has been said in each. An agent reading a review is shown only the comments the person has let go of, and none of the panel's record of when each was released, so that a review is read once it is a review rather than as it is being written.

Types#

ReviewThread#

ReviewThread is one conversation pinned to a place in a round of an agent's diff.

FieldTypeDescription
idstring

The handle a reply or a resolve names this thread by.

agentIdstring

Whose diff the thread is pinned to.

reviewIdstring

The batch this thread was opened as part of.

roundIdstring

The round the thread is anchored to, which never moves.

roundOrdinalint32

Which round that is, counting from one.

baseShastring

The commit the old side of these line numbers was read against, which is the round's own base unless the diff was narrowed to an earlier round when the thread was written.

filePathstring

Which file, relative to the checkout.

oldStartint32

Where the range begins on the old side of the diff, counting from one.

oldEndint32

Where it ends on the old side, inclusive.

newStartint32

Where the range begins on the new side.

newEndint32

Where it ends on the new side, inclusive.

quotedLineslist of string

The diff lines the thread was written against, each keeping its leading marker.

resolvedAtstring

When the person reviewing settled this thread, empty while it is still owed an answer. Whether a thread is settled is a different question from whether the code under it has moved, and it is this one that decides whether the thread is still asking for something.

unreadByHumanbool

Whether the agent has replied since the person reviewing last looked.

messageslist of ReviewMessage

Everything said in the thread, oldest first.

createdAtstring

When the thread was opened.

updatedAtstring

When anything in it last moved.

ReviewMessage#

ReviewMessage is one thing said in a review thread.

FieldTypeDescription
idstring

The handle an edit of this message names it by.

threadIdstring

Which conversation it belongs to.

authorKindReviewAuthorKind

Whether a person or an agent wrote it.

authorAgentIdstring

The agent that wrote it, absent for the person reviewing and cleared if that agent is deleted. author_kind, not this, is what says who wrote it.

bodystring

What the author wrote.

suggestionlist of string

Replacement lines the author proposes for the thread's range, empty for an ordinary comment. An agent applies these rather than reasoning about them.

createdAtstring

When it was written.

updatedAtstring

When it was last edited.

deliveryReviewDeliveryState

How far this comment has got towards the agent reading it.

sentAtstring

When the person reviewing released this comment, empty while it is only written down.

deliveredAtstring

When the agent claimed the doorbell raised for this comment, empty until it has.

reviewIdstring

The review this message went out with, absent for an answer written by the agent under review, which belongs to no batch.

ReviewAuthorKind#

ReviewAuthorKind is who wrote a review message.

ValueDescription
REVIEW_AUTHOR_KIND_HUMAN

The person running komrad.

REVIEW_AUTHOR_KIND_AGENT

The agent whose work is being read, or the reviewer reading it.

ReviewDeliveryState#

ReviewDeliveryState is how far one of the person's comments has got towards the agent reading it. It is no stored field: it is read off the comment's own sent stamp and the newest doorbell raised against it, since the stamp outlives mail the agent deletes or lets expire. Whether the comment has been answered is a different question, read off the messages of the thread.

ValueDescription
REVIEW_DELIVERY_STATE_UNSENT

Written down and not yet let go of.

REVIEW_DELIVERY_STATE_SENT

Released, with a doorbell still waiting to be claimed.

REVIEW_DELIVERY_STATE_DELIVERED

Released, and the agent has claimed the doorbell.