Skip to main content
Glama
ampware-io

GHL Workflow MCP

by ampware-io

GHL Workflow MCP

An open-source Model Context Protocol server that lets Claude (or any MCP client) read, create and edit GoHighLevel workflows through your own logged-in Chrome session.

It needs no API key and no marketplace app install. The server attaches to a Chrome window over the DevTools protocol, picks up the session token GoHighLevel already holds, and calls the same endpoints the workflow builder uses.

Status: 0.1.0, early release. The write tools check every step against a strict shape validator before anything is saved, but always review a workflow in the GHL builder before you publish it.

What you get

30 tools, all free:

Area

Tools

Connection

launch_chrome, reconnect, test_connection

Read

list_workflows, get_workflow, read_workflow_outline, read_workflow_step, audit_workflow

Write

create_workflow, update_workflow, patch_workflow, delete_workflow, publish_workflow, clone_workflow

Folders

list_folders, create_folder, rename_folder, delete_folder, move_workflow

Location data

list_tags, create_tag, list_users, list_pipelines, list_custom_fields, list_custom_values, list_associations, list_business_fields, list_forms, list_trigger_links, list_email_templates

patch_workflow applies small edits (insert, update, move or delete one step, or rewire a pointer) without resending the whole workflow. It rewires the step pointers on the server side, and it refuses the write if the workflow changed since you last read it.

Related MCP server: GoHighLevel MCP Server

Requirements

  • Node.js 20 or newer

  • Google Chrome (or Chromium)

  • A GoHighLevel account with access to the sub-account you want to work in

Install

Install from GitHub for now; the npm package follows.

Claude Code

claude mcp add ghl-workflow -- npx -y github:ampware-io/ghl-workflow-mcp-oss#v0.1.1

Claude Desktop, Cursor and other MCP clients

Add this to your client's MCP config (for Claude Desktop that is claude_desktop_config.json):

{
  "mcpServers": {
    "ghl-workflow": {
      "command": "npx",
      "args": ["-y", "github:ampware-io/ghl-workflow-mcp-oss#v0.1.1"]
    }
  }
}

From source

git clone https://github.com/ampware-io/ghl-workflow-mcp-oss.git
cd ghl-workflow-mcp-oss
npm install
npm test
node src/index.js --version

Then point your MCP client at node /path/to/ghl-workflow-mcp/src/index.js.

Connecting to GoHighLevel

  1. Ask Claude to connect to GoHighLevel. It calls launch_chrome, which opens a dedicated Chrome window. The window uses its own profile in ~/.ghl-wkfl-mcp/chrome-profile, so your everyday browser is untouched.

  2. Log in to GoHighLevel in that window and open the sub-account you want.

  3. The server detects the sub-account and connects. test_connection confirms it.

To switch sub-accounts, change sub-account in that window, or call reconnect to pick a different tab.

If you would rather start Chrome yourself, launch it with the debug port:

google-chrome --remote-debugging-port=49222 --user-data-dir="$HOME/.ghl-wkfl-mcp/chrome-profile"

Options

Flag / env var

Default

Purpose

--port <n> / GHL_MCP_CDP_PORT

49222

Chrome DevTools debug port

--no-kill-chrome-on-exit

off

Leave the Chrome window open when the server stops

--verbose

off

Debug logging to stderr

GHL_MCP_CACHE_DIR

~/.ghl-wkfl/cache

Local cache of workflows read by patch_workflow

--version

Print the version and exit

How writes are validated

Every action and trigger in a create, update or patch goes through a strict shape validator (src/utils/action-shape-validator.js). It checks each step against the registry in src/registry/action-shapes.json:

  • Unknown step types are dropped, never sent.

  • Steps whose attributes don't match the expected shape are dropped.

  • Anything dropped is listed in skippedActions[], with a reason, and advisory notes go in warnings[].

  • If anything was dropped, the workflow is saved as a draft, so a half-built workflow is never published.

The validator tells you a step is wrong. It does not tell you what every field means.

The step reference: GHL Workflow Docs MCP

Building a correct workflow needs more than access. You need to know each trigger and action type's JSON shape, its required and optional fields, the allowed values, and how steps link together (next, if/else branches, waits, goto). That reference is published separately as the hosted GHL Workflow Docs MCP (https://workflow-docs.ampware.io/mcp): a step reference, captured from 1,600+ real workflows and being live-verified, with worked examples that your assistant can query while it builds. Connect both servers and Claude gets access plus the knowledge to use it well.

Privacy and safety

  • Everything runs on your machine. The server talks only to Chrome on 127.0.0.1 and to GoHighLevel's own endpoints, as you.

  • No telemetry, no licence check and no phone-home.

  • The session token is read from your browser and is never written to disk. The only local files are the dedicated Chrome profile and the workflow cache described above.

  • The server can do anything your GHL user can do in the workflow builder, including deleting workflows. Use a user with the permissions you're comfortable giving an assistant.

Development

npm install
npm test        # node --test 'src/**/*.test.js'

The tests run offline. GoHighLevel and Chrome are mocked, and all fixtures are synthetic.

Disclaimer

This is an independent project. It is not affiliated with, endorsed by or supported by HighLevel Inc. It uses the endpoints GoHighLevel's own web app uses, and those can change without notice.

License

MIT

Available Tools

30 tools
audit_workflowA
Read-only

Audit a workflow for broken entity references. Scans all actions and triggers for pipeline, stage, user, custom field, and custom value IDs, then validates each against the location data. Returns which references are valid, which are broken, and suggests replacements.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesWorkflow ID to audit (UUID format, from list_workflows results)

TDQS

A3.8/5.0
Behavior4/5

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

The readOnlyHint already tells the agent this is a safe read. The description adds genuine behavioral context beyond that: it enumerates the reference types scanned, states the validation source (location data), and describes the shape of the result (valid, broken, suggested replacements). It does not mention size limits or performance cost on large workflows.

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

Conciseness5/5

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

Three tight sentences with no filler: purpose first, then scope of the scan, then the return shape. Nothing restates the tool name or wastes space.

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 and a single fully documented parameter, the description carries the return-value burden well by naming valid/broken classifications and replacement suggestions. It is essentially complete, only slightly short on edge-case behavior such as empty results.

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?

