Connections live
10/10
All ✓ Connected
Tools per client
36
9 categories
Total tool calls
360
36 × 10 routes
MCP endpoint
services.lead
PIT + locationId per client
flag Why this page exists
Topher generated a Private Integration Token (PIT) in each GHL sub-account and Vegas/Linq wired 10 separate MCP connections in ~/.claude.json, each pointed at GoHighLevel's native MCP server. Confirmed via claude mcp list on 2026-05-21.
Circa didn't know this existed. Without this playbook, Circa tells Topher to "go into the sub-account and add this tag" — manual work. With this playbook, Circa calls mcp__ghl-bclean__contacts_add-tags directly and reports back. Same outcome, zero Topher friction.
This is the internal-setup proof-of-concept work behind CLI-51 "the gate" — AD's own house first, then serial client rollout. One Circa upgrade benefits all 10 clients in parallel.
alt_route Per-client routing matrix
Map of MCP namespace → client. To act in a client's GHL, prefix the tool with the right namespace.
| Namespace | Client | Phase |
|---|---|---|
| ghl-bclean | B Clean Carpet | launch |
| ghl-delawarelanes | Delaware Lanes | launch |
| ghl-keeler | Keeler Carpentry | launch |
| ghl-madebyaspire | Made By Aspire Agency marketing site, not a client engagement | live |
| ghl-modernmaid | The Modern Maid | launch |
| ghl-nrx | NRX Asphalt | live |
| ghl-patina | Patina Salon | build |
| ghl-petalswings | PetalsWings | launch |
| ghl-photosbyb4 | PhotosbyB4 | live |
| ghl-tees | Tees Flooring | launch |
Clients in the roster without MCP connections
- Paved By Infiniti · contract — Pre-launch — no live GHL sub-account yet
- Heel Quik · build — Pre-launch — no live GHL sub-account yet
- Willowbrook HOA · build — HOA — no commercial GHL engagement
Onboard each via the runbook below when their sub-account goes live.
build Tool catalog — 36 tools per namespace
Every namespace exposes all 36 tools. Total addressable surface: 360 tool routes.
Contacts
(8 tools)contacts_get-contact
Fetch full contact profile by ID
contacts_get-contacts
List contacts with filtering
contacts_get-all-tasks
Pull all tasks for a contact
contacts_add-tags
Add tags to a contact
contacts_remove-tags
Remove tags from a contact
contacts_create-contact
Create new contact
contacts_update-contact
Update existing contact fields
contacts_upsert-contact
Update-or-create contact (dedupe)
Conversations
(3 tools)conversations_search-conversation
Search/filter conversations
conversations_get-messages
Get message history by conversation ID
conversations_send-a-new-message
Send a new message into a thread
Calendars
(2 tools)calendars_get-calendar-events
List calendar events (by user/group/cal)
calendars_get-appointment-notes
Notes for a specific appointment
Opportunities
(4 tools)opportunities_get-pipelines
List all pipelines
opportunities_search-opportunity
Search opportunities
opportunities_get-opportunity
Fetch opportunity by ID
opportunities_update-opportunity
Update opportunity stage/fields
Payments
(2 tools)payments_get-order-by-id
Retrieve a payment order
payments_list-transactions
Paginated transactions list
Locations
(2 tools)locations_get-location
Sub-account details by location ID
locations_get-custom-fields
Custom field definitions for a location
Blogs
(7 tools)blogs_get-blogs
List all blog sites for a location
blogs_get-blog-post
Get posts for a blog site
blogs_get-all-blog-authors-by-location
List blog authors
blogs_get-all-categories-by-location
List blog categories
blogs_check-url-slug-exists
Check slug availability before publish
blogs_create-blog-post
Create new blog post
blogs_update-blog-post
Update existing blog post
Emails
(2 tools)emails_fetch-template
Get email templates by location
emails_create-template
Create a new email template
Social media posting
(6 tools)social-media-posting_get-account
List connected accounts + groups
social-media-posting_get-social-media-statistics
Analytics across multiple accounts
social-media-posting_get-posts
List posts
social-media-posting_get-post
Get a specific post
social-media-posting_create-post
Publish a post
social-media-posting_edit-post
Edit an existing post
policy Governance — when Circa acts directly vs. confirms first
All get_* / list_* / search_* reads. Lookups, transcripts, calendars, statistics, lists. No side effects, no customer-visible change.
Tag adds/removes on contacts. Internal organization that isn't customer-facing. State the namespace + contact ID + action in the response so Topher can verify after.
Anything the customer sees or persists in the CRM: send-a-new-message, create-contact, update-contact, upsert-contact, update-opportunity, create-blog-post, create-post, create-template. Show what you're about to do, wait for "go."
add_link New-client onboarding runbook
Wire client #11 (or any new sub-account) into Circa's MCP surface.
- Generate a PIT in the client's GHL sub-account.
Settings → Private Integrations → Create New Integration. Grant the full scope set (Contacts read+edit, Conversations read+edit + messages, Opportunities read+edit, Calendars read+edit + events, Payments read, Custom Fields read, Forms read, Locations read, plus Blogs / Emails / Social Media if the client uses them). Copy the token.
- Store the PIT securely.
Add to the credentials store (1Password,
~/.aspire.env, or a chmod-600 non-synced file on the M4). Note: 10 existing PITs are still in a plaintext doc on the M4 — separate hygiene cleanup queued. - Wire the MCP connection.
In terminal:
claude mcp add ghl-<client-slug> \ --transport http \ --url https://services.leadconnectorhq.com/mcp/ \ --header "Authorization: Bearer <PIT>" \ --header "locationId: <sub-account-id>"Restart Claude Code so it picks up the new connection.
- Verify.
Run
claude mcp list— confirm the newghl-<client-slug>shows ✓ Connected. Test with a safe read likelocations_get-location. - Update this page.
Add the new client to the routing matrix above (edit
connections[]incirca-ghl-mcp.astro). FlagghlSubAccount: truein the playbook'sclients.jsonfor consistency.
menu_book References Circa can pull for deeper context
Hermes syncs the GHL knowledge base to M3 daily (447 articles current as of 2026-05-21). Path: ~/.hermes/vault/circa-sync/aspire-digital/agents/circa/knowledge/ghl/.
- description
155000007981-highlevel-mcp-server-model-context-protocol.md
Canonical GHL MCP server setup + configuration guide (captured 2026-05-20)
- description
how-to-use-the-ai-agent-studio-in-highlevel.md
GHL's AI Agent Studio — for client-facing voice/chat agent recommendations (captured 2026-05-21)
- description
how-to-use-the-mcp-server-within-ask-ai.md
How to use GHL MCP from inside GHL's own Ask AI
- description
ai-tools-in-highlevel.md
Full survey of GHL's AI tooling (captured 2026-05-21)
Recent GHL changelog entries (last 3 weeks) worth surfacing in client audits: AI Agent Knowledge Base Search tool (5/20), AI Agent Update Custom Value tool (5/19), Wait Action revamp (5/21), Embedded Voice AI Widgets (5/4), Conversation AI Bot Sleep Controls (5/1).
warning Open items
- key
Credential hygiene — 10 PITs in a plaintext doc on the M4.
Each PIT is full-scoped to its sub-account. Doc location to confirm; move to 1Password / chmod-600 secret file. Low priority but non-zero risk.
- sync_problem
Data drift in playbook's
clients.json.Only 3 clients flagged
ghlSubAccount: true(PhotosbyB4, Made By Aspire, B Clean), but 10 have live MCP connections. Update on next playbook touch. - explore
Per-client scope audit not yet done.
All 10 PITs work, but actual scope grants per client are unverified. Some may be narrower than the full set listed in the onboarding runbook. First failed tool call per namespace will reveal it; track here as we go.
- extension
GHL roadmap: 250+ tools, OAuth, npx package.
Current set is 36 tools. GHL's published roadmap is to expand to 250+ and add OAuth (vs. PIT) — re-audit this catalog quarterly to add new tools as they ship. Hermes's daily KB sync will surface the additions via changelog.