Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_project_get_task

Read-onlyIdempotent

Fetches one project task or subtask by ID and returns its properties, including status, body, parent task, and primary list for project management lookups.

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 A Task By ID Fetches one task or subtask by id. Fields are returned under task. A subtask’s parent id is task.properties.parentTaskId. TipTap content is task.properties.body. properties.statusGroup is server-derived and read-only; a task is complete when it is done. The home list is properties.primaryListId. Embedded subtasks are not returned — use Search Tasks with subtaskViewMode=expanded. Endpoint: GET /projects/tasks/{taskId} (Version header: v3; source: v3/projects-v3.json) OAuth scopes: projects/tasks.readonly

Input Schema

NameRequiredDescriptionDefault
taskIdYesTask 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
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: field nesting under `task`, `parentTaskId` for subtask lineage, `statusGroup` being server-derived and read-only, TipTap body location, and required OAuth scope. The only weakness is that some behavioral notes (RBAC omission, lexorank position, delete cascades) describe sibling endpoints rather than this call, which blurs rather than contradicts.

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

Conciseness3/5

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

The actual purpose statement is buried after a five-line preamble that covers hierarchy, recurring tasks, search, and delete cascades — most of it irrelevant to a single-task read. The tool-specific section is dense and well ordered, but the shared preamble dilutes front-loading and adds paragraphs an agent must skip.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only getter this is more than complete: it states the endpoint, version header, scope, response envelope, field paths, and the known subtask limitation, so an agent can call it and interpret the result without further discovery.

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%; the schema already documents `taskId` and spells out the full `locationId` channel rule (required for APP channel, ignored for OAuth/PIT, not to go in path/body/headers). The description adds only that a subtask id is also valid, so baseline 3 is correct.

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?

"Fetches one task or subtask by id" gives a specific verb and resource, and the surrounding text tells the agent what this returns (`task`) and what it does not (`embedded subtasks`). An agent can distinguish it from ghl_project_batch_tasks and ghl_project_search_tasks without opening any 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 names a concrete alternative and the condition that selects it: embedded subtasks require Search Tasks with `subtaskViewMode=expanded`. That is real routing guidance, but the description never states the positive trigger (single known id) or that batch_tasks is the choice for multiple ids, so the picture is clear rather than explicit.

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