With one parameter at 100% schema description coverage, the schema already documents workflowId fully, including its UUID format and origin from list_workflows. The description adds no additional parameter meaning, so the baseline of 3 applies.

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 description states a specific verb and resource (audit a workflow for broken entity references) and details exactly what is scanned (actions, triggers, pipeline/stage/user/custom field/custom value IDs). That is far more specific than the sibling get_workflow or read_workflow_outline, though no sibling is named explicitly to force the distinction.

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?

The use case is implied by 'audit a workflow for broken entity references,' which tells the agent the trigger condition is suspected stale references. However, there is no explicit when-to-use/when-not guidance and no mention of how this relates to siblings like get_workflow or read_workflow_outline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clone_workflowA
Destructive

Clone an existing workflow, creating an independent copy on the same location. GHL handles all UUID remapping and action chain wiring server-side. By default the clone is named "Copy - {original name}" — pass a custom name to override. Returns the full cloned workflow object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCustom name for the clone. Defaults to "Copy - {original name}".
workflowIdYesThe workflow ID to clone (from list_workflows)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations supply only destructiveHint=true, so the description carries most of the burden and does well: it discloses server-side UUID remapping and action-chain rewiring, the default copy naming, and that the full cloned object is returned. It does not reconcile why a clone is flagged destructive (e.g., whether it consumes quota or creates side effects), which keeps it out of 5 territory.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action, then server-side behavior, then the naming default and return value. No filler or repetition.

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 usefully states it returns the full cloned workflow object, and it covers naming and server-side wiring for a 2-parameter tool. The missing piece is any acknowledgement of the destructiveFlag/side-effect profile, which an agent would want before invoking a mutation.

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 description coverage is 100%, and the description's naming detail ('Copy - {original name}' unless overridden) simply restates what the schema already documents for the name parameter. Baseline 3 applies since the schema does the heavy lifting.

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?

States a specific verb (clone) and resource (workflow), and adds the scope detail 'independent copy on the same location'. It is distinguishable from create_workflow by intent, but the description never names any sibling to sharpen that contrast, so it falls short of a 5.

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?

Usage is only implied by the verb; there is no explicit when-to-clone-vs-create guidance or any stated prerequisite beyond the workflowId source hint in the schema. Adequate but with clear gaps against the create_workflow/update_workflow siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_folderB
Destructive

Create a new workflow folder in the current GHL location. Returns the created folder object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new folder

TDQS

B3.4/5.0
Behavior3/5

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

The annotations declare destructiveHint=true, which is unusual for a create operation, and the description does not reconcile or explain that (e.g., whether the write is irreversible). The description does add one piece of behavioral value beyond annotations by stating it returns the created folder object, which matters since no output schema exists.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and scoped location, followed immediately by the return behavior. No filler or redundancy.

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?

For a single-parameter create tool the description covers the essentials and proactively notes the return value, compensating for the absent output schema. It omits failure modes such as duplicate names or permission requirements, which is a minor gap given the tool's simplicity.

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 description coverage is 100% and there is only one parameter, already documented as 'Name for the new folder' with minLength 1. The description adds no constraint information (uniqueness, character limits, collisions) beyond what the schema provides, so baseline 3 applies.

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?

Specific verb + resource ('Create a new workflow folder') with scope ('in the current GHL location'). The resource is distinguishable from overlapping siblings like create_tag, create_workflow, and rename_folder/delete_folder. It stops short of explicitly contrasting itself with those siblings, so it is clear but not maximally differentiated.

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

Usage Guidelines2/5

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

No guidance on when to create a folder versus creating a workflow directly, no prerequisites (permissions, location context), and no mention of the folder-nesting or naming rules. The agent is told what the tool does but not when to reach for it over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_tagC
Destructive

Create a new tag in the current GoHighLevel location.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNameYesName for the new tag

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare destructiveHint=true, which for a creation tool is a notable behavioral claim the description never addresses — it says nothing about duplicate-name behavior, overwriting, permissions, or reversibility. The description adds only the location scoping, so it neither explains nor contradicts the destructive hint, leaving the agent with an unresolved ambiguity.

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?

A single front-loaded sentence with no filler; nothing redundant. It is not padded, though it is also too spare to earn a 5 on structure alone.

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 one-parameter create tool with no output schema, the essentials are covered and the parameter is documented. However, given the destructiveHint annotation, the definition is incomplete about what the destructive behavior actually is and whether re-creating a name collides.

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?

Only one parameter exists and the schema describes it fully at 100% coverage ('Name for the new tag'), so the schema does the heavy lifting. The description adds no format, length, or uniqueness semantics beyond what the schema already states.

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?

States a specific verb+resource ('Create a new tag') and adds scope ('in the current GoHighLevel location'), so the action is unambiguous. It does not differentiate itself from any sibling (e.g., list_tags for checking existing tags) or clarify whether tag creation is idempotent, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative guidance. The only hint of context is the 'current location' scoping, which an agent must infer places the tag in the active sub-account rather than anywhere else.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_workflowA
Destructive

Create a new workflow. Action and trigger types must come from the enums in this schema. Use the then/else scaffold for if_else conditions; the verbose three-sibling form is also accepted. Salvage decisions surface in skippedActions[] (HARD drops) and warnings[] (advisory). When any HARD drop occurs, status is forced to draft. For field meanings, allowed values and worked examples for every step type, use the GHL Workflow Docs MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWorkflow name (required)
statusNoInitial status (default: draft). Set to "published" to create and publish in one step.
actionsNoAction steps. Omit for an empty workflow. UUIDs and chain wiring are handled automatically.
timezoneNoWorkflow timezone — "account" for location default, or IANA zone (e.g. "America/Los_Angeles"). Default: "account".
triggersNoTriggers to add. Omit for a triggerless workflow.
allowMultipleNoWhen true, the same contact can be enrolled multiple times concurrently. Default: true.
autoMarkAsReadNoWhen true, conversation messages are auto-marked as read. Default: false.
stopOnResponseNoWhen true, pauses workflow execution if a contact responds. Default: false.
allowMultipleOpportunityNoWhen true, allows multiple opportunities per contact. Default: true.
removeContactFromLastStepNoWhen true, contacts are removed after completing the final step. Default: true.

TDQS

A4/5.0
Behavior4/5

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

