read_comments
Scope:documents:read (step-up) · Kind: read-only · Annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false
The comment threads on a document or page: each thread’s id, status (open | resolved), the quoted passage it is anchored to (if any), the author and body, and its replies. Open threads only unlessinclude_resolvedis true. Returns yourrole— a viewer can read threads but not add to them.
Parameters
string
required
The artifact id of a document or page.
boolean
default:"false"
Include resolved threads.
Returns
'owner' | 'editor' | 'commenter' | 'viewer'
Your effective role on the artifact.
array
No open comment threads. / No comment threads.
Permissions and side effects
- Needs
documents:readand any role on the artifact. - Reads only. Recorded in the agent activity history.
Errors
Limitations
- The number of replies listed per thread is capped;
more_repliestells you when some were left out. There is no way to page through them over MCP.
Example
Requestadd_comment
Scope:documents:write (step-up) · Kind: write · Annotations: readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Start a comment thread on a document or page, or reply in one (thread_idfrom read_comments). A new thread is attached to the whole artifact unlessanchor_excerptquotes a passage the document contains exactly once — then the thread quotes that passage. Mention@Assistantin the body to have the workspace assistant reply in the thread; a mention is never required. Needs the commenter role or higher; a viewer is refused.
Parameters
string
required
string
required
The comment, markdown. Must be non-empty. Mentions fan out exactly as they do in the app:
@Priya notifies a
person, and @Assistant makes the workspace assistant reply in the
thread. @Assistant exists in every workspace; other installed agents
(for example @Builder) are the handles the app’s mention picker
offers. Retired handles (@PM, @Research, @GTM) still reach the
assistant. There is no generic @Agent handle; any other unrecognised
handle is plain text, and a comment needs no mention at all.string
Reply in this thread instead of starting a new one.
anchor_excerpt is
ignored when replying.string
New threads only. An exact passage from
read_document. If the document
contains it exactly once, the thread is anchored to it; otherwise the
thread is created unanchored and the result says so.Returns
New thread:string
boolean
Whether the excerpt matched exactly once.
string
string
Started thread <id> on the quoted passage. /
Started thread <id> on the whole document — the quoted passage was not found exactly once, so the thread is unanchored. /
Started thread <id>. / Replied in thread <id> (comment_id: <id>).
Permissions and side effects
- Needs
documents:writeand thecommenter,editororownerrole. - The comment is posted as you via the host, in the same thread the app’s
Comments tab shows. Mentions notify people; an installed agent’s handle (for example
@Assistant) makes that agent reply in-thread. - An unmatched anchor does not fail the call; check
anchored.
Errors
The exact wording for an invalid
thread_id comes from the comment backend
and was not verified for this page. Treat any Tool failed: result on a
reply as “the thread is not there” and re-read the threads.Example
Requestresolve_comment
Scope:documents:write (step-up) · Kind: write, idempotent · Annotations: readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false
Mark a comment thread resolved (resolved: true) or reopen it (resolved: false). Idempotent. Needs the commenter role or higher.
Parameters
string
required
string
required
From
read_comments or add_comment.boolean
required
true to resolve, false to reopen.Returns
string
'resolved' | 'open'
Thread <id> is now resolved. or Thread <id> is now open.
Permissions and side effects
- Needs
documents:writeand thecommenter,editororownerrole. - Changes the thread’s status as you via the host. Repeating the call with the same value has no further effect.