<!-- Generated from Cogny's tool registry. Canonical page: https://cogny.com/integrations/gohighlevel/tools -->

# GoHighLevel tools in Cogny

Cogny's GoHighLevel integration exposes 15 tools (9 read, 5 write, 1 destructive) to an AI agent over MCP. The same tools are available on every plan, from your own AI client or inside the Cogny app.

- **Read** (9): only reads data.
- **Write** (5): creates or changes something.
- **Destructive** (1): deletes, removes or replaces something.

Over MCP your own AI client asks before it runs a write. To take a tool away from your agent, block it in Settings → Integrations.

## Notes

GoHighLevel (now branded HighLevel) connects with two values from HighLevel → Settings → Private Integrations and Dashboard: the **Private Integration Token** and the **Location ID**. Create a new integration in Settings → Private Integrations, tick the scopes the agent should have, and copy the generated token. Get your Location ID under Settings → Business Profile, or from the end of the sub-account URL. The dashboard joins them with `:`.

There is no OAuth flow or app registration: the token is a static Personal Access Token that does not expire unless you rotate it in HighLevel. It carries the permissions of the scopes you ticked when you created the integration, so give it only what Cogny needs.

The integration works on a single **sub-account (location)** at a time — the Location ID you connect. Pipelines, conversations, calendars, tags and contacts are all scoped to that location. Writes stay ask-first until you allow them in Settings.

HighLevel rate limits are roughly **100 requests per 10 seconds per location**, up to 200,000 per day. The proxy surfaces HTTP 429 with a clear wait-and-retry message.

## Known gaps

- **No message sending.** Creating a message (`POST /conversations/messages`) is intentionally not built — it sends to a real customer and is publish-gated. The agent reads the messages of a conversation but cannot reply.
- **No contact deletes.** Contacts are upserted and updated, and tags added and removed, but a contact can't be hard-deleted.
- Opportunities are created, updated (name, stage, status, value) and searched, but not deleted.
- No funnels, workflows, calendar booking (only listing), forms or surveys.
- Pipelines are listed with their stages, but not created or edited.

## All tools

| Tool | Kind | What it does |
|---|---|---|
| `list_contacts` | Read | List GoHighLevel contacts in the connected location, optionally filtered by name/email/phone. |
| `get_contact` | Read | Get one GoHighLevel contact by id, including its tags and any custom field values. |
| `search_opportunities` | Read | Search GoHighLevel opportunities (deals), optionally filtered by pipeline and status (open, won or lost). |
| `list_pipelines` | Read | List the GoHighLevel opportunity pipelines and their stages for the connected location. |
| `search_conversations` | Read | Search GoHighLevel conversations for the connected location, optionally for one contact, newest first. |
| `list_conversation_messages` | Read | List the messages of one GoHighLevel conversation, newest first. |
| `list_calendars` | Read | List the GoHighLevel booking calendars for the connected location. |
| `get_location` | Read | Get the connected GoHighLevel location (sub-account) — its name, phone, address and settings. |
| `list_location_tags` | Read | List the GoHighLevel tags available in the connected location, so you know which tags you can add to contacts. |
| `upsert_contact` | Write | Upsert a GoHighLevel contact: update the existing contact that matches the email or phone, or create a new one. |
| `update_contact` | Write | Update fields, tags or custom fields of an existing GoHighLevel contact. |
| `add_contact_tags` | Write | Add tags to a GoHighLevel contact. |
| `remove_contact_tags` | Destructive | Remove tags from a GoHighLevel contact. |
| `create_opportunity` | Write | Create a new GoHighLevel opportunity (deal) in a pipeline stage. |
| `update_opportunity` | Write | Update a GoHighLevel opportunity (deal): rename it, move it to another stage, change its status or set its value. |

Exact input schemas come from `tools/list` once GoHighLevel is connected; the free plan is enough to check.

Missing something? Your agent can ask for it with `request_feature`.

---

All integrations: https://cogny.com/integrations/tools/index.md
Plans, approvals, limits and data protection: https://cogny.com/buying-guide.md
What Cogny is: https://cogny.com/llms.txt