Annotations only supply destructiveHint=true, so the description carries most of the disclosure burden and it does so well: it explains that salvage decisions surface in skippedActions[] (HARD drops) and warnings[] (advisory), and that a HARD drop forces status to draft. It stops short of saying what causes a HARD drop or whether a call can partially succeed while still returning 2xx.

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?

Front-loaded with the verb+resource, then a sequence of dense, non-redundant sentences; every clause carries information (enum constraint, scaffold guidance, drop semantics, docs pointer). It is slightly crammed with disparate topics for a short description, but there is no filler.

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 10 parameters, nested action/trigger objects, and no output schema, the description does what an agent needs: it explains the salvage/warning return surface and the status-fallback rule, and it delegates deep field documentation to a named companion MCP. The lack of detail on what triggers a HARD drop is the remaining gap.

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 adds real meaning on top: the enum constraint on action/trigger types and the then/else vs three-sibling accepted forms for if_else conditions are structural facts the schema does not express. It leaves the per-field semantics to the external docs MCP rather than restating them.

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 opening sentence states a specific verb and resource ('Create a new workflow'), which is enough to separate it from publish_workflow, clone_workflow, and update_workflow by name alone. It stops short of explicitly scripting the distinction from clone_workflow, which is the nearest overlapping sibling.

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?

The description gives concrete construction directives — action/trigger types must come from the schema enums, use the then/else scaffold for if_else — and routes the agent to the GHL Workflow Docs MCP for per-step-type field meanings. It does not state when to prefer create_workflow over clone_workflow or update_workflow, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_folderA
Destructive

Delete a workflow folder. Any workflows inside the folder are automatically moved to root level by GHL. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesThe folder ID to delete (from list_folders)

TDQS

A4.1/5.0
Behavior4/5

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

destructiveHint=true already declares the operation is destructive, but the description adds genuinely non-obvious behavior: contained workflows are relocated to root level rather than deleted, and the action is irreversible. It does not cover permissions or any partial-failure behavior, keeping it just short of a 5.

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

Conciseness5/5

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

Three short sentences that are front-loaded with the core action, followed by the cascade side effect and the irreversibility warning. No filler.

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 single-parameter destructive tool with a complete schema and a destructive annotation, the description supplies everything needed: what it deletes, what happens to contents, and that it cannot be undone. No output schema is required for a delete operation.

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 folderId is fully documented in the schema (including its provenance from list_folders). The description adds nothing about the parameter, so baseline 3 applies.

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?

States a specific verb and resource ('Delete a workflow folder'), which cleanly distinguishes it from the sibling delete_workflow (which deletes the workflow itself, not a container). The scope is unambiguous without opening the schema.

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?

The purpose implies when it applies, but there is no explicit when-to-use/when-not guidance or reference to alternatives such as rename_folder, move_workflow, or create_folder. An agent can infer usage but is given no routing rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_workflowA
Destructive

Delete a workflow permanently. Returns the deleted workflow name for confirmation. No undo — the workflow is removed from GHL immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesThe workflow ID to delete (from list_workflows)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety profile is known; the description usefully adds that the deletion is permanent, irreversible ('no undo'), applied immediately in GHL, and that the deleted workflow name is echoed back for confirmation. It does not mention auth/permission requirements or any failure modes, but it meaningfully enriches the behavioral picture.

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

Conciseness5/5

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

Three short sentences, zero filler, with the destructive nature and the confirmation return value both front-loaded. Every sentence earns its place.

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 one-parameter destructive tool with annotations covering the safety profile and no output schema, the description covers permanence, immediacy, irreversibility, and the return value. Nothing an agent needs to call it correctly is missing.

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 description coverage is 100% and the single parameter already documents itself, including the hint that the ID comes from list_workflows. The description adds nothing beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Delete a workflow') and adds the scope qualifier 'permanently'. The action is clearly distinct from siblings like clone_workflow, move_workflow, or update_workflow, though it does not explicitly name them.

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

Usage Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance and names no alternatives (e.g., audit_workflow first, or move_workflow to relocate instead). The 'No undo' line is a warning about consequences, not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workflowA
Read-only

Get a GoHighLevel workflow's structure including actions and triggers. By default returns a summary with action names, types, and ordering (compact). Set includeActionDetails=true for full action attributes (warning: responses can be very large). Call list_workflows first to find workflow IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesThe workflow ID (UUID format, from list_workflows results)
includeActionDetailsNoInclude full action attributes/configuration (default: false). Warning: can produce very large responses.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, so safety is already covered. The description adds meaningful behavioral context beyond that: default compact summary with action names/types/ordering, and a warning that includeActionDetails=true can produce very large responses. It does not cover auth or rate limits, but for a read tool this is solid disclosure.

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

Conciseness5/5

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

Three tightly written sentences, front-loaded with purpose, then default behavior, then the size warning and prerequisite. Every sentence carries information and there is no filler.

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?

Given no output schema and moderate complexity, the description adequately explains the return shape (summary of action names, types, ordering) and flags the large-response risk. It falls short only in not distinguishing this tool from sibling read tools like read_workflow_outline and read_workflow_step.

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 the description largely repeats what the schema already states: workflowId comes from list_workflows, includeActionDetails defaults to false, and large responses are possible. It adds no parameter meaning beyond the schema, so the baseline of 3 applies.

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?

States a specific verb and resource: get a GoHighLevel workflow's structure including actions and triggers. This clearly distinguishes it from list/create/update workflow siblings, but it does not differentiate from other read-oriented siblings like read_workflow_outline or read_workflow_step, which an agent might reasonably confuse it with.

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?

The description gives a useful prerequisite ('Call list_workflows first to find workflow IDs') and frames the default versus detailed mode. However, it does not say when to choose get_workflow over read_workflow_outline, read_workflow_step, or audit_workflow, leaving the agent to infer the right granularity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_chromeA

Launch a dedicated Chrome window with GoHighLevel. Call this when test_connection fails because Chrome is not running. First call without confirm returns instructions for the user. Call again with confirm=true after the user agrees to proceed.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet to true to actually launch Chrome. Omit or false to get instructions first.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does disclose the two-phase confirmation behavior that governs side effects, which is genuinely useful. It does not mention persistent side effects such as profile creation or window lifetime, leaving a minor gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the trigger, then the confirm protocol. No filler and every sentence contributes to correct invocation.

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?

