Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_clientportal_plan_project_change

Validate a planned client portal change of one kind and sign it into a plan before applying, so you can preview what records, modules, appearance, mobile, assets, or domain edits would do without writing anything.

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 a change of one kind and sign a plan for it, without writing anything. The caller's AI writes a change of one kind; the server validates it against that kind's schema and against what exists now (CRM, modules, saved customization) and answers what applying it would do. Nothing is written and no model is called. planId is a signed token over {projectId, locationId, kind, changeHash} that expires at expiresAt; it is null when ok is false. The location is the session's, never the body's. Kinds: records, modules, appearance, mobile, assets, domain; any other kind is 400 unsupported_change_kind naming the supported ones. assets plans also return upload: PUT the image bytes to upload.url with upload.headers, then apply (apply is 409 customizer_image_not_uploaded until they land, and the plan stays open). domain apply returns the DNS records to add in result.dnsRecords; GET /custom-domains reports when it is active. Endpoint: POST /ai-builder-api/projects/{projectId}/changes/plan (Version header: v3; source: v3/clientportal-ai-v3.json) OAuth scopes: clientportal-ai.write

Input Schema

NameRequiredDescriptionDefault
bodyYesRequest body (schema carried verbatim from the official OpenAPI spec).
projectIdYesThe project's id.

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 only give a coarse profile (readOnly=false, idempotent=false, destructive=false), and the description adds a lot beyond that: nothing is written, no model is invoked, `planId` is a signed token over {projectId, locationId, kind, changeHash} with an `expiresAt`, null on `ok:false`, location comes from the session not the body, unsupported kinds yield 400 `unsupported_change_kind`, and assets/domain plans carry extra artifacts (upload URL/headers, dnsRecords). The one flaw is the leading boilerplate calling the API "side-effecting: opens/edits sandboxes and starts builds," which sits in tension with "without writing anything" and can leave the agent unsure whether this call mutates state.

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 substantive content is dense and mostly earns its place, but the leading block about sandbox status, checkpointing, and 409-on-cloud-build is generic AI Builder guidance that does not apply to a plan call and is placed before the actual purpose. Front-loading the irrelevant material costs the reader before they reach the sentence that describes this tool.

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?

With no output schema, the description does the work a return-value spec would: it names `planId`, `expiresAt`, the `upload` artifact for assets, and `dnsRecords` for domain. What it omits is the shape of the validation answer itself (what "what applying it would do" actually contains), which an agent checking `ok`-adjacent results would want.

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 both parameters are documented in-schema, including the kind enumeration and the `change` shape pointer, so the baseline is 3. The description adds only marginal semantics beyond that — that the location is taken from the session and never from the body — while the rest of its parameter-adjacent content (planId composition) concerns output rather than inputs.

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 core sentence is specific and distinguishing: "Check a change of one kind and sign a plan for it, without writing anything" — a concrete verb (plan/check), a resource (project change), and an implicit contrast with the apply sibling. However, the description opens with an unrelated block about the AI Builder API being "side-effecting: opens/edits sandboxes and starts builds," which describes a different part of the surface and muddies what this particular endpoint does.

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 establishes the core usage condition (dry-run validation before applying, `change` shape must come from `GET /changes/schema`, supported kinds enumerated) and points at follow-on steps (upload then apply, DNS records from `result.dnsRecords`, `GET /custom-domains` to confirm activation). It never explicitly says "call this before ghl_clientportal_apply_project_change" or states when planning is unnecessary, so guidance is strong but not exhaustive.

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