Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_project_update_space

Updates a project space's name, color, or privacy settings; setting isPrivate to true requires userIds to grant access (add-only).

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. Update Space Updates space fields such as name, color, or privacy. color must be one of the 16 palette swatches. When setting isPrivate: true, userIds is required and those users are granted access (add-only — omitting a user does not revoke). Revoke with DELETE /projects/spaces/{spaceId}/users/{userId}. Setting isPrivate: false makes the space public for the location; existing direct grants remain but no longer gate access while public. Endpoint: PATCH /projects/spaces/{spaceId} (Version header: v3; source: v3/projects-v3.json) OAuth scopes: projects/workspace.write

Input Schema

NameRequiredDescriptionDefault
bodyYesPartial update body for a space, folder, or list (not tasks). All fields optional. When setting `isPrivate: true`, send a non-empty `userIds` array (add-only). Revoke with `DELETE .../users/{userId}`. Setting `isPrivate: false` makes the resource public; existing direct grants remain but no longer gate access while public. `icon` and `description` are not accepted on the public API.
spaceIdYesSpace 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

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing non-obvious access-control side effects: grants are add-only, omitting a user does not revoke, and flipping `isPrivate` to false leaves existing grants in place but non-gating. It also names the OAuth scope, the version header and the exact PATCH path, which the annotations do not convey.

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?

Roughly half the text is a generic project-management preamble about task batch-get RBAC filtering, lexorank `position`, recurring-task fields and task search `updatedAt` — none of which apply to updating a space. The tool-specific content is buried after this noise, so the agent must scan irrelevant material to reach the operative sentences.

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 three-parameter nested-body mutation the description covers the operation, endpoint, version, scope and the subtle privacy/grant behavior. With no output schema it could say something about what the PATCH returns, and it omits whether `body` may be empty, but nothing critical to invoking it correctly is missing.

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% and the field descriptions already document `color`'s 16-value enum, the add-only `userIds` rule and the `isPrivate` semantics. The description restates the same points rather than adding syntax, defaults or format details beyond the schema, so baseline 3 applies.

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 'Update Space' section states a specific verb, resource and the updatable fields (name, color, privacy), which cleanly separates it from the sibling update_folder and update_list tools. An agent can identify the target resource and operation without opening the schema.

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 real usage conditions: `color` must be a palette swatch, `isPrivate: true` requires non-empty `userIds`, and revocation is routed to a separate `DELETE /projects/spaces/{spaceId}/users/{userId}` call (the ghl_project_delete_space_user sibling). It never explicitly says when to prefer update_space over update_folder/update_list, so it falls short of the top score.

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