For a single-parameter tool with no output schema, the description covers the essential flow and even indicates the first call returns instructions rather than launching. Missing only minor detail on what state the subsequent launch leaves behind.

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 description coverage is 100% and the single confirm parameter is already documented in the schema as 'Set to true to actually launch Chrome.' The description restates this without adding new format or default detail, so the baseline of 3 applies.

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 description states a specific action and resource ('Launch a dedicated Chrome window with GoHighLevel') and clearly separates this tool from its sibling test_connection by naming the failure condition that selects it. An agent can identify this tool without opening the schema.

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 an explicit trigger ('Call this when test_connection fails because Chrome is not running') and a precise two-step protocol: first call without confirm to get instructions, then confirm=true after user agreement. Both when-to-use and the sequencing are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_associationsA
Read-only

List object associations for contacts in the current GoHighLevel location. Returns association types and cardinality between objects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

readOnlyHint=true already covers the safety profile, so the description earns credit for going further: it discloses the return payload (association types and cardinality) and that results are implicitly scoped to the current location's contacts. Given there is no output schema, this return-shape disclosure is genuinely additive; only pagination/volume behavior is unaddressed.

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

Conciseness5/5

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

Two tight sentences, zero filler, with the core purpose front-loaded and the return content immediately after. Every clause earns its place.

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?

For a no-parameter list tool without an output schema, the description covers scope (current location, contacts) and return content (association types, cardinality), which is most of what an agent needs. It stops short of describing result volume, ordering, or how association types map to objects, so a small gap remains.

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?

The tool takes zero parameters and declares additionalProperties=false, so there is no parameter semantics for the description to explain. The baseline for a parameterless tool is 4, and nothing in the text misleads about 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?

States a specific verb (List) and resource (object associations) plus the scoping domain (contacts in the current GoHighLevel location) and what is returned (association types and cardinality). No sibling tool overlaps with associations, but the description never names or differentiates against alternatives, so this lands just short of a 5.

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

Usage Guidelines2/5

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

The description explains what the tool returns but gives no guidance on when to reach for it versus the many other list_* siblings. There are no prerequisites, exclusions, or alternative routes mentioned, leaving usage entirely to inference from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_business_fieldsB
Read-only

List the business object definition and its fields in the current GoHighLevel location. Returns the object metadata and all custom/standard fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds that it returns object metadata plus custom and standard fields, which is useful scope info, but says nothing about location/auth requirements despite referencing 'the current location'.

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?

Two tight sentences with the listing action front-loaded. Minor redundancy between 'List ... fields' and 'all custom/standard fields', but no wasted clauses.

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, no parameters, and a read-only annotation, the description adequately covers what the tool does and roughly what it returns. The missing piece is sibling differentiation, which is a minor gap for a zero-input read tool.

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?

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to compensate for on the parameter side.

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?

States a specific verb (List) and resource (business object definition and its fields) scoped to the current location. However, it does not distinguish itself from the very similar sibling list_custom_fields, which an agent could easily confuse it with.

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

Usage Guidelines2/5

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

No guidance on when to use this versus list_custom_fields or list_custom_values, despite those being obvious alternatives in the sibling set. The agent must infer selection criteria on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_fieldsA
Read-only

List custom fields in the current GoHighLevel location. Requires a model parameter to specify which entity type (contact or opportunity). Contact and opportunity custom fields use different API endpoints internally.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesEntity model to list custom fields for

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered and the bar is lower. The description adds that contact and opportunity fields are served by different internal endpoints, which is extra context, but it says nothing about pagination, result size, or ordering for a list operation.

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?

Two front-loaded sentences with no filler; the purpose comes first and the parameter constraint second. The closing note about internal API endpoints is mildly tangential but short enough to earn its place.

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?

For a one-parameter read-only list tool with no output schema, the description covers location scoping and the entity-type requirement adequately. Additional detail on return shape or pagination would help but is not critical given the annotations.

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 the single parameter's enum and description are fully documented in the schema, so the schema does the heavy lifting. The description restates that model selects the entity type (contact or opportunity) without adding format or behavioral detail beyond the schema.

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 description gives a specific verb (List) and resource (custom fields) scoped to the current GoHighLevel location, and names the two entity types it operates over. It is clear on its face, but does not explicitly differentiate itself from nearby siblings like list_custom_values or list_business_fields, so it stops short of a 5.

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 states that a model parameter must be supplied and what that parameter selects, which implies the usage context (listing fields for contacts vs opportunities). There is no explicit when-to-use/when-not-to-use guidance and no routing to an alternative sibling for related data such as custom values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_valuesA
Read-only

List custom values (template variables) for conversations in the current GoHighLevel location. Returns system-defined static variables and location-specific custom values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful context by stating the location scoping and the two categories of returned values (system-defined static vs. location-specific custom), but says nothing about pagination, limits, or auth.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and resource, and the second sentence delivers return-shape information rather than filler.

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?

For a zero-parameter read-only list with no output schema, the description usefully compensates by describing what comes back and the location scope. It leaves pagination behavior unstated, which is a minor gap for a list endpoint.

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?

The tool takes zero parameters, so there is nothing for the description to compensate for. Baseline 4 applies; the description correctly avoids inventing filter semantics.

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?

States a specific verb+resource ('List custom values') and disambiguates with the parenthetical '(template variables)', which separates it from the similarly named sibling list_custom_fields. It does not explicitly name which sibling to prefer, but the resource is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the adjacent list_custom_fields sibling. The 'list' verb plus readOnlyHint implies a safe read, but the agent gets no routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_templatesA
Read-only

List all email templates in the current GoHighLevel location. Returns template names and IDs for use in workflow email actions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes this is a safe read, so the bar is lower. The description adds real value by disclosing the return payload ('template names and IDs') and the location scoping, both of which matter because no output schema exists to convey them.

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

Conciseness5/5

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

Two short sentences with zero filler, and the core action and scope are front-loaded before the return-value detail. Every clause carries information.

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?

For a no-argument read tool with no output schema, describing the returned fields and location scope covers what an agent needs. Minor gaps remain around volume/pagination behavior and whether results can be filtered, but nothing blocks correct invocation.

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?

The tool takes zero parameters, so there is no parameter semantics to describe; the baseline for a 0-param tool is 4. Nothing in the description contradicts or misrepresents the empty schema.

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?

