HubSpot
CRM
FloConnector is a hosted LeadConnector MCP server. Securely connect Claude, ChatGPT and other AI clients to LeadConnector. Ask in plain English; it runs the 117 tools for you, behind one endpoint, with you deciding what it can touch.
Beta. Connect it today and every tool below is live. It is new enough that we are still testing it against real LeadConnector accounts, so tell us if something looks off and we will fix it fast.
Built in-house. We wrote this connector ourselves and call LeadConnector directly, with no third party in the path. Nothing in a request or response is retained by anyone but LeadConnector.
Single connection. One LeadConnector organisation per workspace. Connect another in a separate workspace.
Tools
117 tools your agent gets the moment LeadConnector is connected.
117 tools
Search this sub-account's contacts by free text (name, email, or phone). Returns a page of contacts with a cursor for the next page.
Fetch a single contact by id, including tags, custom fields and DND settings.
Create a contact in this sub-account. Only locationId is strictly required, but supply at least a name, email or phone.
Update a contact's fields. Note: supplying tags REPLACES all existing tags — use leadconnector_add_contact_tags / leadconnector_remove_contact_tags to change them incrementally.
Permanently delete a contact from this sub-account.
Add one or more tags to a contact, leaving existing tags in place.
Remove one or more tags from a contact.
Attach a note to a contact.
List all notes attached to a contact.
Create a task against a contact.
List all tasks against a contact.
Mark a contact's task complete (or reopen it by passing completed=false).
List a contact's calendar appointments.
Enrol a contact into a marketing campaign, which is what actually sends them its emails and messages. Get the campaignId from leadconnector_list_campaigns. The campaign itself is built in LeadConnector; this puts a contact through it.
Take a contact out of one marketing campaign, stopping its remaining messages to them.
Take a contact out of EVERY marketing campaign at once, stopping all further campaign messages to them. Use for an opt-out or complaint; prefer leadconnector_remove_contact_from_campaign to stop just one.
Enrol a contact into an automation workflow — the multi-step nurture sequences that send emails and SMS on a schedule. Get the workflowId from leadconnector_list_workflows.
Take a contact out of an automation workflow, stopping its remaining steps for them.
Search this sub-account's conversations, optionally filtered by contact, assignee or read/unread state.
Fetch a single conversation by id, including its contact, channel type and unread count.
List messages in a conversation, newest first. Paginate by passing the returned lastMessageId; the response's nextPage flag says whether more remain.
Send an outbound message to a contact. For SMS/WhatsApp supply `message`; for Email supply `subject` plus `html` or `message`. The conversation is resolved from the contact.
List this sub-account's calendars. Call this first to get the calendarId needed to check availability or book, and to read each calendar's teamMembers — booking requires an assignedUserId drawn from that list.
Get a calendar's available appointment slots in a date range. Returns availability keyed by date (YYYY-MM-DD). The range cannot exceed 31 days.
List booked appointments and events in a date range. One of calendarId, userId or groupId must be supplied.
Book an appointment on a calendar for a contact. Check availability with leadconnector_get_free_slots first, unless you pass ignoreFreeSlotValidation.
Update or reschedule an appointment. Pass startTime (and optionally endTime) to move it. For recurring appointments, pass the master event id to change the whole series.
Cancel an appointment, keeping it on the calendar with a cancelled status (the record and its history are preserved).
List this sub-account's opportunity pipelines and their stages. Call this first to get the pipelineId and pipelineStageId needed to create or move an opportunity.
Search this sub-account's opportunities, optionally filtered by pipeline, stage, status, contact or assignee.
Fetch a single opportunity by id.
Create an opportunity (deal) in a pipeline. Get pipelineId and pipelineStageId from leadconnector_list_pipelines first.
Update an opportunity's name, stage, value or assignee. To change only the status, use leadconnector_update_opportunity_status.
Set an opportunity's status (open, won, lost or abandoned). Supply lostReasonId when marking it lost.
Permanently delete an opportunity.
Fetch this LeadConnector sub-account's details — business name, address, timezone, contact details and settings.
List the sub-account's custom field DEFINITIONS. Call this before setting customFields on a contact or opportunity — it returns each field's id, fieldKey and dataType, which is what those writes need.
List the sub-account's custom VALUES — account-wide merge fields (e.g. {{ custom_values.booking_link }}) used in templates and messages. These are per-sub-account constants, not per-contact data.
List every tag defined in this sub-account. Useful before tagging a contact, so the model reuses an existing tag rather than creating a near-duplicate.
List this sub-account's invoices, optionally filtered by status, contact, date range or free-text search.
Fetch a single invoice by id, including its line items, totals and amount due. A VOIDED invoice cannot be fetched here and returns 'Invoice not found' — that means voided, not deleted; find it via leadconnector_list_invoices with status 'void'.
Get the next available invoice number for this sub-account. Use before leadconnector_create_invoice if you want an explicit number.
Create a draft invoice for a contact. Use leadconnector_get_contact first to get the contact's id, name, email and phone — all four are required. The invoice is created as a draft; send it with leadconnector_send_invoice.
Update an existing invoice. Line items, issue date and due date must all be supplied.
Send an invoice to its recipients by email, SMS, or both. Email delivery is reliable; the SMS actions require the sub-account to have bought a phone number, and silently deliver nothing without one — prefer 'email' unless you know a number is configured. Use 'send_manually' to mark it sent without contacting anyone. Requires the id of the user sending it — get one from leadconnector_list_users.
Void a SENT invoice. The record is kept but the invoice is no longer payable. A draft cannot be voided (delete it instead), and neither can an invoice that has already taken a payment. After voiding, the invoice can no longer be fetched by id — leadconnector_get_invoice returns 'Invoice not found'. It is still listed by leadconnector_list_invoices with status 'void', which is the way to confirm the void succeeded. This response already carries the final voided state.
Permanently delete a DRAFT invoice. Only drafts can be deleted — LeadConnector refuses anything already sent, paid or voided. To stop a sent invoice being payable, use leadconnector_void_invoice instead.
Record a manual (offline) payment against an invoice — cash, cheque, card, bank transfer or other. This does not charge anything; it marks money already received.
Create a Text2Pay invoice and get back a payable link (invoiceUrl) for the contact. The link in the response is the dependable output — pass it on yourself. action:'send' delivers by SMS and requires the sub-account to have bought a phone number; without one it reports success and silently sends nothing, so prefer 'draft' and share the link. Note the response reports status 'draft' even when the invoice has already moved to 'sent'.
List this sub-account's estimates (quotes), optionally filtered by status, contact, date range or free-text search.
Get the next available estimate number for this sub-account. Use before leadconnector_create_estimate if you want an explicit number.
Create a draft estimate (quote) for a contact. Use leadconnector_get_contact first — the contact's id, name, email and phone are all required. Send it with leadconnector_send_estimate, and turn an accepted one into an invoice with leadconnector_create_invoice_from_estimate.
Update an existing estimate. Line items, issue date and expiry date must all be supplied — this is a full restatement, not a patch.
Send an estimate to its contact by email and/or SMS. Email delivery is reliable; the SMS actions require the sub-account to have bought a phone number and deliver nothing without one. Use 'send_manually' to mark it sent WITHOUT contacting anyone.
Set an estimate's status — most usefully to 'accepted' or 'declined' once the customer has decided. An estimate MUST be 'accepted' before leadconnector_create_invoice_from_estimate will convert it. Note an accepted estimate becomes read-only, so make any edits first.
Convert an ACCEPTED estimate into a real invoice, and return the new invoice. The estimate must already be at status 'accepted' (use leadconnector_update_estimate_status) — otherwise this fails with 'Estimate is not accepted'. The new invoice is created as a draft; send it with leadconnector_send_invoice.
Permanently delete an estimate.
List this sub-account's reusable estimate templates.
Create a reusable estimate template for this sub-account.
Update an estimate template. Line items are a full restatement, not a patch.
Permanently delete an estimate template.
List this sub-account's recurring invoice schedules, optionally filtered by status, date range or free-text search.
Fetch one recurring invoice schedule, including its recurrence rule, line items and the invoices it has generated.
Create a recurring invoice schedule as a DRAFT — it does not bill anyone until leadconnector_start_invoice_schedule is called. Use leadconnector_get_contact first; the contact's id, name, email and phone are all required. Which recurrence fields you must supply depends on intervalType: daily needs none, weekly needs dayOfWeek, monthly needs dayOfMonth + dayOfWeek + numOfWeek, and yearly needs those plus monthOfYear.
Update a DRAFT recurring invoice schedule. Line items and the recurrence rule are a full restatement, not a patch. To change a schedule that is already running, use leadconnector_reschedule_invoice_schedule.
Activate a draft schedule so LeadConnector begins issuing invoices on its recurrence rule. This is the point at which a real customer starts being billed — check the schedule with leadconnector_get_invoice_schedule first. Optionally enable auto-payment against a saved card.
Change a schedule that is ALREADY running and re-apply its recurrence in one call, without cancelling it. Line items and the recurrence rule are a full restatement, not a patch. Use leadconnector_update_invoice_schedule while a schedule is still a draft.
Turn auto-payment on or off for a running schedule, so each generated invoice is charged to a saved card instead of emailed for manual payment.
Stop a running schedule so no further invoices are issued. Invoices it has already generated are unaffected — cancel stops future billing, it does not refund or void anything.
Permanently delete a recurring invoice schedule.
List this sub-account's payment orders, optionally filtered by status, contact or date range.
Fetch a single payment order by id, including its line items and contact snapshot.
List this sub-account's payment transactions, optionally filtered by contact, subscription or date range.
Fetch a single payment transaction by id.
List this sub-account's recurring payment subscriptions.
List this sub-account's products.
Fetch a single product by id or slug, including its variants.
Create a product in this sub-account. Add prices afterwards with leadconnector_create_price.
Update a product. This is a FULL REPLACE — name and productType must always be supplied, so read the product first with leadconnector_get_product and resend every field you want to keep.
Permanently delete a product.
List the prices defined for a product.
Add a price to a product. Use type 'recurring' for subscriptions, 'one_time' for a single charge.
List the social media accounts connected to this sub-account, with each one's health: isExpired, expire (when the platform token lapses) and deleted. Use it to check whether posting will work before attempting it, and to get the account ids that creating a post requires. Reconnecting an expired account is done by the user in LeadConnector; this reports status, it cannot repair it.
List social posts in a date window. Both fromDate and toDate are required — there is no unbounded listing.
Fetch a single social post by id.
Create a social media post across one or more connected accounts. Get accountIds from leadconnector_list_social_accounts and a userId from leadconnector_list_users. Set scheduleDate to schedule it.
Update an existing social post — its text, media, schedule or status. This is a RE-STATEMENT, not a patch: accountIds and userId must be supplied every time, even when unchanged.
Delete a draft or scheduled social post. It CANNOT retract a post that has already been published: LeadConnector returns success but the post stays live on the platform and in the list. To remove a published post, the user must delete it in the social network itself.
List this sub-account's blogs. Call this first — every other blog operation needs a blogId.
List posts on a blog, all statuses by default. Get the blogId from leadconnector_list_blog_sites.
List blog categories for this sub-account. Their ids are required when creating a post.
List blog authors for this sub-account. An author id is required when creating a post.
Check whether a blog post URL slug is already taken. Use before leadconnector_create_blog_post to avoid a clash.
Publish a blog post. LeadConnector requires ALL of these: title, blogId, imageUrl, description, rawHTML, status, imageAltText, categories, author, urlSlug and publishedAt. Gather ids from leadconnector_list_blog_sites, leadconnector_list_blog_categories and leadconnector_list_blog_authors first.
Update a blog post. Like create, this is a FULL REPLACE — every required field must be resent, not just the ones you are changing.
Create an email template in this sub-account's builder, then set its content with leadconnector_update_email_template. Templates are what campaigns and workflows send, so this is how an email is authored for marketing use. Note it does NOT send anything on its own.
Set an email template's HTML body. Supply complete, self-contained HTML with inline CSS — email clients strip stylesheets, and remote images are blocked by default, so prefer text and background colours over images. Returns a previewUrl you can share to show how it renders.
Permanently delete an email template from the builder.
List this sub-account's email builder templates.
List this sub-account's email campaigns and their schedules. Set showStats to include each campaign's performance — delivered, opened and clicked counts plus revenue. This is the ONLY way to read email campaign statistics; LeadConnector (GoHighLevel) exposes no separate stats endpoint to a sub-account.
List the users (staff) in this sub-account. Needed to get a userId for sending invoices, creating Text2Pay links and creating social posts.
Fetch a single user by id, including their roles and permissions.
List this sub-account's automation workflows and their statuses.
List this sub-account's campaigns.
List this sub-account's forms.
List form submissions, newest first, optionally for one form or date range. Covers all history unless a date range is given.
List this sub-account's surveys.
List survey submissions, newest first, optionally for one survey or date range. Covers all history unless a date range is given.
List this sub-account's trigger links (trackable redirect links usable in messages and emails).
Create a trackable trigger link that redirects to a target URL.
List the businesses defined in this sub-account (used to group contacts by company).
List this sub-account's custom object types. Their keys are needed to search records — custom objects carry a 'custom_objects.' prefix.
Search records of a custom object. Get the schemaKey from leadconnector_list_object_schemas (custom objects are prefixed 'custom_objects.'). Query syntax is property:value, e.g. name:Buddy.
List this sub-account's funnels.
List files in this sub-account's media library, including files inside folders. Returns each file's public URL, which is what attaching media to a social post needs. Pass type 'folder' to browse the folder structure instead.
Register a file that is already on a public URL into this sub-account's media library, so it can be found later and attached to a social or blog post. IMPORTANT: this does NOT copy the file into LeadConnector — the library entry points at the original URL, so if that URL stops working the media breaks. Prefer a stable, permanent source. A local file cannot be uploaded through this connection.
Permanently delete a file or folder from this sub-account's media library. Deleting a folder removes what is inside it.
No tools match your search.
Create a FloConnector workspace, connect LeadConnector once from the dashboard, then add your FloConnector endpoint to Claude as a custom connector. Claude handles the sign-in prompt; there is no server to host and no code to write. The same endpoint works in ChatGPT.
117 tools: 58 that read LeadConnector data and 59 that change it. Every tool is listed on this page, so you can see exactly what the model is able to call before you connect.
No. FloConnector holds the LeadConnector credential, encrypted before it is stored, and calls LeadConnector on the model's behalf. The AI client only ever sees the tools and their results, never the credential behind them.
Yes. Each connection is exposed through a profile, and a profile carries only the tools you switch on. Leave the 59 write tools off and the connection is read-only.
Yes. The endpoint is a standard hosted MCP server, so it works in any client that supports MCP connectors, including Claude and ChatGPT.