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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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