States a specific verb (List) and resource (email templates) with a scope qualifier ('in the current GoHighLevel location'). It is trivially distinguishable from siblings such as list_tags or list_pipelines, and it even names what it returns.

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?

The phrase 'for use in workflow email actions' implies the downstream context for the returned IDs, which hints at when this tool is useful. However, it gives no explicit when-to-use condition, no prerequisites, and names no alternative tool for retrieving templates by other means.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_foldersA
Read-only

List all workflow folders in the current GHL location. Returns folder names and IDs. Use folder IDs with move_workflow or list_workflows (folderId param).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

The readOnlyHint already tells the agent this is a safe read. The description adds scope (location-bound) and the shape of the return (folder names and IDs), which is helpful since no output schema exists, but it says nothing about pagination, ordering, or behavior with an empty location.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and scope, then output, then downstream usage. No filler and nothing redundant.

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 parameters, no nested objects, and no output schema, the description carries most of the burden and does so adequately by naming the returned fields and how to consume them. It stops short of documenting ordering or empty-result behavior, which is a minor gap for a simple lookup.

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?

The tool takes zero parameters, so there is no parameter semantics to document; baseline 4 applies. The only parameter-like detail mentioned (folderId) belongs to other tools and is correctly framed as a downstream input.

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?

States a specific verb (List), resource (workflow folders), and scope (current GHL location), and previews the returned fields (names and IDs). It is clearly distinguishable from siblings like list_tags or list_pipelines by naming the exact resource.

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 tells the agent what to do with the result (use folder IDs with move_workflow or list_workflows), which is useful downstream routing, but it never states when this tool should or should not be chosen over siblings, nor any prerequisites. Usage is implied by the ID-consumption note rather than explicit selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_formsA
Read-only

List all forms in the current GoHighLevel location. Returns form names and IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already declares this is a safe read, so the description only needs to add context. It does add the location scoping and the return shape ("form names and IDs"), which is valuable with no output schema, but says nothing about pagination, result limits, or auth/permission requirements.

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

Conciseness5/5

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

Two short sentences, no filler. The scope is front-loaded in the first sentence and the return shape follows immediately.

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?

For a zero-parameter read tool with no output schema, the description covers what is returned and where it is scoped, which is essentially everything needed to call it correctly. Only minor gaps remain, such as whether the result set can be large or truncated.

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?

The tool takes zero parameters and the schema is empty with additionalProperties=false, so there is nothing to document and no risk of misinterpretation. Baseline 4 applies since the description cannot add parameter meaning that does not exist.

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?

States a specific verb and resource ("List all forms") plus the scope ("in the current GoHighLevel location"). The resource is unique among the many list_* siblings, so the agent can distinguish it without opening the schema, though it never explicitly contrasts itself with any alternative.

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?

Usage is only implied by the verb: an agent can infer this is the way to enumerate forms, but there is no statement of when to prefer it over other discovery tools (e.g. list_custom_fields, list_workflows) or any preconditions such as a required location context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pipelinesA
Read-only

List all opportunity pipelines in the current GoHighLevel location. Returns pipeline names with their stages (name, position).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotation already marks readOnlyHint=true, so the safety profile is clear. The description adds the return format ('pipeline names with their stages (name, position)'), which is useful context beyond the annotation. It does not mention pagination or whether all pipelines are always returned, but with annotations covering safety, this is a solid addition.

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

Conciseness5/5

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

Two sentences, front-loaded with the purpose and then the return shape. No wasted words; every sentence earns its place.

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 simple list tool with no parameters and no output schema, the description explains what it returns ('pipeline names with their stages (name, position)'), which is the main missing piece from structured data. It is complete enough for an agent to call correctly.

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?

The schema has zero parameters, so the baseline is 4 per the rubric. No parameter information is needed in the description.

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?

States a specific verb ('List') and resource ('opportunity pipelines'), scoped to the current GoHighLevel location. Siblings are all different resources (tags, folders, workflows), so no direct alternative needs naming, but the description does not explicitly differentiate beyond the resource name.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no alternatives, and no exclusions. It simply describes the action; the agent must infer that this tool is for enumerating pipelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsA
Read-only

List all tags in the current GoHighLevel location. Returns tag names and IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already declares the safe-read profile, so the bar is lower. The description adds useful scope ('current GoHighLevel location') and the return shape (tag names and IDs) absent from the annotations, but says nothing about pagination or result limits for a list operation.

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

Conciseness5/5

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

Two short sentences with zero filler, front-loading the action and scope before the return detail. Every clause earns its place.

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?

For a no-parameter, read-only list tool with the safety profile already covered by annotations, the description supplies scope and return fields. The main omission is any pagination or result-size behavior, which is minor for this weight class.

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?

There are zero parameters, so the baseline is 4; schema coverage is 100% and additionalProperties=false confirms no hidden inputs. No parameter explanation is needed or expected.

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?

States a specific verb (List) and resource (tags) plus the scope ('current GoHighLevel location'), making it distinguishable from sibling create_tag by verb alone. It does not explicitly name an alternative, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, prerequisites, or comparison to alternatives; the only cue is that the verb 'List' implies a read. An agent could reasonably infer usage, but nothing is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersA
Read-only

List all users with access to the current GoHighLevel location. Returns user names, emails, roles, and permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context by specifying the scope ('current location') and the returned fields, but it does not disclose other behavioral traits such as pagination, rate limits, or authentication requirements beyond what a read-only list implies.

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

Conciseness5/5

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

Two tightly written sentences with zero waste. The core purpose is front-loaded, and the second sentence efficiently describes the return values without an output schema.

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?

For a simple parameterless list tool with annotations covering safety, the description is nearly complete: it states the scope and returned fields. It does not mention pagination or how the 'current location' is determined, but those are minor gaps for this level of complexity.

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?

The tool has zero parameters, so the baseline is 4. The schema coverage is 100% but there is nothing for the description to compensate for; no parameter semantics are needed.

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 description states a specific verb ('List') and resource ('all users') with a clear scope ('with access to the current GoHighLevel location'). This resource focus clearly distinguishes it from sibling list_* tools such as list_tags and list_pipelines, which target different entities.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description merely states what it does; it does not help an agent decide between this and any other tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workflowsA
Read-only

