Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_clientportal_list_projects

Read-onlyIdempotent

Lists ClientPortal apps in the authenticated sub-account, most recently active first, with filters for ownership and project status plus cursor pagination.

Instructions

CLIENT PORTAL AI BUILDER API (/ai-builder-api) — side-effecting: opens/edits sandboxes and starts builds. Edit a sandbox only once sandbox.status is ready; checkpoint after edits and before starting the run that builds them; 409 means a cloud build owns the sandbox or it is not running. List projects in the caller's location. Lists the ClientPortal apps in the sub-account, most recently active first. A sub-account token sees every app by default; view=mine limits the list to apps the caller created. Endpoint: GET /ai-builder-api/projects (Version header: v3; source: v3/clientportal-ai-v3.json) OAuth scopes: clientportal-ai.readonly Pagination params: limit, cursor — pass them to page through full result sets.

Input Schema

NameRequiredDescriptionDefault
viewNoOwnership scope within the authenticated caller's location. `mine` returns only projects owned by the caller and requires `projects:read`; `all` returns every project in the location and requires `projects:read_all`. The location is always taken from the authenticated session and cannot be overridden. mine
limitNoHow many projects per page (default 50).
cursorNo`meta.nextCursor` from the previous page.
statusNoExact project-status filter. When omitted, all statuses except `deleted` are returned. Results remain scoped by `view` and the authenticated caller's location.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered; the description genuinely adds ordering (most recently active first), the default exclusion of `deleted`, and pagination via limit/cursor. Against that, the leading "side-effecting: opens/edits sandboxes and starts builds" line and the edit/checkpoint rules describe a different class of endpoints and can make an agent second-guess whether this call mutates anything.

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 first two sentences are copy-pasted AI Builder API boilerplate placed ahead of the actual tool description, so the most valuable content is not front-loaded and roughly a third of the text is irrelevant to this read-only list call. What remains (scope, ordering, endpoint, scopes, pagination) is tight and earns its place.

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

Completeness3/5

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

For a 4-param, no-required-param list tool with full schema coverage and no output schema, the essentials (scope, ordering, default status exclusion, pagination, OAuth scope) are all present. What is missing is any hint of the response shape or item fields, and the misleading default-scope sentence plus the irrelevant sandbox warnings leave the agent with an inaccurate mental model despite the surface completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description actively conflicts with the schema: it says "A sub-account token sees every app by default" while the `view` parameter declares default "mine" and differentiates required scopes (projects:read vs projects:read_all). That inconsistency about the default scope is exactly the parameter detail an agent most needs and it is wrong here; the pagination note is the only reliable addition.

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 second and third sentences give a specific verb and resource ("List projects in the caller's location", "Lists the ClientPortal apps in the sub-account, most recently active first"), which is enough to separate it from ghl_clientportal_get_project and ghl_clientportal_create_project. However, the description opens with an API-family preamble about sandboxes and builds that has nothing to do with listing projects and dilutes the purpose statement before it arrives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the view=mine scope and points at limit/cursor for paging, which is useful context, but it never states when to reach for this tool over the sibling ghl_clientportal_get_project or list_templates, and it contains guidance ("checkpoint after edits", "409 means a cloud build owns the sandbox") that is inapplicable to a list operation. Usage is therefore implied rather than prescribed.

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