--- STDOUT --- [TEST] Fetching tools... [Bridge] Starting GHL Server: node E:\genesis-system\mcp-servers\ghl\dist\server.js [TEST] Found 253 tools. - search_locations: Search for locations/sub-accounts in GoHighLevel with filtering options Input: {'type': 'object', 'properties': {'companyId': {'type': 'string', 'description': 'Company/Agency ID to filter locations'}, 'skip': {'type': 'number', 'description': 'Number of results to skip for pagination (default: 0)', 'default': 0}, 'limit': {'type': 'number', 'description': 'Maximum number of locations to return (default: 10)', 'default': 10}, 'order': {'type': 'string', 'enum': ['asc', 'desc'], 'description': 'Order of results (default: asc)', 'default': 'asc'}, 'email': {'type': 'string', 'description': 'Filter by email address', 'format': 'email'}}} - get_location: Get detailed information about a specific location/sub-account by ID Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The unique ID of the location to retrieve'}}, 'required': ['locationId']} - create_location: Create a new sub-account/location in GoHighLevel (Agency Pro plan required) Input: {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Name of the sub-account/location'}, 'companyId': {'type': 'string', 'description': 'Company/Agency ID'}, 'phone': {'type': 'string', 'description': 'Phone number with country code (e.g., +1410039940)'}, 'address': {'type': 'string', 'description': 'Business address'}, 'city': {'type': 'string', 'description': 'City where business is located'}, 'state': {'type': 'string', 'description': 'State where business operates'}, 'country': {'type': 'string', 'description': '2-letter country code (e.g., US, CA, GB)'}, 'postalCode': {'type': 'string', 'description': 'Postal/ZIP code'}, 'website': {'type': 'string', 'description': 'Business website URL'}, 'timezone': {'type': 'string', 'description': 'Business timezone (e.g., US/Central)'}, 'prospectInfo': {'type': 'object', 'properties': {'firstName': {'type': 'string', 'description': 'Prospect first name'}, 'lastName': {'type': 'string', 'description': 'Prospect last name'}, 'email': {'type': 'string', 'format': 'email', 'description': 'Prospect email'}}, 'required': ['firstName', 'lastName', 'email'], 'description': 'Prospect information for the location'}, 'snapshotId': {'type': 'string', 'description': 'Snapshot ID to load into the location'}}, 'required': ['name', 'companyId']} - update_location: Update an existing sub-account/location in GoHighLevel Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The unique ID of the location to update'}, 'name': {'type': 'string', 'description': 'Updated name of the sub-account/location'}, 'companyId': {'type': 'string', 'description': 'Company/Agency ID'}, 'phone': {'type': 'string', 'description': 'Updated phone number'}, 'address': {'type': 'string', 'description': 'Updated business address'}, 'city': {'type': 'string', 'description': 'Updated city'}, 'state': {'type': 'string', 'description': 'Updated state'}, 'country': {'type': 'string', 'description': 'Updated 2-letter country code'}, 'postalCode': {'type': 'string', 'description': 'Updated postal/ZIP code'}, 'website': {'type': 'string', 'description': 'Updated website URL'}, 'timezone': {'type': 'string', 'description': 'Updated timezone'}}, 'required': ['locationId', 'companyId']} - delete_location: Delete a sub-account/location from GoHighLevel Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The unique ID of the location to delete'}, 'deleteTwilioAccount': {'type': 'boolean', 'description': 'Whether to delete associated Twilio account', 'default': False}}, 'required': ['locationId', 'deleteTwilioAccount']} - get_location_tags: Get all tags for a specific location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID to get tags from'}}, 'required': ['locationId']} - create_location_tag: Create a new tag for a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID to create tag in'}, 'name': {'type': 'string', 'description': 'Name of the tag to create'}}, 'required': ['locationId', 'name']} - get_location_tag: Get a specific location tag by ID Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'tagId': {'type': 'string', 'description': 'The tag ID to retrieve'}}, 'required': ['locationId', 'tagId']} - update_location_tag: Update an existing location tag Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'tagId': {'type': 'string', 'description': 'The tag ID to update'}, 'name': {'type': 'string', 'description': 'Updated name for the tag'}}, 'required': ['locationId', 'tagId', 'name']} - delete_location_tag: Delete a location tag Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'tagId': {'type': 'string', 'description': 'The tag ID to delete'}}, 'required': ['locationId', 'tagId']} - search_location_tasks: Search tasks within a location with advanced filtering Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID to search tasks in'}, 'contactId': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by specific contact IDs'}, 'completed': {'type': 'boolean', 'description': 'Filter by completion status'}, 'assignedTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by assigned user IDs'}, 'query': {'type': 'string', 'description': 'Search query for task content'}, 'limit': {'type': 'number', 'description': 'Maximum number of tasks to return (default: 25)', 'default': 25}, 'skip': {'type': 'number', 'description': 'Number of tasks to skip for pagination (default: 0)', 'default': 0}, 'businessId': {'type': 'string', 'description': 'Business ID filter'}}, 'required': ['locationId']} - get_location_custom_fields: Get custom fields for a location, optionally filtered by model type Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'model': {'type': 'string', 'enum': ['contact', 'opportunity', 'all'], 'description': 'Filter by model type (default: all)', 'default': 'all'}}, 'required': ['locationId']} - create_location_custom_field: Create a new custom field for a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'name': {'type': 'string', 'description': 'Name of the custom field'}, 'dataType': {'type': 'string', 'description': 'Data type of the field (TEXT, NUMBER, DATE, etc.)'}, 'placeholder': {'type': 'string', 'description': 'Placeholder text for the field'}, 'model': {'type': 'string', 'enum': ['contact', 'opportunity'], 'description': 'Model to create the field for', 'default': 'contact'}, 'position': {'type': 'number', 'description': 'Position/order of the field (default: 0)', 'default': 0}}, 'required': ['locationId', 'name', 'dataType']} - get_location_custom_field: Get a specific custom field by ID Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customFieldId': {'type': 'string', 'description': 'The custom field ID to retrieve'}}, 'required': ['locationId', 'customFieldId']} - update_location_custom_field: Update an existing custom field Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customFieldId': {'type': 'string', 'description': 'The custom field ID to update'}, 'name': {'type': 'string', 'description': 'Updated name of the custom field'}, 'placeholder': {'type': 'string', 'description': 'Updated placeholder text'}, 'position': {'type': 'number', 'description': 'Updated position/order'}}, 'required': ['locationId', 'customFieldId', 'name']} - delete_location_custom_field: Delete a custom field from a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customFieldId': {'type': 'string', 'description': 'The custom field ID to delete'}}, 'required': ['locationId', 'customFieldId']} - get_location_custom_values: Get all custom values for a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}}, 'required': ['locationId']} - create_location_custom_value: Create a new custom value for a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'name': {'type': 'string', 'description': 'Name of the custom value field'}, 'value': {'type': 'string', 'description': 'Value to assign'}}, 'required': ['locationId', 'name', 'value']} - get_location_custom_value: Get a specific custom value by ID Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customValueId': {'type': 'string', 'description': 'The custom value ID to retrieve'}}, 'required': ['locationId', 'customValueId']} - update_location_custom_value: Update an existing custom value Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customValueId': {'type': 'string', 'description': 'The custom value ID to update'}, 'name': {'type': 'string', 'description': 'Updated name'}, 'value': {'type': 'string', 'description': 'Updated value'}}, 'required': ['locationId', 'customValueId', 'name', 'value']} - delete_location_custom_value: Delete a custom value from a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'customValueId': {'type': 'string', 'description': 'The custom value ID to delete'}}, 'required': ['locationId', 'customValueId']} - get_location_templates: Get SMS/Email templates for a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'originId': {'type': 'string', 'description': 'Origin ID (required parameter)'}, 'deleted': {'type': 'boolean', 'description': 'Include deleted templates (default: false)', 'default': False}, 'skip': {'type': 'number', 'description': 'Number to skip for pagination (default: 0)', 'default': 0}, 'limit': {'type': 'number', 'description': 'Maximum number to return (default: 25)', 'default': 25}, 'type': {'type': 'string', 'enum': ['sms', 'email', 'whatsapp'], 'description': 'Filter by template type'}}, 'required': ['locationId', 'originId']} - delete_location_template: Delete a template from a location Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID'}, 'templateId': {'type': 'string', 'description': 'The template ID to delete'}}, 'required': ['locationId', 'templateId']} - get_social_accounts: Get all connected social media accounts and groups Input: {'type': 'object', 'properties': {}, 'additionalProperties': False} - delete_social_account: Delete a social media account connection Input: {'type': 'object', 'properties': {'accountId': {'type': 'string', 'description': 'Account ID to delete'}, 'companyId': {'type': 'string', 'description': 'Company ID'}, 'userId': {'type': 'string', 'description': 'User ID'}}, 'required': ['accountId']} - set_csv_accounts: Set accounts for CSV import processing Input: {'type': 'object', 'properties': {'accountIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Account IDs for CSV import'}, 'filePath': {'type': 'string', 'description': 'CSV file path'}, 'rowsCount': {'type': 'number', 'description': 'Number of rows to process'}, 'fileName': {'type': 'string', 'description': 'CSV file name'}, 'approver': {'type': 'string', 'description': 'Approver user ID'}, 'userId': {'type': 'string', 'description': 'User ID'}}, 'required': ['accountIds', 'filePath', 'rowsCount', 'fileName']} - get_platform_accounts: Get available accounts for a specific platform after OAuth Input: {'type': 'object', 'properties': {'platform': {'type': 'string', 'enum': ['google', 'facebook', 'instagram', 'linkedin', 'twitter', 'tiktok', 'tiktok-business'], 'description': 'Social media platform'}, 'accountId': {'type': 'string', 'description': 'OAuth account ID'}}, 'required': ['platform', 'accountId']} - ghl_get_survey_submissions: Retrieve survey submissions with advanced filtering and pagination. Get responses from contacts who have completed surveys. Input: {'type': 'object', 'properties': {'locationId': {'type': 'string', 'description': 'The location ID to get submissions for. If not provided, uses the default location from configuration.'}, 'page': {'type': 'number', 'description': 'Page number for pagination (default: 1)'}, 'limit': {'type': 'number', 'description': 'Number of submissions per page (max: 100, default: 20)'}, 'surveyId': {'type': 'string', 'description': 'Filter submissions by specific survey ID'}, 'q': {'type': 'string', 'description': 'Search by contact ID, name, email, or phone number'}, 'startAt': {'type': 'string', 'description': 'Start date for filtering submissions (YYYY-MM-DD format)'}, 'endAt': {'type': 'string', 'description': 'End date for filtering submissions (YYYY-MM-DD format)'}}, 'additionalProperties': False} - list_subscriptions: List subscriptions with optional filtering and pagination Input: {'type': 'object', 'properties': {'altId': {'type': 'string', 'description': 'Alt ID (unique identifier like location ID)'}, 'altType': {'type': 'string', 'enum': ['location'], 'description': 'Alt Type'}, 'entityId': {'type': 'string', 'description': 'Entity ID for filtering subscriptions'}, 'paymentMode': {'type': 'string', 'description': 'Mode of payment (live/test)'}, 'startAt': {'type': 'string', 'description': 'Starting date interval for subscriptions (YYYY-MM-DD)'}, 'endAt': {'type': 'string', 'description': 'Ending date interval for subscriptions (YYYY-MM-DD)'}, 'entitySourceType': {'type': 'string', 'description': 'Source of the subscriptions'}, 'search': {'type': 'string', 'description': 'Search term for subscription name'}, 'contactId': {'type': 'string', 'description': 'Contact ID for the subscription'}, 'id': {'type': 'string', 'description': 'Subscription ID for filtering'}, 'limit': {'type': 'number', 'description': 'Maximum number of items per page', 'default': 10}, 'offset': {'type': 'number', 'description': 'Starting index for pagination', 'default': 0}}, 'required': ['altId', 'altType']} - get_subscription_by_id: Get a specific subscription by its ID Input: {'type': 'object', 'properties': {'subscriptionId': {'type': 'string', 'description': 'ID of the subscription to retrieve'}, 'altId': {'type': 'string', 'description': 'Alt ID (unique identifier like location ID)'}, 'altType': {'type': 'string', 'enum': ['location'], 'description': 'Alt Type'}}, 'required': ['subscriptionId', 'altId', 'altType']} --- STDERR --- [GHL-MCP-LOG] [GHL MCP] Initializing GHL API client... [GHL-MCP-LOG] [GHL MCP] Base URL: https://services.leadconnectorhq.com [GHL-MCP-LOG] [GHL MCP] Version: 2021-07-28 [GHL-MCP-LOG] [GHL MCP] Location ID: 73q7bKDm2d6hsCtHuz1m [GHL-MCP-LOG] [GHL MCP] Request handlers setup complete [GHL-MCP-LOG] \U0001f680 Starting GoHighLevel MCP Server... [GHL-MCP-LOG] ===================================== [GHL-MCP-LOG] [GHL MCP] Testing GHL API connection... [GHL-MCP-LOG] [GHL API] GET /locations/73q7bKDm2d6hsCtHuz1m [GHL-MCP-LOG] [GHL API] Response error: { [GHL-MCP-LOG] status: 403, [GHL-MCP-LOG] message: 'Forbidden resource', [GHL-MCP-LOG] url: '/locations/73q7bKDm2d6hsCtHuz1m' [GHL-MCP-LOG] } [GHL-MCP-LOG] [GHL MCP] \u274c GHL API connection failed: Error: GHL API connection test failed: Error: GHL API Error (403): Forbidden resource [GHL-MCP-LOG] at GHLApiClient.testConnection (E:\genesis-system\mcp-servers\ghl\dist\clients\ghl-api-client.js:918:19) [GHL-MCP-LOG] at process.processTicksAndRejections (node:internal/process/task_queues:105:5) [GHL-MCP-LOG] at async GHLMCPServer.testGHLConnection (E:\genesis-system\mcp-servers\ghl\dist\server.js:601:28) [GHL-MCP-LOG] at async GHLMCPServer.start (E:\genesis-system\mcp-servers\ghl\dist\server.js:619:17) [GHL-MCP-LOG] at async main (E:\genesis-system\mcp-servers\ghl\dist\server.js:807:9) [GHL-MCP-LOG] [GHL MCP] \u26a0\ufe0f GHL API connection test failed: Failed to connect to GHL API: Error: GHL API connection test failed: Error: GHL API Error (403): Forbidden resource [GHL-MCP-LOG] [GHL MCP] Proceeding anyway (tools list will be available)... [GHL-MCP-LOG] \u2705 GoHighLevel MCP Server started successfully! [GHL-MCP-LOG] \U0001f517 Ready to handle Claude Desktop requests [GHL-MCP-LOG] ===================================== [GHL-MCP-LOG] \U0001f4cb Available tools: 253 [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f3af CONTACT MANAGEMENT (31 tools): [GHL-MCP-LOG] BASIC: create, search, get, update, delete contacts [GHL-MCP-LOG] TAGS: add/remove contact tags, bulk tag operations [GHL-MCP-LOG] TASKS: get, create, update, delete contact tasks [GHL-MCP-LOG] NOTES: get, create, update, delete contact notes [GHL-MCP-LOG] ADVANCED: upsert, duplicate check, business association [GHL-MCP-LOG] BULK: mass tag updates, business assignments [GHL-MCP-LOG] FOLLOWERS: add/remove contact followers [GHL-MCP-LOG] CAMPAIGNS: add/remove contacts to/from campaigns [GHL-MCP-LOG] WORKFLOWS: add/remove contacts to/from workflows [GHL-MCP-LOG] APPOINTMENTS: get contact appointments [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4ac MESSAGING & CONVERSATIONS (20 tools): [GHL-MCP-LOG] BASIC: send_sms, send_email - Send messages to contacts [GHL-MCP-LOG] CONVERSATIONS: search, get, create, update, delete conversations [GHL-MCP-LOG] MESSAGES: get individual messages, email messages, upload attachments [GHL-MCP-LOG] STATUS: update message delivery status, monitor recent activity [GHL-MCP-LOG] MANUAL: add inbound messages, add outbound calls manually [GHL-MCP-LOG] RECORDINGS: get call recordings, transcriptions, download transcripts [GHL-MCP-LOG] SCHEDULING: cancel scheduled messages and emails [GHL-MCP-LOG] LIVE CHAT: typing indicators for real-time conversations [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4dd BLOG MANAGEMENT: [GHL-MCP-LOG] • create_blog_post - Create new blog posts [GHL-MCP-LOG] • update_blog_post - Update existing blog posts [GHL-MCP-LOG] • get_blog_posts - List and search blog posts [GHL-MCP-LOG] • get_blog_sites - Get available blog sites [GHL-MCP-LOG] • get_blog_authors - Get available blog authors [GHL-MCP-LOG] • get_blog_categories - Get available blog categories [GHL-MCP-LOG] • check_url_slug - Validate URL slug availability [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4b0 OPPORTUNITY MANAGEMENT (10 tools): [GHL-MCP-LOG] SEARCH: search_opportunities - Search by pipeline, stage, status, contact [GHL-MCP-LOG] PIPELINES: get_pipelines - Get all sales pipelines and stages [GHL-MCP-LOG] CRUD: create, get, update, delete opportunities [GHL-MCP-LOG] STATUS: update_opportunity_status - Quick status updates (won/lost) [GHL-MCP-LOG] UPSERT: upsert_opportunity - Smart create/update based on contact [GHL-MCP-LOG] FOLLOWERS: add/remove followers for opportunity notifications [GHL-MCP-LOG] \U0001f5d3 CALENDAR & APPOINTMENTS: [GHL-MCP-LOG] • get_calendar_groups - Get all calendar groups [GHL-MCP-LOG] • get_calendars - List all calendars with filtering [GHL-MCP-LOG] • create_calendar - Create new calendars [GHL-MCP-LOG] • get_calendar - Get calendar details by ID [GHL-MCP-LOG] • update_calendar - Update calendar settings [GHL-MCP-LOG] • delete_calendar - Delete calendars [GHL-MCP-LOG] • get_calendar_events - Get appointments/events in date range [GHL-MCP-LOG] • get_free_slots - Check availability for bookings [GHL-MCP-LOG] • create_appointment - Book new appointments [GHL-MCP-LOG] • get_appointment - Get appointment details [GHL-MCP-LOG] • update_appointment - Update appointment details [GHL-MCP-LOG] • delete_appointment - Cancel appointments [GHL-MCP-LOG] • create_block_slot - Block time slots [GHL-MCP-LOG] • update_block_slot - Update blocked slots [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4e7 EMAIL MARKETING: [GHL-MCP-LOG] • get_email_campaigns - Get list of email campaigns [GHL-MCP-LOG] • create_email_template - Create a new email template [GHL-MCP-LOG] • get_email_templates - Get list of email templates [GHL-MCP-LOG] • update_email_template - Update an existing email template [GHL-MCP-LOG] • delete_email_template - Delete an email template [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f3e2 LOCATION MANAGEMENT: [GHL-MCP-LOG] • search_locations - Search for locations/sub-accounts [GHL-MCP-LOG] • get_location - Get detailed location information [GHL-MCP-LOG] • create_location - Create new sub-accounts (Agency Pro required) [GHL-MCP-LOG] • update_location - Update location information [GHL-MCP-LOG] • delete_location - Delete locations [GHL-MCP-LOG] • get_location_tags - Get all tags for a location [GHL-MCP-LOG] • create_location_tag - Create location tags [GHL-MCP-LOG] • update_location_tag - Update location tags [GHL-MCP-LOG] • delete_location_tag - Delete location tags [GHL-MCP-LOG] • search_location_tasks - Search tasks within locations [GHL-MCP-LOG] • get_location_custom_fields - Get custom fields [GHL-MCP-LOG] • create_location_custom_field - Create custom fields [GHL-MCP-LOG] • update_location_custom_field - Update custom fields [GHL-MCP-LOG] • delete_location_custom_field - Delete custom fields [GHL-MCP-LOG] • get_location_custom_values - Get custom values [GHL-MCP-LOG] • create_location_custom_value - Create custom values [GHL-MCP-LOG] • update_location_custom_value - Update custom values [GHL-MCP-LOG] • delete_location_custom_value - Delete custom values [GHL-MCP-LOG] • get_location_templates - Get SMS/Email templates [GHL-MCP-LOG] • delete_location_template - Delete templates [GHL-MCP-LOG] • get_timezones - Get available timezones [GHL-MCP-LOG] [GHL-MCP-LOG] \u2705 EMAIL VERIFICATION: [GHL-MCP-LOG] • verify_email - Verify email deliverability and risk assessment [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4f1 SOCIAL MEDIA POSTING: [GHL-MCP-LOG] POSTS: search, create, get, update, delete social posts [GHL-MCP-LOG] BULK: bulk delete up to 50 posts at once [GHL-MCP-LOG] ACCOUNTS: get connected accounts, delete connections [GHL-MCP-LOG] CSV: upload bulk posts via CSV, manage import status [GHL-MCP-LOG] ORGANIZE: categories and tags for content organization [GHL-MCP-LOG] OAUTH: start OAuth flows, get platform accounts [GHL-MCP-LOG] PLATFORMS: Google, Facebook, Instagram, LinkedIn, Twitter, TikTok [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4c1 MEDIA LIBRARY MANAGEMENT: [GHL-MCP-LOG] • get_media_files - List files and folders with search/filter [GHL-MCP-LOG] • upload_media_file - Upload files or add hosted file URLs [GHL-MCP-LOG] • delete_media_file - Delete files and folders [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f3d7\ufe0f CUSTOM OBJECTS MANAGEMENT: [GHL-MCP-LOG] SCHEMA: get_all_objects, create_object_schema, get_object_schema, update_object_schema [GHL-MCP-LOG] RECORDS: create_object_record, get_object_record, update_object_record, delete_object_record [GHL-MCP-LOG] SEARCH: search_object_records - Search records using searchable properties [GHL-MCP-LOG] FLEXIBILITY: Manage custom objects like pets, tickets, inventory, or any business data [GHL-MCP-LOG] RELATIONSHIPS: Owner and follower management for records [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f4b3 PAYMENTS MANAGEMENT: [GHL-MCP-LOG] INTEGRATIONS: create/list white-label payment integrations [GHL-MCP-LOG] ORDERS: list_orders, get_order_by_id - Manage customer orders [GHL-MCP-LOG] FULFILLMENT: create/list order fulfillments with tracking [GHL-MCP-LOG] TRANSACTIONS: list/get payment transactions and history [GHL-MCP-LOG] SUBSCRIPTIONS: list/get recurring payment subscriptions [GHL-MCP-LOG] COUPONS: create, update, delete, list promotional coupons [GHL-MCP-LOG] CUSTOM PROVIDERS: integrate custom payment gateways [GHL-MCP-LOG] [GHL-MCP-LOG] \U0001f9fe INVOICES & BILLING MANAGEMENT: [GHL-MCP-LOG] TEMPLATES: create, list, get, update, delete invoice templates [GHL-MCP-LOG] SCHEDULES: create, list, get recurring invoice automation [GHL-MCP-LOG] INVOICES: create, list, get, send invoices to customers [GHL-MCP-LOG] ESTIMATES: create, list, send estimates, convert to invoices [GHL-MCP-LOG] UTILITIES: generate invoice/estimate numbers automatically [GHL-MCP-LOG] FEATURES: late fees, payment methods, multi-currency support [GHL-MCP-LOG] ===================================== [GHL-MCP-LOG] [GHL MCP] Listing available tools... [GHL-MCP-LOG] [GHL MCP] Registered 253 tools total: [GHL-MCP-LOG] [GHL MCP] - 31 contact tools [GHL-MCP-LOG] [GHL MCP] - 20 conversation tools [GHL-MCP-LOG] [GHL MCP] - 7 blog tools [GHL-MCP-LOG] [GHL MCP] - 10 opportunity tools [GHL-MCP-LOG] [GHL MCP] - 39 calendar tools [GHL-MCP-LOG] [GHL MCP] - 5 email tools [GHL-MCP-LOG] [GHL MCP] - 24 location tools [GHL-MCP-LOG] [GHL MCP] - 1 email ISV tools [GHL-MCP-LOG] [GHL MCP] - 17 social media tools [GHL-MCP-LOG] [GHL MCP] - 3 media tools [GHL-MCP-LOG] [GHL MCP] - 9 object tools [GHL-MCP-LOG] [GHL MCP] - 10 association tools [GHL-MCP-LOG] [GHL MCP] - 8 custom field V2 tools [GHL-MCP-LOG] [GHL MCP] - 1 workflow tools [GHL-MCP-LOG] [GHL MCP] - 2 survey tools [GHL-MCP-LOG] [GHL MCP] - 18 store tools [GHL-MCP-LOG] [GHL MCP] - 10 products tools [GHL-MCP-LOG] [GHL MCP] - 20 payments tools [GHL-MCP-LOG] [GHL MCP] - 18 invoices tools --- EXIT CODE: 0 ---