List all workflows in the current GoHighLevel location. Returns workflow summaries including name, ID, status, and dates. Auto-fetches all pages by default. Optionally pass limit/offset to get a specific page, or sortBy/sortOrder to control ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax workflows to return (overrides auto-fetch-all behavior)
offsetNoNumber of workflows to skip (use with limit for pagination)
sortByNoField to sort by (default: name)
folderIdNoFilter to workflows in a specific folder (folder ID from list_folders). Omit to list all workflows at root level.
sortOrderNoSort direction (default: asc)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so safety is covered. The description adds useful behavior beyond that: it auto-fetches all pages by default, which is non-obvious and important for an agent to know, and it describes what the summaries contain.

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?

Three sentences, front-loaded with purpose, then return shape, then behavior and parameters. Efficient and no wasted phrasing, though the return-value detail is slightly redundant without an output schema.

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?

Complete enough for a read-only list tool: purpose, scope, return contents, and pagination behavior are all covered. No output schema exists, so explaining the summaries is helpful; only finer details like error or empty-result behavior are missing.

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 description coverage is 100%, so the schema already documents every parameter with defaults and semantics. The description restates the pagination and sorting intent but adds no syntax or format details beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb+resource (list workflows) and scopes it to the current GoHighLevel location. It is distinguishable from siblings like get_workflow, audit_workflow, and list_folders because it describes a collection listing with summaries.

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?

Explains the default behavior (auto-fetch all pages) and when to override it with limit/offset, and mentions sorting. It does not explicitly name a sibling as an alternative or state when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_workflowA

Move a workflow into a folder, or back to root level. To move to root, omit folderId or pass null.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdNoTarget folder ID (from list_folders). Omit or null to move to root level.
workflowIdYesThe workflow ID to move (from list_workflows)

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. Beyond the root-move mechanic it says nothing about whether the move requires folder permissions, what happens if folderId is invalid, whether the workflow's identity/steps are preserved, or whether the move is reversible — significant gaps for a mutation tool.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed immediately by the non-obvious root-move rule. Every clause earns its place.

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?

For a simple two-parameter move with full schema coverage and no output schema, the description covers both invocation modes adequately. It falls short only on error/permission behavior, which is a modest gap at this complexity.

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 description coverage is 100%, so both parameters are already documented in the schema, including the 'omit or null for root' behavior the description also repeats. The description adds no meaning beyond that structured data, so the baseline of 3 applies.

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?

States a specific verb (move) and resource (workflow) plus both possible destinations (a folder, or root level). No sibling tool performs this operation, so an agent can route to it unambiguously.

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 operational variant — omit folderId or pass null to move to root — which is genuine usage guidance, but there is no when-to-use vs. when-not guidance and no named alternatives among the folder/workflow siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_workflowA
Destructive

Apply an ordered list of patch operations to a workflow with deterministic server-side pointer rewiring. Ops: insert_after / update_step / delete_step / move / rewire_step (plus add_trigger / update_trigger / remove_trigger). Param roles — step_id = the SUBJECT the op acts on (update_step/delete_step/move/rewire_step); after_step_id = the ANCHOR to position after (insert_after/move); next = the target pointer for rewire_step (a step ID or null to terminate); trigger_id = the subject trigger. insert_after also accepts step_id as an alias for after_step_id. rewire_step overwrites a non-branched step scalar next in place (no splice, no reorder) — it does NOT validate for cycles or orphaned downstream steps; the caller owns flow correctness. All-or-nothing: any op failure aborts before any GHL write. Detects external workflow changes via the version field. Use after read_workflow_outline + read_workflow_step. For whole-workflow rewrites or branched-step splices, fall back to update_workflow. For field meanings, allowed values and worked examples for every step type, use the GHL Workflow Docs MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYesOrdered list of patch operations
workflowIdYesWorkflow ID (from list_workflows)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true, yet the description discloses transactional semantics (all-or-nothing, aborts before any GHL write), optimistic-concurrency behavior (detects external workflow changes via the version field), and an explicit non-guarantee (rewire_step does not validate for cycles or orphaned downstream steps; the caller owns flow correctness). That 'you are responsible for' framing is exactly the kind of hazard disclosure a destructive tool needs.

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?

Front-loaded with the core purpose before diving into op taxonomy and semantics, and every clause carries information. It is dense to the point of terseness in the 'Param roles —' fragment, and some op-list detail duplicates the schema's const values, which slightly dilutes conciseness.

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 destructive, no-output-schema mutation tool with a highly polymorphic operations array, the description covers purpose, op semantics, parameter roles, failure semantics, concurrency, prerequisites, and the escape hatch to a sibling. Nothing an agent needs to call this safely appears missing.

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 adds real semantic value the schema cannot express: the subject-vs-anchor distinction between step_id and after_step_id, the step_id alias accepted by insert_after, and that next is a scalar pointer overwrite rather than a splice. The only gap is that per-op required-field combinations are left to the schema's anyOf.

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?

States a specific verb (apply an ordered list of patch operations) on a specific resource (a workflow) with a stated mechanism (deterministic server-side pointer rewiring). It enumerates the exact op set and explicitly distinguishes itself from the sibling update_workflow for whole-workflow rewrites. An agent can select this over update_workflow without opening either schema.

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?

Explicit prerequisites ('Use after read_workflow_outline + read_workflow_step'), an explicit exclusion boundary ('For whole-workflow rewrites or branched-step splices, fall back to update_workflow'), and a pointer to the docs MCP for field meanings. This is the when/when-not/alternatives pattern at full strength.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_workflowA
Destructive

Publish a draft workflow, changing its status to published. The workflow will become active and start processing contacts when triggered. Returns the full workflow object after publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesThe workflow ID to publish (from list_workflows)

TDQS

A3.8/5.0
Behavior4/5

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

The destructiveHint annotation already flags this as a significant state change, and the description adds real context beyond it: the workflow becomes active, will start processing contacts when triggered, and the full workflow object is returned. It stops short of stating whether publishing is reversible or what permissions are required.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and state change, followed by the operational consequence and the return value. No filler, and the return-value sentence is useful given there is no output schema.

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?

