GoHighLevel MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GHL_LOCATION | Yes | Your sub-account location ID | |
| GHL_PIT_TOKEN | Yes | Your GHL Private Integration Token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ghl_get_contactsA | List/search contacts in the GHL location. Supports filtering by query and cursor-based pagination. |
| ghl_get_contactA | Get a single contact by ID with all fields, tags, and custom data. |
| ghl_create_contactC | Create a new contact in the GHL location. Returns the created contact object. |
| ghl_update_contactA | Update an existing contact. Only provide fields you want to change. |
| ghl_upsert_contactA | Create or update a contact by email or phone. Useful for ensuring no duplicates. |
| ghl_delete_contactA | Permanently delete a contact by ID. |
| ghl_search_contactsB | Advanced contact search with filters for tags, pipeline stage, source, etc. |
| ghl_add_contact_tagsA | Add one or more tags to a contact. |
| ghl_remove_contact_tagsB | Remove one or more tags from a contact. |
| ghl_get_contact_notesB | Get all notes for a contact. |
| ghl_create_contact_noteC | Add a note to a contact. |
| ghl_update_contact_noteC | Update an existing contact note. |
| ghl_delete_contact_noteB | Delete a note from a contact. |
| ghl_get_contact_tasksC | Get all tasks for a contact. |
| ghl_create_contact_taskB | Create a task for a contact. |
| ghl_update_contact_taskC | Update a task for a contact. |
| ghl_delete_contact_taskB | Delete a task from a contact. |
| ghl_add_contact_to_workflowA | Enroll a contact into a GHL workflow/automation. Use the configured workflow IDs or supply a custom one. |
| ghl_remove_contact_from_workflowB | Remove a contact from a GHL workflow/automation. |
| ghl_get_contact_appointmentsB | Get all appointments booked for a contact. |
| ghl_search_conversationsC | Search conversations in the GHL location. Filter by contact, status, type, or date. |
| ghl_get_conversationB | Get a conversation by ID with metadata. |
| ghl_create_conversationC | Create a new conversation thread for a contact. |
| ghl_get_messagesB | Get messages in a conversation. |
| ghl_send_messageA | Send a message to a contact via SMS, email, WhatsApp, or other channel. This is the primary tool for outbound communication. |
| ghl_send_emailC | Send an email within an existing conversation. |
| ghl_update_message_statusB | Mark a message as read or update its delivery status. |
| ghl_cancel_scheduled_messageA | Cancel a scheduled (future) message before it is sent. |
| ghl_add_inbound_messageB | Inject an inbound message into GHL (simulates receiving a message). |
| ghl_get_calendarsA | List all calendars in the GHL location. |
| ghl_get_calendarB | Get a specific calendar by ID. |
| ghl_get_free_slotsA | Get available appointment slots for a calendar within a date range. Use this before booking to find open times. |
| ghl_get_calendar_eventsA | Get calendar events (appointments and blocked slots) for a date range. |
| ghl_create_appointmentB | Book an appointment on a GHL calendar for a contact. Always check free slots first. |
| ghl_get_appointmentB | Get a specific appointment by event ID. |
| ghl_update_appointmentB | Update an existing appointment (reschedule, change status, update notes). |
| ghl_delete_calendar_eventB | Delete a calendar event or appointment. |
| ghl_create_block_slotB | Block a time slot on a calendar (prevents bookings during that period). |
| ghl_get_calendar_groupsB | Get all calendar groups in the location. |
| ghl_get_pipelinesA | Get all pipelines and their stages in the GHL location. |
| ghl_search_opportunitiesA | Search opportunities in the pipeline. Filter by contact, stage, pipeline, status, or assigned user. |
| ghl_get_opportunityC | Get a specific opportunity by ID. |
| ghl_create_opportunityB | Create a new opportunity/deal in a pipeline. |
| ghl_update_opportunityC | Update an opportunity — move to a new stage, update value, reassign, etc. |
| ghl_update_opportunity_statusB | Quickly update only the status of an opportunity (open/won/lost/abandoned). |
| ghl_upsert_opportunityA | Create or update an opportunity matched by contact and pipeline. |
| ghl_delete_opportunityB | Delete an opportunity permanently. |
| ghl_get_workflowsA | List all workflows/automations in the GHL location. Use this to discover workflow IDs before enrolling contacts. |
| ghl_get_campaignsB | List all campaigns in the GHL location. |
| ghl_get_locationA | Get details about the current GHL location/sub-account. |
| ghl_get_location_tagsA | List all tags defined in the location. |
| ghl_create_location_tagC | Create a new tag in the location. |
| ghl_delete_location_tagC | Delete a tag from the location. |
| ghl_get_custom_fieldsA | List custom fields for the location. |
| ghl_create_custom_fieldC | Create a new custom field in the location. |
| ghl_update_custom_fieldC | Update an existing custom field. |
| ghl_delete_custom_fieldA | Delete a custom field from the location. |
| ghl_get_custom_valuesA | List all custom values (location-level variables) in the location. |
| ghl_create_custom_valueB | Create a new custom value (location-level variable). |
| ghl_update_custom_valueC | Update an existing custom value. |
| ghl_delete_custom_valueB | Delete a custom value (location-level variable) by ID. |
| ghl_get_usersA | List all team members in the GHL location. |
| ghl_search_usersA | Search team members by name or email. |
| ghl_get_userA | Get a single team member by their user ID. |
| ghl_create_userB | Create a new team member in the location. |
| ghl_update_userA | Update an existing team member. Only provide fields you want to change. |
| ghl_delete_userB | Remove a team member from the location. |
| ghl_get_templatesA | List SMS/email/WhatsApp templates in the location. These are the quick-reply-style templates under Settings → Templates. |
| ghl_create_templateA | Create a new SMS, email, or WhatsApp template. For email, provide a subject and HTML body. Returns the created template including its ID. |
| ghl_update_templateC | Update an existing SMS/email/WhatsApp template. |
| ghl_delete_templateA | Delete an SMS/email/WhatsApp template by ID. |
| ghl_get_formsC | List all forms created in the location. |
| ghl_get_form_submissionsA | Get submissions for a specific form or all forms in the location. |
| ghl_get_surveysC | List all surveys created in the location. |
| ghl_get_survey_submissionsA | Get survey submissions — optionally filter by survey, contact, or date range. |
| ghl_get_email_builder_templatesA | List email marketing / builder templates for the location. These are the visual-editor templates used in Marketing → Emails and referenced by workflow Send Email actions. |
| ghl_get_email_builder_templateA | Get a single email builder template by ID. |
| ghl_create_email_builder_templateA | Create a new HTML email template in GHL Marketing → Emails. Handles both the skeleton creation and HTML content upload in one call. Returns the template ID for use in workflows. |
| ghl_update_email_builder_templateB | Update an existing email builder template's HTML content. |
| ghl_delete_email_builder_templateA | Delete an email builder template by ID. |
| ghl_get_email_campaignsC | List email marketing campaigns in the location via the schedule endpoint. |
| ghl_get_email_campaignA | Get a single email marketing campaign by ID. |
| ghl_create_email_campaignA | Create a new email marketing campaign (scheduled send) using an existing email builder template. |
| ghl_delete_email_campaignB | Delete an email marketing campaign by ID. |
| ghl_get_funnelsC | List all funnels in the location. |
| ghl_get_funnel_pagesB | List all pages in a specific funnel. |
| ghl_get_funnel_page_countA | Get the total count of pages in a funnel. |
| ghl_get_phone_numbersA | List all purchased/active phone numbers in the location. |
| ghl_search_available_phone_numbersA | Search for available phone numbers to purchase. Filter by country, number type, or capabilities. |
| ghl_purchase_phone_numberC | Purchase a phone number for the location. |
| ghl_release_phone_numberA | Release (delete) a purchased phone number from the location. |
| ghl_update_phone_numberB | Update settings for a phone number (friendly name, call forwarding, etc.). |
| ghl_get_ordersC | Get payment orders in the location. |
| ghl_get_orderA | Get a specific order by ID. |
| ghl_get_transactionsC | Get payment transactions in the location. |
| ghl_get_subscriptionsC | Get active subscriptions in the location. |
| ghl_get_couponsB | Get discount coupons in the location. |
| ghl_create_couponC | Create a discount coupon. |
| ghl_get_invoicesC | Get invoices in the location. |
| ghl_get_invoiceA | Get a specific invoice by ID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NerdSnipe-Inc/ghl-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server