All 222 tools
Every one of these is a single direct call - no search-then-describe-then-execute round trip. Each is hard-bound to one sub-account, so a link for one client can never reach another's data. There are deliberately no delete-contact style tools.
Contacts & conversations 33
| Tool | What it does |
|---|---|
| ghl_add_contact_tags | Add tags to a contact. |
| ghl_add_contact_to_campaign | Add a contact to a campaign. |
| ghl_add_contact_to_workflow | Add a contact to a workflow (starts the workflow for that contact). |
| ghl_create_contact | Create a contact. Extra fields (address1, city, state, postalCode, companyName, dnd, customFields: [{id, value}], source, assignedTo...) pass through. |
| ghl_create_contact_note | Add a note to a contact. |
| ghl_create_contact_task | Create a task on a contact. |
| ghl_create_conversation_ai_agent | Create a Conversation AI agent (chat/SMS bot). Extra config passes through. |
| ghl_create_location_tag | Create a new tag in this sub-account. |
| ghl_create_recurring_task | Create a recurring task. rruleOptions example: {intervalType: 'weekly', interval: 1, startDate: '2026-07-06', startTime: '09:00:00'}. Extra fields (description, assignedTo, contactIds, ...) pass through. |
| ghl_delete_conversation_ai_agent | Delete a Conversation AI agent. |
| ghl_delete_location_tag | Delete a tag from this sub-account. |
| ghl_delete_recurring_task | Delete a recurring task. |
| ghl_find_duplicate_contact | Check whether a contact already exists by email and/or phone number. |
| ghl_get_contact | Get a contact by ID (full record incl. tags, custom fields, attributions). |
| ghl_get_contact_notes | List a contact's notes. |
| ghl_get_contact_tasks | List a contact's tasks. |
| ghl_get_conversation_ai_agent | Get a Conversation AI agent's configuration. |
| ghl_get_conversation_messages | Get the messages in a conversation. |
| ghl_list_conversation_ai_agents | Search/list Conversation AI agents. |
| ghl_list_location_tags | List all contact tags defined in this sub-account. |
| ghl_list_message_templates | List SMS/email/WhatsApp message templates saved in this sub-account. |
| ghl_remove_contact_from_campaign | Remove a contact from one campaign, or from all campaigns if campaignId is omitted. |
| ghl_remove_contact_from_workflow | Remove a contact from a workflow. |
| ghl_remove_contact_tags | Remove tags from a contact. |
| ghl_search_contacts | Search contacts. query matches name/email/phone; supports advanced `filters` array passthrough (GHL search spec). |
| ghl_search_conversations | Search conversations (filter by contact, status, unread, last message direction, date range). |
| ghl_search_tasks | Search all tasks in this sub-account (across contacts). Filters pass through (e.g. completed, assignedTo, contactId, dueDate). |
| ghl_send_message | Send an SMS or Email to a contact through the location's configured providers. For Email: subject + html (and optional emailFrom). For SMS: message. The send is logged on the contact's conversation thread. |
| ghl_update_contact | Update a contact. Fields pass through (firstName, lastName, email, phone, tags, dnd...). |
| ghl_update_conversation_ai_agent | Update a Conversation AI agent. Fields pass through. |
| ghl_update_location_tag | Rename a tag. |
| ghl_update_recurring_task | Update a recurring task. Fields pass through. |
| ghl_upsert_contact | Create-or-update a contact matched by email/phone (GHL dedupes automatically). Preferred for report-recipient contacts. Same passthrough fields as ghl_create_contact. |
Pipelines & deals 9
| Tool | What it does |
|---|---|
| ghl_add_opportunity_followers | Add follower users to an opportunity. |
| ghl_create_opportunity | Create an opportunity in a pipeline. Extra fields (pipelineStageId, monetaryValue, assignedTo, customFields, source) pass through. |
| ghl_get_opportunity | Get an opportunity by ID. |
| ghl_get_pipelines | List pipelines with their stages (ids needed for creating/searching opportunities). |
| ghl_remove_opportunity_followers | Remove follower users from an opportunity. |
| ghl_search_opportunities | Search opportunities with filters. Returns deals with value, stage, status, and contact. |
| ghl_update_opportunity | Update an opportunity (name, stage, value, assignee...). Fields pass through. |
| ghl_update_opportunity_status | Quick win/loss update: set an opportunity's status. |
| ghl_upsert_opportunity | Create-or-update an opportunity for a contact in a pipeline (GHL matches on contact + pipeline). Extra fields pass through. |
Money 65
| Tool | What it does |
|---|---|
| ghl_cancel_invoice_schedule | Cancel a recurring invoice schedule. |
| ghl_create_coupon | Create a discount coupon. |
| ghl_create_estimate | Create an estimate/quote. Required by GHL: name, currency, items, contactDetails, businessDetails. All fields pass through. |
| ghl_create_invoice | Create a draft invoice. Required by GHL: name, currency, items (array of {name, currency, amount, qty}), contactDetails ({id, name, email?, phoneNo?}), businessDetails ({name, address?}), issueDate (YYYY-MM-DD), liveMode. Optional: dueDate, discount ({type: 'percentage'|'fixed', value}), title, invoiceNumber. All fields pass through. |
| ghl_create_invoice_schedule | Create a recurring invoice schedule. Required by GHL: name, contactDetails ({id, name}), schedule ({rrule: {intervalType: 'monthly'|'weekly'|..., interval, startDate, ...}}), businessDetails, currency, items, liveMode. Fields pass through. |
| ghl_create_invoice_template | Create an invoice template. Required by GHL: name, businessDetails, currency, items. Fields pass through. |
| ghl_create_order_fulfillment | Mark order items as fulfilled/shipped. trackings: array of {trackingNumber?, shippingCarrier?, trackingUrl?}; items: array of {priceId, qty}. |
| ghl_create_price | Create a price for a product. For recurring prices pass a `recurring` object ({interval: 'month'|'week'|'day'|'year', intervalCount}) plus optional trialPeriod, totalCycles, setupFee. |
| ghl_create_product | Create a product. Extra fields (description, image, medias, variants, statementDescriptor, availableInStore, slug, seo) pass through to the GHL API. |
| ghl_create_product_collection | Create a product collection. |
| ghl_create_shipping_carrier | Register a shipping carrier with a callback URL for live rates. |
| ghl_create_shipping_rate | Create a shipping rate in a zone. conditionType: none | price | weight. |
| ghl_create_shipping_zone | Create a shipping zone. countries: array of {code, states?: [{code}]}. |
| ghl_delete_coupon | Delete a coupon. |
| ghl_delete_estimate | Delete an estimate. |
| ghl_delete_invoice | Delete an invoice. |
| ghl_delete_price | Delete a price from a product. |
| ghl_delete_product | Delete a product by ID. |
| ghl_delete_product_collection | Delete a product collection. |
| ghl_delete_shipping_rate | Delete a shipping rate. |
| ghl_delete_shipping_zone | Delete a shipping zone. |
| ghl_estimate_to_invoice | Convert an accepted estimate into an invoice. |
| ghl_generate_invoice_number | Get the next available invoice number. |
| ghl_get_coupon | Get a coupon by ID and code (the GHL API wants both). |
| ghl_get_invoice | Get an invoice by ID (response includes the payment URL). |
| ghl_get_order | Get an order by ID. |
| ghl_get_product | Get a product by ID. |
| ghl_get_store_settings | Get online store settings (shipping origin etc.). |
| ghl_get_subscription | Get a subscription by ID. |
| ghl_get_transaction | Get a transaction by ID. |
| ghl_list_affiliate_commissions | List affiliate commissions. |
| ghl_list_affiliate_payouts | List affiliate payouts. |
| ghl_list_affiliates | List affiliates in the affiliate manager. |
| ghl_list_coupons | List discount coupons. |
| ghl_list_estimates | List estimates with optional filters. |
| ghl_list_inventory | List inventory levels across product prices. |
| ghl_list_invoice_schedules | List recurring invoice schedules. |
| ghl_list_invoice_templates | List invoice templates. |
| ghl_list_invoices | List invoices with optional filters. |
| ghl_list_order_fulfillments | List fulfillments for an order. |
| ghl_list_orders | List orders with optional filters. |
| ghl_list_prices | List prices for a product. |
| ghl_list_product_collections | List product collections. |
| ghl_list_products | List products in this sub-account. |
| ghl_list_shipping_carriers | List shipping carriers configured for the store. |
| ghl_list_shipping_rates | List rates in a shipping zone. |
| ghl_list_shipping_zones | List shipping zones for the online store. |
| ghl_list_subscriptions | List payment subscriptions with optional filters. |
| ghl_list_transactions | List payment transactions with optional filters. |
| ghl_record_invoice_payment | Record a manual/offline payment against an invoice (cash, cheque, bank transfer...). |
| ghl_send_estimate | Send an estimate to the customer. |
| ghl_send_invoice | Send an invoice to the customer by email and/or SMS. The customer receives a payable link. |
| ghl_start_invoice_schedule | Activate/start sending a recurring invoice schedule. |
| ghl_text2pay_invoice | Create AND send an invoice in one step - this is the closest thing to a payment link in the GHL API; the response includes the payable invoice URL. Required: name, currency, items (array of {name, currency, amount, qty}), contactDetails ({id, name, email?, phoneNo?}), issueDate (YYYY-MM-DD), userId. action 'draft' returns the link without sending. |
| ghl_update_coupon | Update a coupon. The GHL API requires the full definition (name, code, discountType, discountValue, startDate) on update. |
| ghl_update_estimate | Update an estimate. Fields pass through to the GHL API. |
| ghl_update_inventory | Update inventory quantities. items: array of {priceId, availableQuantity, allowOutOfStockPurchases?}. |
| ghl_update_invoice | Update a draft invoice. Fields pass through to the GHL API (name, currency, invoiceItems, issueDate, dueDate, discount, ...). |
| ghl_update_price | Update a price. The GHL API requires name, type, currency, and amount on update; extra fields pass through. |
| ghl_update_product | Update a product. The GHL API requires name and productType on update; extra fields pass through. |
| ghl_update_product_collection | Update a product collection. |
| ghl_update_shipping_rate | Update a shipping rate. Fields pass through. |
| ghl_update_shipping_zone | Update a shipping zone. Fields pass through. |
| ghl_update_store_settings | Update store settings. shippingOrigin: {name, country, city, street1, zip, ...}. |
| ghl_void_invoice | Void an invoice (keeps the record; customer can no longer pay it). |
Marketing 32
| Tool | What it does |
|---|---|
| ghl_create_email_template | Create a new email builder template. Default type 'html' starts a blank template (GHL names it 'New Template' - rename in the builder UI); use type 'import' with importProvider + importURL to import from an external source. |
| ghl_create_trigger_link | Create a trigger link (trackable link usable in campaigns/workflows). |
| ghl_create_url_redirect | Create a URL redirect. action: funnel | website | url | all. |
| ghl_delete_email_template | Delete an email builder template. |
| ghl_delete_trigger_link | Delete a trigger link. |
| ghl_delete_url_redirect | Delete a URL redirect. |
| ghl_facebook_ads_integration_status | Check whether Facebook Ads is connected for this sub-account. |
| ghl_facebook_ads_list_report | List Facebook campaigns/adsets/ads with performance for a date range. |
| ghl_facebook_ads_report | Facebook Ads performance report for this sub-account. |
| ghl_facebook_campaign_get | Get a Facebook campaign's details. |
| ghl_facebook_campaign_pause | Pause a Facebook campaign. |
| ghl_facebook_campaign_publish | Publish a draft Facebook campaign. WARNING: starts spending the ad budget. |
| ghl_facebook_campaign_resume | Resume a paused Facebook campaign. |
| ghl_google_ads_integration_status | Check whether Google Ads is connected for this sub-account. |
| ghl_google_ads_list_report | List Google campaigns/adgroups/ads with performance for a date range. |
| ghl_google_ads_report | Google Ads performance report for this sub-account. |
| ghl_linkedin_ads_report | LinkedIn Ads performance report for this sub-account. |
| ghl_list_campaigns | List campaigns in this sub-account. |
| ghl_list_email_campaigns | List email campaigns with status and stats. |
| ghl_list_email_schedules | List scheduled email sends. |
| ghl_list_email_templates | List email builder templates. |
| ghl_list_form_submissions | List form submissions, optionally filtered by form, date range, or search query. |
| ghl_list_forms | List forms in this sub-account. |
| ghl_list_funnel_pages | List pages inside a funnel. |
| ghl_list_funnels | List funnels in this sub-account. |
| ghl_list_survey_submissions | List survey submissions, optionally filtered by survey, date range, or search. |
| ghl_list_surveys | List surveys in this sub-account. |
| ghl_list_trigger_links | List trigger links in this sub-account. |
| ghl_list_url_redirects | List URL redirects for this sub-account's domains. |
| ghl_list_workflows | List all workflows in this sub-account (id, name, status). Use the workflow id with ghl_add_contact_to_workflow. |
| ghl_update_trigger_link | Update a trigger link's name or destination URL. |
| ghl_update_url_redirect | Update a redirect's target or action. |
Calendar 10
| Tool | What it does |
|---|---|
| ghl_create_appointment | Book an appointment on a calendar for a contact. |
| ghl_create_block_slot | Block time on a calendar (e.g. lunch, vacation). |
| ghl_create_calendar_group | Create a calendar group. |
| ghl_delete_event | Delete a calendar event/appointment entirely. Prefer ghl_update_appointment with appointmentStatus=cancelled to keep a record. |
| ghl_get_appointment | Get one appointment by its event ID. |
| ghl_get_free_slots | Get available booking slots for a calendar between two dates. |
| ghl_list_blocked_slots | List blocked time slots in a date range. |
| ghl_list_calendar_groups | List calendar groups in this sub-account. |
| ghl_list_calendars | List calendars in this sub-account (id, name, type). Use the calendar id for free slots and appointments. |
| ghl_update_appointment | Update an existing appointment (reschedule, change status, reassign, retitle). |
Data & media 33
| Tool | What it does |
|---|---|
| ghl_create_association | Create an association between two object types. Example: key 'owner', firstObjectKey 'custom_objects.pets', firstObjectLabel 'pet', secondObjectKey 'contact', secondObjectLabel 'owner'. |
| ghl_create_brand_board | Create a brand board. Extra fields (colors, fonts, logos...) pass through. |
| ghl_create_custom_field | Create a custom field. dataType examples: TEXT, LARGE_TEXT, NUMERICAL, PHONE, MONETORY, CHECKBOX, SINGLE_OPTIONS, MULTIPLE_OPTIONS, DATE, TEXTBOX_LIST, FILE_UPLOAD, SIGNATURE, RADIO. |
| ghl_create_custom_value | Create a custom value. |
| ghl_create_media_folder | Create a folder in the media library. |
| ghl_create_object_record | Create a record in a custom object. properties: object keyed by field key, e.g. {"name": "Buddy", "breed": "Beagle"}. |
| ghl_create_object_schema | Create a custom object schema. Example: labels {singular:'Pet', plural:'Pets'}, key 'custom_objects.pets', primaryDisplayPropertyDetails {key:'custom_objects.pets.name', name:'Pet Name', dataType:'TEXT'}. |
| ghl_create_relation | Link two records via an association (e.g. link pet record to contact). |
| ghl_delete_association | Delete an association. |
| ghl_delete_custom_field | Delete a custom field. WARNING: destroys the field and its data on all records. |
| ghl_delete_custom_value | Delete a custom value. |
| ghl_delete_media | Delete a file or folder from the media library. |
| ghl_delete_object_record | Delete a custom object record. |
| ghl_delete_relation | Remove a relation between two records. |
| ghl_get_brand_board | Get a brand board's full details. |
| ghl_get_object_record | Get a custom object record by ID. |
| ghl_get_object_schema | Get an object schema (including its custom fields/properties) by key. |
| ghl_get_relations_by_record | Get all relations for a record (any object type). |
| ghl_import_course | Import a fully-formed course into Memberships (the only course-creation operation the public GHL API supports - editing existing courses via API is not possible). products: array of course products, each with title, description?, imageUrl?, categories (array of {title, lessons: [{title, description?, postContents?: [{type: 'video'|'html'|..., url?, content?}]}]}). |
| ghl_list_associations | List associations (relationship types between objects) in this sub-account. |
| ghl_list_brand_boards | List brand boards (brand kits: colors, fonts, logos). |
| ghl_list_custom_fields | List custom fields for this sub-account (contact and/or opportunity model). |
| ghl_list_custom_values | List custom values (location-level merge variables like {{ custom_values.x }}). |
| ghl_list_media_files | List files and folders in the media library. |
| ghl_list_object_schemas | List all objects (standard + custom) for this sub-account. Custom object keys look like custom_objects.pets. |
| ghl_rename_media | Rename a file or folder in the media library. |
| ghl_search_object_records | Search records of a custom object. |
| ghl_update_association | Update an association's labels. |
| ghl_update_custom_field | Update a custom field's name, placeholder, position, or options. |
| ghl_update_custom_value | Update a custom value's name and/or value. |
| ghl_update_object_record | Update a custom object record's properties. |
| ghl_update_object_schema | Update a custom object schema (labels, description, searchableProperties). |
| ghl_upload_media_from_url | Upload a file into the media library from a public URL (returns the hosted GHL URL). |
AI 21
| Tool | What it does |
|---|---|
| ghl_create_kb_faq | Add a question/answer pair to a knowledge base. |
| ghl_create_knowledge_base | Create a knowledge base. |
| ghl_create_voice_ai_agent | Create a Voice AI agent. Config fields (name, prompt, voice, language, businessName, greeting...) pass through to the GHL API. |
| ghl_delete_kb_faq | Delete an FAQ from a knowledge base. |
| ghl_delete_kb_urls | Remove crawled URLs from a knowledge base. |
| ghl_delete_knowledge_base | Delete a knowledge base. |
| ghl_delete_voice_ai_agent | Delete a Voice AI agent. |
| ghl_execute_agent_studio_agent | Execute an Agent Studio agent with a message and return its response. |
| ghl_generate_marketing_image | Generate an AI image (Flux model, 1024x1024) from a text prompt and save it into this sub-account's GHL media library. Returns the hosted media URL for use in social posts, emails, and funnels. Write prompts like a photographer's brief: subject, style, lighting, mood, composition. |
| ghl_get_agent_studio_agent | Get an Agent Studio agent's details. |
| ghl_get_voice_ai_agent | Get a Voice AI agent's full configuration. |
| ghl_get_voice_ai_call_log | Get one Voice AI call log (includes transcript and outcome). |
| ghl_kb_crawl_website | Crawl a website URL into a knowledge base. option: 'single' (one page), 'sitemap', or 'crawl' (follow links). |
| ghl_list_agent_studio_agents | List Agent Studio agents (published workflows/agents built in Agent Studio). |
| ghl_list_kb_faqs | List FAQs in a knowledge base. |
| ghl_list_kb_urls | List crawled URLs in a knowledge base. |
| ghl_list_knowledge_bases | List knowledge bases (used by Conversation AI / Voice AI agents). |
| ghl_list_voice_ai_agents | List Voice AI agents in this sub-account. |
| ghl_list_voice_ai_call_logs | List Voice AI call logs with filters. |
| ghl_update_kb_faq | Update an FAQ. |
| ghl_update_voice_ai_agent | Update a Voice AI agent (patch semantics - only send fields to change). |
People & admin 19
| Tool | What it does |
|---|---|
| ghl_create_business | Create a business. Optional fields (phone, email, website, address, city, state, country, postalCode, description) pass through. |
| ghl_create_user | Create a user in this sub-account. companyId is your agency ID (find it via ghl_get_location_company_id). role: admin | user. |
| ghl_delete_business | Delete a business. |
| ghl_delete_user | Delete a user. |
| ghl_get_business | Get a business by ID. |
| ghl_get_location_company_id | Get this sub-account's details including its companyId (agency ID, needed for ghl_create_user). |
| ghl_get_user | Get a user by ID. |
| ghl_list_businesses | List businesses (companies that contacts belong to) in this sub-account. |
| ghl_list_document_templates | List document & contract templates. |
| ghl_list_documents | List documents & contracts (proposals/estimates sent for signature). |
| ghl_list_number_pools | List number pools for this sub-account. |
| ghl_list_phone_numbers | List phone numbers owned by this sub-account. |
| ghl_list_users | List users (team members) in this sub-account. |
| ghl_purchase_phone_number | PURCHASE a phone number for this sub-account. WARNING: this incurs real monthly charges on the account. |
| ghl_search_available_phone_numbers | Search phone numbers available to purchase for this sub-account. |
| ghl_send_document | Send an existing document/contract to its recipients for signature. |
| ghl_send_document_from_template | Create a document from a template for a contact and send it for signature. |
| ghl_update_business | Update a business. Fields pass through. |
| ghl_update_user | Update a user (name, email, phone, role, permissions...). Fields pass through. |
Connect your first sub-account free - no card, about 5 minutes.