Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_project_get_list_users

Read-onlyIdempotent

Retrieve all users with access to a specific list, combining direct and inherited permissions, with skip and limit pagination.

Instructions

PROJECT MANAGEMENT API — hierarchy is spaces -> folders -> lists -> tasks (+ comments, space statuses, recurring tasks). Task batch-get is RBAC-filtered (inaccessible ids are omitted, not errors) and omits embedded subtasks. position is an opaque server-assigned lexorank string; there is no public reorder endpoint. Recurring tasks use owners/contactIds and rruleOptions.intervalType (task create uses assignees/contactId). Task search supports updatedAt filtering/sorting for incremental sync. The docs do not describe what a delete cascades to — treat every delete as destructive. Get Users With List Access Lists users with access to the list as one unified users page (source: direct | inherited). skip / limit / total apply to the combined list. No PII and no query filter. Revoke with DELETE /projects/lists/{listId}/users/{userId}. Endpoint: GET /projects/lists/{listId}/users (Version header: v3; source: v3/projects-v3.json) OAuth scopes: projects/workspace.readonly Pagination params: skip, limit — pass them to page through full result sets.

Input Schema

NameRequiredDescriptionDefault
skipNoSkip
limitNoPage size
listIdYesList id
locationIdNoLocation id. Required for APP channel (`?locationId=`). Ignored for OAuth/PIT (token location is used). Do not send in path, body, or headers.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds genuine behavior: RBAC filtering semantics (inaccessible ids omitted rather than erroring), no PII returned, and that skip/limit page across the combined direct+inherited set. The unrelated RBAC/lexorank/delete-cascade preamble adds noise rather than clarity for this tool.

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

Conciseness2/5

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

The majority of the text is irrelevant boilerplate about task batch-get, lexorank `position`, recurring task fields, `updatedAt` sync, and delete cascades — none of which pertain to listing list users. The tool-specific content is buried after this preamble instead of front-loaded.

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-only paginated list tool with full param coverage and annotations, the relevant essentials are present: resource scope, auth scope (projects/workspace.readonly), endpoint, pagination behavior, and the shape hint (`source`: direct|inherited). No output schema exists, so the modest return-value description is acceptable.

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, and the description earns a bump by explaining that `skip`/`limit` apply to the combined users list rather than one of the two sources. Minor inconsistency: it references a `total` value that is not an input parameter, which could mislead slightly.

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 operative sentence — 'Lists users with access to the list as one unified users page' — gives a specific verb and resource, and the hierarchy preamble situates a list inside spaces -> folders -> lists, which implicitly separates it from the folder/space user tools. It never names those siblings explicitly, so an agent still has to infer which scope tool to pick.

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?

Provides real usage context: there is no `query` filter, results merge direct and inherited access, and revocation is a separate DELETE endpoint — all of which steer invocation. No explicit 'use this instead of X when Y' routing against ghl_project_get_folder_users / ghl_project_get_space_users, which keeps it below a 5.

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

Deploy Server

Other Tools