For a single-parameter state-transition tool with only a destructiveHint annotation and no output schema, the description covers the action, the consequence, and the return shape. Missing only edge-case behavior such as what happens if the workflow is already published or lacks required steps.

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 description coverage is 100% and the single workflowId parameter is fully documented in the schema, including its source ('from list_workflows'). The description adds no parameter-level meaning, so the baseline of 3 applies.

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 description states a specific verb and resource ('Publish a draft workflow, changing its status to published') and names the state transition, so the agent knows exactly what the tool does. It does not explicitly differentiate itself from nearby siblings like update_workflow or patch_workflow, so it falls short of a 5.

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?

Usage is implied by the precondition 'draft workflow' — use this when a workflow is in draft and should go live. There is no explicit when-not guidance, no mention of prerequisites or authorization, and no routing to alternatives such as update_workflow for non-status changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_workflow_outlineA
Read-only

(FREE) Cheap targeted read — returns workflow metadata + step IDs/types/names/order/next/parentKey only (no attributes). Prefer this as the FIRST read when editing a workflow; follow with read_workflow_step for any step you intend to mutate.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesWorkflow ID (from list_workflows)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful context beyond that: it is free/cheap, it returns a reduced projection, and it explicitly excludes attributes — a real behavioral constraint an agent needs to know. It does not cover pagination or error behavior, keeping it short of a 5.

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

Conciseness5/5

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

Dense and front-loaded: cost signal first, then return shape, then routing advice. Every clause earns its place with no filler.

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?

With no output schema, the description compensates by enumerating what is returned and what is omitted (no attributes), which is exactly the information needed to decide between this and read_workflow_step. Nothing critical for correct invocation is missing.

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?

There is only one parameter and schema coverage is 100%, with the schema itself stating the ID comes from list_workflows. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb (read) and resource (workflow outline), and precisely enumerates the returned fields: metadata plus step IDs/types/names/order/next/parentKey. It clearly distinguishes itself from get_workflow (full read) and read_workflow_step (per-step detail).

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?

Explicitly says to prefer this as the FIRST read when editing a workflow and to follow with read_workflow_step for steps to be mutated. Names the alternative and the condition that selects it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_workflow_stepA
Read-only

(FREE) Returns one step's full JSON for a given workflow + step ID. Use after read_workflow_outline to inspect a specific step before patching it. Returns a structured step_not_found error with valid_step_ids when the step does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepIdYesStep ID (from read_workflow_outline.steps[].id)
workflowIdYesWorkflow ID (from list_workflows)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so safety is covered. The description adds value beyond that: the '(FREE)' cost signal and the specific failure behavior ('structured step_not_found error with valid_step_ids') let the agent anticipate and handle the error path.

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

Conciseness5/5

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

Three tight sentences with zero filler. The core action is front-loaded, followed by the usage ordering and the error contract, each earning its place.

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?

For a read-only tool with full schema coverage and annotations carrying the safety profile, the description covers action, sequencing, and the notable error case. It stops short of describing return structure or pagination, but no output schema exists and the 'full JSON' phrasing is sufficient for calling it correctly.

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 description coverage is 100% – both workflowId and stepId are documented in the schema with their source references. The description only restates 'workflow + step ID', adding no format or syntax detail beyond the schema, so the baseline of 3 applies.

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?

