GoHighLevel MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ghl_search_contactsA | Search/list contacts in a GoHighLevel location. Supports a free-text query (matches name, email, phone) and pagination. Returns matching contacts. |
| ghl_get_contactA | Fetch a single contact by id, including custom fields and tags. |
| ghl_create_contactA | Create a new contact. At least one of email or phone is recommended so the contact can be matched/deduplicated. Returns the created contact. |
| ghl_update_contactA | Update fields on an existing contact. Only provided fields are changed. |
| ghl_add_contact_tagsA | Add one or more tags to a contact without removing existing tags. |
| ghl_delete_contactA | Permanently delete a contact. This is destructive and cannot be undone. |
| ghl_get_pipelinesA | List all opportunity pipelines and their stages for a location. Use this to discover pipelineId and pipelineStageId values needed by other tools. |
| ghl_search_opportunitiesA | Search opportunities (deals) in a location. Filter by pipeline, stage, status, assigned user, or free-text query. |
| ghl_get_opportunityA | Fetch a single opportunity (deal) by id. |
| ghl_create_opportunityA | Create a new opportunity (deal) in a pipeline stage. Use ghl_get_pipelines first to obtain valid pipelineId and pipelineStageId values. |
| ghl_update_opportunityA | Update an opportunity: move stage, change status, value, name, or owner. Only provided fields are changed. |
| ghl_get_calendarsA | List calendars for a location. Use this to find a calendarId for booking and availability lookups. |
| ghl_get_free_slotsA | Get available booking slots for a calendar within a date range. startDate and endDate are epoch milliseconds. |
| ghl_create_appointmentA | Book an appointment on a calendar for a contact. startTime/endTime are ISO 8601 strings (e.g. 2026-06-20T15:00:00-04:00). Use ghl_get_free_slots first. |
| ghl_get_appointmentB | Fetch a single calendar appointment/event by id. |
| ghl_update_appointmentA | Update an appointment's time or status (e.g. confirm, cancel, mark showed). Only provided fields are changed. |
| ghl_delete_appointmentA | Delete a calendar event by its id. Works for both appointments and blocked time slots. Destructive and cannot be undone — to keep the record but mark it off, use ghl_update_appointment with appointmentStatus 'cancelled' instead. |
| ghl_search_conversationsA | Search conversations in a location, optionally filtered to a contact. Returns conversation threads with their ids and last-message info. |
| ghl_get_messagesA | Fetch messages within a conversation thread, newest first. Use ghl_search_conversations to find a conversationId. |
| ghl_send_messageA | Send an outbound message to a contact via SMS or Email. For Email you must provide subject and html (or message as plain text). For SMS provide message. The contact must have a valid phone/email for the chosen channel. |
| ghl_list_invoicesA | List invoices for a location with pagination. Optionally filter by status (e.g. draft, sent, paid) and contact. |
| ghl_get_invoiceA | Fetch a single invoice by id, including line items and totals. |
| ghl_create_invoiceA | Create a draft invoice for a contact. Provide line items (name, qty, price). Business details are taken from GHL_BUSINESS_* env vars (or businessName/businessPhone overrides); contact details (name, phone, email, address) are auto-filled from the contact record. The invoice is created in draft status; use ghl_send_invoice to deliver it. |
| ghl_send_invoiceA | Send/deliver an existing invoice to the contact via the configured channel(s). This is outward-facing: it emails/texts the customer. |
| ghl_void_invoiceA | Void an invoice. Use this for invoices that have already been sent (which can no longer be deleted). Voiding cancels the invoice while keeping the record. |
| ghl_delete_invoiceA | Delete an invoice. Only works while it is a draft — a sent invoice must be voided with ghl_void_invoice instead. Destructive and cannot be undone. |
| ghl_list_workflowsA | List the automation workflows configured in a location. Note: workflows must be built in the GoHighLevel UI; the API cannot create them. Use the returned workflow ids with ghl_add_contact_to_workflow to trigger automations. |
| ghl_add_contact_to_workflowA | Enroll a contact into an automation workflow, triggering it for that contact. Use ghl_list_workflows to find workflowId. |
| ghl_remove_contact_from_workflowB | Remove a contact from an automation workflow, halting it for them. |
| ghl_list_custom_fieldsA | List custom field definitions for a location. Filter by model (contact, opportunity, or all) to see which fields apply where. Use the returned ids when reading/writing custom field values on contacts. |
| ghl_get_custom_fieldA | Fetch a single custom field definition by id. |
| ghl_create_custom_fieldA | Create a custom field definition. For option-based types (SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO, CHECKBOX) provide the options array. |
| ghl_update_custom_fieldA | Update a custom field definition. Only provided fields change. |
| ghl_delete_custom_fieldA | Delete a custom field definition. Destructive: removes the field and its stored values across records. |
| ghl_list_contact_tasksB | List all tasks attached to a contact. |
| ghl_get_contact_taskB | Fetch a single task on a contact by id. |
| ghl_create_contact_taskA | Create a task on a contact. dueDate is ISO 8601 (e.g. 2026-06-20T17:00:00Z). |
| ghl_update_contact_taskB | Update a task (e.g. mark completed, change due date or assignee). Only provided fields change. |
| ghl_delete_contact_taskA | Delete a task from a contact. Destructive. |
| ghl_list_contact_notesA | List all notes logged on a contact, newest first. |
| ghl_get_contact_noteB | Fetch a single note on a contact by id. |
| ghl_create_contact_noteA | Add a note to a contact. |
| ghl_update_contact_noteB | Update the text of an existing note on a contact. |
| ghl_delete_contact_noteA | Delete a note from a contact. Destructive. |
| ghl_list_productsA | List products in a location with pagination and optional search. Use the returned product ids when adding prices or building invoices/estimates. |
| ghl_get_productB | Fetch a single product by id. |
| ghl_create_productA | Create a product. After creating, add one or more prices with ghl_create_product_price so it can be used on invoices/estimates. |
| ghl_update_productA | Update a product's fields. Only provided fields change. |
| ghl_delete_productC | Delete a product. Destructive. |
| ghl_list_product_pricesA | List the prices configured for a product. |
| ghl_create_product_priceA | Add a price to a product. type 'one_time' for a single charge or 'recurring' for a subscription. amount is in the smallest practical unit of the currency as accepted by GHL (typically major units, e.g. 49.99). |
| ghl_list_estimatesA | List estimates (quotes) for a location with pagination. Optionally filter by status or contact. |
| ghl_generate_estimate_numberA | Generate the next available estimate number for the location. Some accounts require an estimateNumber when creating an estimate — call this first. |
| ghl_create_estimateA | Create an estimate (quote) for a contact with line items. If your account requires it, get estimateNumber from ghl_generate_estimate_number first. issueDate/expiryDate are YYYY-MM-DD. |
| ghl_update_estimateA | Update an existing estimate. Pass the full set of items you want on the estimate (they replace the prior items). Only provided top-level fields change. |
| ghl_send_estimateA | Send an estimate to the contact. Outward-facing: this emails/texts the customer. |
| ghl_estimate_to_invoiceA | Create an invoice from an accepted estimate, carrying over its line items. |
| ghl_delete_estimateC | Delete an estimate. Destructive. |
| ghl_list_ordersA | List payment orders for a location with pagination. Optionally filter by status or contact. Use to see what was purchased and whether it was paid. |
| ghl_get_orderA | Fetch a single payment order by id, including line items and amounts. |
| ghl_list_transactionsA | List payment transactions for a location. Useful for reconciling revenue and spotting failed or refunded charges. |
| ghl_list_subscriptionsA | List recurring subscriptions for a location (e.g. retainers). Optionally filter by contact. |
| ghl_get_subscriptionC | Fetch a single subscription by id. |
| ghl_list_formsA | List forms in a location. Use the returned form ids to fetch submissions. |
| ghl_get_form_submissionsA | Fetch submissions for a location's forms, optionally filtered to one form or a date range. Dates are YYYY-MM-DD. |
| ghl_list_surveysA | List surveys in a location. Use the returned survey ids to fetch submissions. |
| ghl_get_survey_submissionsA | Fetch submissions for a location's surveys, optionally filtered to one survey. |
| ghl_list_usersA | List users (team members) in a location. Use the returned ids as assignedTo / assignedUserId values when creating tasks, opportunities, or appointments. |
| ghl_get_userB | Fetch a single user by id. |
| ghl_list_funnelsA | List funnels in a location. Optionally filter by type, category, or name. |
| ghl_list_funnel_pagesC | List the pages within a funnel. |
| ghl_get_calendar_eventsA | List calendar events/appointments within a time window. You must provide one of calendarId, userId, or groupId to scope the query. startTime/endTime are epoch milliseconds. |
| ghl_block_calendar_slotA | Block off time on a calendar so it can't be booked (e.g. a filming or edit day). startTime/endTime are ISO 8601 strings. |
| ghl_list_appointment_notesA | List notes attached to a calendar appointment. |
| ghl_create_appointment_noteA | Add a note to a calendar appointment (e.g. outcome of a shoot/call). |
| ghl_list_social_accountsA | List the social media accounts connected to the location's Social Planner. Use the returned account ids when creating a post. |
| ghl_list_social_postsB | List scheduled/published social posts for the location. Optionally filter by account ids and a date range (ISO 8601). |
| ghl_get_social_postA | Fetch a single social post by id. |
| ghl_create_social_postA | Schedule or publish a social post to one or more connected accounts. Provide scheduleDate (ISO 8601) for a scheduled post; omit for an immediate draft per status. mediaUrls can include image/video URLs already hosted in GHL. |
| ghl_delete_social_postA | Delete a scheduled or draft social post. Destructive. |
| ghl_list_mediaA | List files/folders in the location's Media Library with pagination, search, and optional type filter. |
| ghl_upload_media_by_urlA | Add a file to the Media Library by referencing a publicly reachable URL (GHL fetches and hosts it). Good for deliverables or talent photos already available at a link. For raw binary uploads use the GHL UI. |
| ghl_delete_mediaC | Delete a file from the Media Library. Destructive. |
| ghl_list_campaignsA | List marketing campaigns in a location. Use a campaign id with ghl_add_contact_to_campaign. |
| ghl_add_contact_to_campaignA | Enroll a contact into a campaign, starting it for them. |
| ghl_remove_contact_from_campaignA | Remove a contact from a campaign (or all campaigns if no id given). |
| ghl_list_trigger_linksA | List trackable trigger links in a location. |
| ghl_create_trigger_linkA | Create a trackable trigger link that redirects to a destination URL and can fire automations on click. |
| ghl_delete_trigger_linkB | Delete a trigger link. Destructive. |
| ghl_list_tagsA | List all tags defined in a location. |
| ghl_create_tagC | Create a new tag in the location's master tag list. |
| ghl_update_tagC | Rename an existing tag. |
| ghl_delete_tagA | Delete a tag from the location. Destructive: removes it from records. |
| ghl_list_custom_valuesA | List location custom values (reusable merge fields used in templates/messages). |
| ghl_get_custom_valueC | Fetch a single custom value by id. |
| ghl_create_custom_valueC | Create a new custom value (merge field) with a name and value. |
| ghl_update_custom_valueB | Update a custom value's name and/or value. |
| ghl_delete_custom_valueC | Delete a custom value. Destructive. |
| ghl_list_businessesA | List business (company) records in a location. |
| ghl_get_businessA | Fetch a single business record by id. |
| ghl_create_businessC | Create a business (company) record. |
| ghl_update_businessA | Update a business record. Only provided fields change. |
| ghl_delete_businessB | Delete a business record. Destructive. |
| ghl_list_object_schemasA | List the custom object (and standard object) schemas defined in a location. Use the returned schema key with the record tools. |
| ghl_get_object_schemaB | Fetch a custom object schema by key (e.g. custom_objects.podcast_episode), including its properties. |
| ghl_search_object_recordsC | Search records of a custom object by a text query. |
| ghl_get_object_recordB | Fetch a single custom object record by id. |
| ghl_create_object_recordB | Create a record for a custom object. properties is a key/value map matching the schema's property keys. |
| ghl_update_object_recordC | Update a custom object record's properties. |
| ghl_delete_object_recordC | Delete a custom object record. Destructive. |
| ghl_list_associationsA | List association definitions in a location (the relationship types available between record kinds). |
| ghl_get_record_relationsB | List the relations a given record participates in. |
| ghl_create_relationA | Create a relation between two records using an association definition. Get associationId from ghl_list_associations. |
| ghl_delete_relationB | Delete a relation between two records. Destructive. |
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/vmproductions631-tech/gohighlevel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server