Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_affiliate_create

Create an affiliate for a GoHighLevel location and enroll them in campaigns; if the email already exists in that location, update the existing affiliate instead of duplicating it.

Instructions

Create Affiliate Create an affiliate for a location. An affiliate already registered with the same email in this location is updated instead of duplicated. Endpoint: POST /affiliate-manager/{locationId}/affiliates (Version header: v3; source: v3/affiliate-manager-v3.json) Requires a Sub-Account (location) token. OAuth scopes: affiliate-manager.write

Input Schema

NameRequiredDescriptionDefault
bodyYesRequest body (schema carried verbatim from the official OpenAPI spec).
locationIdYesLocation Id

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) the description discloses auth requirements, the exact endpoint and API version, and the critical non-duplication behavior. One tension worth noting: 'updated instead of duplicated' implies repeated calls converge, while idempotentHint=false suggests otherwise — not a contradiction (the POST can still mutate tier/campaign state), but it leaves retry semantics slightly ambiguous.

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 purpose and the dedupe rule, then auth and endpoint details. The 'Endpoint:'/'source: v3/affiliate-manager-v3.json' line is operational metadata that costs a sentence without helping an agent decide or call, but the rest earns its place.

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

Completeness3/5

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

There is no output schema, so the agent cannot know what an affiliate creation returns (an id? the full record?), and the description does not say. It also does not explain what happens to fields omitted on the update path of the upsert — whether unspecified fields are preserved or cleared — which matters given an 18-field body.

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 nested body documents all 18 fields with examples, so the schema carries the parameter burden. The description adds nothing about required vs optional body fields or how the path-level locationId scopes the affiliate beyond what the schema already states.

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 ('Create an affiliate for a location') and adds a distinguishing behavioral fact: an affiliate already registered with the same email in that location is updated rather than duplicated. That upsert semantics is what separates it from the sibling ghl_affiliate_update, so an agent can route 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 Guidelines4/5

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

Gives clear preconditions: a Sub-Account (location) token and the affiliate-manager.write scope, plus location scope. The dedupe note implicitly tells the caller this is safe to use for re-enrolment rather than reaching for ghl_affiliate_update first, though no sibling is named explicitly and no when-not-to-use case is given.

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

Deploy Server

Other Tools