States a precise verb and resource ('Returns one step's full JSON for a given workflow + step ID') plus scope. It also differentiates itself from siblings by naming read_workflow_outline and the patching workflow, so an agent can place it without opening the schema.

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?

Explicitly sequences usage: 'Use after read_workflow_outline to inspect a specific step before patching it.' This names the predecessor tool and the downstream tool, giving the agent a clear when-to-use condition rather than leaving it to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconnectA

Re-scan Chrome for GoHighLevel tabs and switch to a different tab or location. Use this to change locations without restarting the server. If called with no targetId, lists available GHL tabs. If called with a targetId, switches to that tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetIdNoTab target ID to connect to (from a previous reconnect call that listed tabs). Omit to list available tabs.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the key behavioral trait: this is a re-scan/switch operation that avoids a server restart, with dual list-vs-switch modes. It omits error behavior for an invalid targetId and any side effects, keeping it from a 5.

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?

Four short sentences, front-loaded with the primary action, with no filler. The last two sentences partially repeat what the schema already documents, preventing a perfect score.

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?

For a single-parameter tool with no output schema, the description covers purpose, the two modes, and the practical benefit. Only return details and failure handling are unaddressed, which is a minor gap here.

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 the schema description already explains that targetId comes from a prior listing call and that omitting it lists tabs. The description restates this rather than adding format or additional meaning, so the baseline 3 applies.

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?

States a concrete verb and resource (re-scan Chrome for GoHighLevel tabs, then switch tab/location), which is clearly distinct from browser-lifecycle siblings like launch_chrome and the many read/list_* tools. It doesn't explicitly name those siblings, but the action is unambiguous.

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?

Gives a clear context for use ('change locations without restarting the server') and spells out the two invocation modes: omit targetId to list tabs, supply it to switch. It stops short of naming alternatives (e.g., launch_chrome/test_connection) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_folderA

Rename an existing workflow folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the folder
folderIdYesThe folder ID to rename (from list_folders)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so the description must carry the behavioral burden. It indicates a mutation, but doesn't detail permissions, side effects, or return behavior. The description implies the operation targets an existing folder but lacks depth for a mutation tool.

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

Conciseness5/5

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

A single, direct sentence that conveys the core action without any extraneous information.

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?

Given no annotations and no output schema, the description is minimal. For a simple rename operation, it covers the basic action, but lacks comprehensive behavioral details that would be expected without structured support.

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 the schema fully describes both parameters. The description adds no additional parameter semantics, so the baseline would be 3, but the high coverage suggests the schema handles it completely, warranting a 4 for relying on schema without need for compensation.

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?

States a specific verb (rename) and resource (workflow folder), clearly distinguishing it from siblings like create_folder, delete_folder, and move_workflow.

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?

Implies usage on an existing folder, but doesn't state when to use this vs alternatives or any prerequisites beyond the obvious requirement of an existing folder ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionA
Read-only

Verify Chrome is reachable, GHL tab is found, and Firebase token is extractable. Call this first to confirm the MCP server can communicate with GoHighLevel.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safe read-only profile. The description adds substantive detail beyond that: the three specific preconditions it probes (Chrome reachability, GHL tab, Firebase token), which is real behavioral context. It omits what failure output or partial-failure states look like.

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

Conciseness5/5

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

Two tight sentences with no filler; the verification targets come first and the call-ordering instruction follows. Every clause earns its place.

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?

For a three-dependency diagnostic with no output schema, the description covers what is checked and when to run it. It stops short of describing the result shape or the remediation path when a check fails, which is the only meaningful gap.

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?

Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter semantics are needed or missing.

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?

States a specific verb ('Verify') and enumerates the exact resources checked: Chrome reachability, GHL tab presence, and Firebase token extraction. None of the siblings (reconnect, launch_chrome, list_*) do this, so an agent can identify it immediately.

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?

Explicitly says 'Call this first to confirm the MCP server can communicate with GoHighLevel,' giving clear sequencing context. It does not mention what to do on failure (e.g., fall back to launch_chrome or reconnect), which would have made the guidance complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workflowA
Destructive

Update an existing workflow with partial changes. Action and trigger types must come from the enums in this schema. Use the then/else scaffold for if_else; verbose three-sibling form also accepted. Pass only fields you want to change. Salvage decisions surface in skippedActions[] and warnings[]. When any HARD drop occurs, status is forced to draft. For field meanings, allowed values and worked examples for every step type, use the GHL Workflow Docs MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew workflow name
statusNoNew workflow status
actionsNoComplete replacement action list. Include existing action IDs to keep them, omit ID for new actions.
timezoneNoWorkflow timezone — use "account" for the location default, or an IANA zone (e.g. "America/Los_Angeles"). Preserved on partial updates.
triggersNoComplete replacement trigger list. Include existing trigger IDs to keep/update them, omit ID for new triggers. Triggers in the workflow whose IDs are not in this array will be DELETED. Pass [] to delete ALL triggers. Omit entirely to leave triggers untouched.
workflowIdYesThe workflow ID to update (from list_workflows)
allowMultipleNoWhen true, the same contact can be enrolled in this workflow multiple times concurrently. Preserved on partial updates.
autoMarkAsReadNoWhen true, conversation messages received during the workflow are auto-marked as read. Preserved on partial updates.
stopOnResponseNoWhen true, pauses workflow execution if a contact responds. Preserved on partial updates.
allowMultipleOpportunityNoWhen true, allows multiple opportunities per contact in this workflow. Preserved on partial updates.
removeContactFromLastStepNoWhen true, contacts are removed from the workflow after completing the final step. Preserved on partial updates.

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the destructiveHint annotation by disclosing salvage behavior (skippedActions[], warnings[]) and a consequential side effect: any HARD drop forces status to draft. The schema also makes clear that omitted trigger IDs are DELETED. It does not mention auth requirements or reversibility, keeping it short of a 5.

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?

Front-loaded with the core action and constraint, then supporting behavior and a docs pointer. Six tight sentences with little waste, though the enum/scaffold sentence is dense and slightly harder to parse.

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?

For an 11-parameter mutation tool with no output schema, the description helpfully explains where salvage/warning information surfaces and the forced-draft consequence. It also points to external docs for step-type specifics, covering the main gap, though it leaves auth/reversibility unstated.

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 description coverage is 100%, so the baseline is 3, but the description adds real meaning: enum-sourcing requirement for types, the then/else scaffold for if_else, and the replace-not-merge semantics of the actions/triggers arrays. Minor caveat: it says action types 'must come from the enums in this schema,' yet no enum exists for action type in the schema.

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?

States a specific verb and resource ('Update an existing workflow') and adds the key modifier 'with partial changes,' which tells the agent it is a merge-style operation. It does not, however, contrast itself with the sibling patch_workflow, which an agent could reasonably confuse with partial updates.

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?

Gives operational guidance ('Pass only fields you want to change') and routes the agent to the GHL Workflow Docs MCP for field-level detail. It never says when to prefer this over patch_workflow or create_workflow, so alternative selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 30 tool updatesv0.1.1
    • First observedaudit_workflow
    • First observedclone_workflow
    • First observedcreate_folder
    • First observedcreate_tag
    • First observedcreate_workflow
    • First observeddelete_folder
    • First observeddelete_workflow
    • First observedget_workflow
    • First observedlaunch_chrome
    • First observedlist_associations
    • First observedlist_business_fields
    • First observedlist_custom_fields
    • First observedlist_custom_values
    • First observedlist_email_templates
    • First observedlist_folders
    • First observedlist_forms
    • First observedlist_pipelines
    • First observedlist_tags
    • First observedlist_trigger_links
    • First observedlist_users
    • First observedlist_workflows
    • First observedmove_workflow
    • First observedpatch_workflow
    • First observedpublish_workflow
    • First observedread_workflow_outline
    • First observedread_workflow_step
    • First observedreconnect
    • First observedrename_folder
    • First observedtest_connection
    • First observedupdate_workflow

TDQS

A3.7/5.0

Scored across 30 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, with descriptions explicitly guiding when to use which tool (e.g., get_workflow vs read_workflow_outline vs read_workflow_step, and update_workflow vs patch_workflow). The list_* tools are separated by entity type, and connection tools are unique. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_tags, create_workflow, read_workflow_step, patch_workflow). The few single-verb names like reconnect and launch_chrome are still clear and consistent with the overall style.

Tool Count3/5

With 30 tools, the set is heavy, but the server covers a broad GoHighLevel domain including many entity types needed for workflow construction. Each tool serves a distinct purpose, though some consolidation (e.g., a generic list tool with a type parameter) could reduce the count without losing functionality.

Completeness4/5

The server provides comprehensive CRUD and lifecycle coverage for workflows (create, read, update, delete, publish, clone, patch) and folders, plus all the list operations needed to reference GHL entities. Minor gaps exist, such as no update or delete for tags, but these are not critical for core workflow management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Connects Claude Desktop to GoHighLevel CRM, providing 269+ tools across 19 categories for complete contact management, messaging, sales, marketing, e-commerce, and business operations through AI automation.
    13 npm
    194
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    GoHighLevel MCP server for Claude. 212 tools across 43 modules, including the only programmatic GHL workflow builder (private API, reverse-engineered), funnel + page editor, form builder, pipeline builder, pre-deploy validator, multi-sub-account switching, bulk operations, and full account export. $97 one-time, lifetime updates.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to manage GoHighLevel CRM contacts, pipelines, and workflows through natural language commands.
    69 npm
    MIT