Skip to main content
Glama

list_comments

List comments in a workspace. Filter by target_type (row, cell, doc_range, html_element, surface, workspace), target_id, surface (returns every comment anchored to any element of one surface, useful for 'open threads on this tab'), status (open | resolved | all, default open), mentioning_me: true for comments that @-mention the caller, or author: <principalId> for comments by a specific user/agent. Returns up to 200 comments per call ordered by createdAt asc, with surfaceSlug denormalized for doc_range/html_element/surface targets so reply paths work even across archive boundaries. Use get_comment_thread to pull a single comment plus its replies + reactions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesThe workspace slug.
limitNoMax results (1-200, default 50).
authorNoFilter by author principal id. Useful for 'comments by Argus on this workspace' agent loops.
offsetNoNumber of comments to skip for pagination.
statusNoResolution state filter. Default `open`.
surfaceNoSurface slug filter. Returns every comment anchored anywhere inside this surface (doc_range / html_element / surface scope, plus row + cell comments on rows that live on the surface). 404 silently if the surface is archived (returns empty list).
target_idNoFilter by exact target id. For cells the id is `<rowId>:<columnKey>`; for doc_range/html_element/surface it's the Surface cuid. Combine with target_type for unambiguous filtering.
target_typeNoFilter by comment target type.
mentioning_meNoWhen true, only return comments that @-mention the calling principal. Equivalent to REST `?mentioning=me`.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the 200-comment limit per call, ordering by createdAt asc, denormalization of surfaceSlug across archive boundaries, and filter semantics. However, it does not explicitly state whether replies are included in list_comments or only in get_comment_thread, leaving a slight ambiguity.

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 dense but efficient—three sentences pack all essential information. It front-loads the action, then systematically covers filtering, return behavior, and the alternative tool. No word is wasted.

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 9-parameter tool with no output schema, the description covers filters, pagination limit, ordering, denormalization, and points to get_comment_thread for thread context. It does not fully describe the shape of each returned comment, but it provides enough specifics (e.g., surfaceSlug, createdAt, status) to operate effectively.

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?

Despite 100% schema coverage, the description adds significant meaning: it lists and explains target_type values, clarifies the surface filter's scope ('returns every comment anchored to any element of one surface'), spells out status options, and notes mentioning_me is equivalent to REST mentioning=me. It also adds pragmatic context for the author filter ('comments by Argus on this workspace' agent loops).

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 begins with a clear verb and resource ('List comments in a workspace') and specifies the scope. It distinguishes itself from sibling tools like get_comment_thread by explicitly stating that this tool lists comments while get_comment_thread pulls a single comment plus replies.

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 guidance on when to use each filter, including concrete use cases ('open threads on this tab', 'comments by Argus on this workspace' agent loops). It also names an alternative tool (get_comment_thread) for a different need, making the decision boundary clear.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, with detailed descriptions that prevent confusion. The main ambiguity arises from send_message vs. the referenced but missing message_teammate tool, and add_column vs. update_surface for schema changes, but these are mostly clarified by the descriptions.

Naming Consistency4/5

The naming convention is predominantly verb_noun with underscores (e.g., create_workspace, list_rows, update_doc). Exceptions like 'search' and 'address_book' (no noun) and the two-word 'react_to_comment' are minor deviations in an otherwise consistent pattern.

Tool Count1/5

With 68 tools, the surface is far too large for an MCP server, exceeding the 50+ threshold for extreme mismatch. This volume creates excessive selection overhead for agents and suggests the tool set could be consolidated or split into focused servers.

Completeness3/5

The server covers broad functionality across workspaces, docs, tables, HTML, comments, files, webhooks, and billing. However, notable gaps exist: the explicitly referenced message_teammate tool is missing (preventing agent-to-agent waking), and there is no create/upload file tool or create API key tool, which creates dead ends in workflows.