Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_clientportal_cli_sandbox_edit

Write or delete one file in an app sandbox, then checkpoint edits before starting a build to apply client portal changes.

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. Write or delete one file in the app's sandbox. Writes or deletes one file in the app's sandbox. After a set of edits, save them with POST .../sandbox/checkpoint, then start a run with externalAgent: true to check, build and deploy them. A React Native app (react_native_app_kernel_v1) writes only under apps/mobile/app-extensions/ and apps/mobile/application-assets/; its routes.ts is generated, so register its screens with POST .../sandbox/extension-routes instead of writing that file. Endpoint: POST /ai-builder-api/cli/projects/{projectId}/sandbox/edit (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).
projectIdYesProject identifier.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false, openWorldHint=true and idempotentHint=false, and the description adds real value on top: side effects, the 409 conflict meaning, the checkpoint-before-build contract, and the RN path restriction. One residual tension is not addressed: `action: delete` removes a file while destructiveHint=false, and no note explains that deletions are recoverable via checkpoint.

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

Conciseness4/5

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

The state precondition and the 409 meaning are front-loaded, and the workflow ordering is easy to parse. It loses a point for redundancy: "Write or delete one file in the app's sandbox" and "Writes or deletes one file in the app's sandbox" are the same sentence twice, and the leading API-family banner ("opens/edits sandboxes and starts builds") describes the whole surface rather than 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 a fully documented nested schema and annotations covering safety, the remaining burden is workflow and side-effect context, which the description discharges well (status gate, checkpoint, run, 409). It stops short of saying what an edit returns (e.g., a version/hash or nothing), which matters slightly because no output schema exists.

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% and each nested body field carries its own description, so the baseline is 3. The description goes beyond the schema by constraining the legal value of `path` for react_native_app_kernel_v1 projects, which is exactly the semantic an agent would otherwise get wrong.

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 first operative sentence states a specific verb and resource: "Write or delete one file in the app's sandbox," which is clearly distinct from the sibling sandbox tools (view, search, checkpoint, register_extension_route). The endpoint line plus the action enum make the scope of one-file-at-a-time editing unambiguous.

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

Usage Guidelines5/5

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

It gives explicit preconditions ("Edit a sandbox only once `sandbox.status` is `ready`"), an explicit follow-up sequence (checkpoint, then start a run with `externalAgent: true`), and an explicit alternative for the React Native kernel case ("register its screens with POST .../sandbox/extension-routes instead of writing that file"). It even decodes the 409 condition, which is exactly the kind of when-not guidance an agent needs.

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