Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_clientportal_get_project_publishability

Read-onlyIdempotent

Determine whether a project can be published now and which build would go live; optionally pass a reviewed preview run to bound what may go live.

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. Check whether an app can be published now, and which build would go live. Computed by the same resolver as promote-to-production. Without sourceRunId: publishable iff some ready run of this project (caller's location, main lineage) has a sealed build; the newest one goes live with the newest config-only revision made on its lineage. With sourceRunId (the reviewed preview): publishes what that preview shows — its own sealed build, or for a ready run that built nothing, the sealed build it descends from with config-only edits on that lineage; a run that failed or has not finished is reviewed_preview_not_publishable. Send the returned sourceRunId on promote-to-production. Tenant scope comes from the session only. Endpoint: GET /ai-builder-api/projects/{projectId}/publishability (Version header: v3; source: v3/clientportal-ai-v3.json) OAuth scopes: clientportal-ai.readonly

Input Schema

NameRequiredDescriptionDefault
projectIdYesThe project.
sourceRunIdNoRun whose preview the creator is reviewing; bounds what may go live.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, and the description adds substantial behavior beyond them: 409 means a cloud build owns the sandbox, tenant scope comes from the session, `reviewed_preview_not_publishable` is a defined outcome, and it notes the same resolver as promote-to-production. The opening API-family sentence ('side-effecting: opens/edits sandboxes and starts builds') is noisy and inapplicable to this GET endpoint, but it is prefixed as family context rather than a claim about this operation, so it is not a direct annotation contradiction.

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 core statement is front-loaded, but a full paragraph of sandbox/edit/checkpoint guidance that does not apply to a read-only publishability check bloats the definition, and the resolver prose is dense with line-wrap artifacts. Informative but not efficient.

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?

There is no output schema, so the description carries the return burden; it does describe the two key payload notions (publishable versus not, and which build goes live) plus a named status code. It stops short of enumerating the response fields or the full set of non-publishable reasons.

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 the baseline is 3, but the description genuinely adds meaning by contrasting the two modes: absent `sourceRunId` resolves project-wide, present `sourceRunId` bounds what may go live to that preview's sealed build or its ancestor. That is behavioral semantics the schema wording alone does not convey.

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 second sentence gives a specific verb and resource: 'Check whether an app can be published now, and which build would go live.' It then details exactly what the check computes (sealed build, newest config-only revision, lineage rules), which is far more precise than the tool name alone and clearly separates it from ghl_clientportal_promote_project_to_production, which is named as the downstream consumer.

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 explicitly routes the agent: call without `sourceRunId` for a general check, with `sourceRunId` for a reviewed preview, and 'Send the returned sourceRunId on promote-to-production' names the alternative tool and the handoff. It does not state when not to use this tool or what to do when the check returns false, which keeps it short of 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