HubSpot MCP server

Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on HubSpot, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.

Overview

These tools give agents full create, read, and update access to HubSpot CRM for contacts, companies, deals, and tickets. They also support cross-object search, note logging, and associations to link records together.

For setup instructions, see SnapLogic MCP Server quickstart.

Example Prompts

  • Link contact 12345 to company 67890 in HubSpot
  • Associate the deal I just created with the Acme company record
  • Attach this ticket to the contact who reported it
  • Connect deal 11111 to contact 12345
  • Create a company in HubSpot called Acme Corp with domain acme.com
  • Add Northwind Trading as a company, industry Logistics, based in Rotterdam
  • Set up a new company record for the account I just described
  • Create company Globex, domain globex.io, phone +1 415 555 0134
  • List the companies in our HubSpot portal
  • Show me 50 companies with their name, domain and industry

Tools

Tool Name Functions
HubSpotAssociationCreate Associate two CRM records using a directional association type ID.
HubSpotCompanyCreate Create a company record with name, domain, industry and location.
HubSpotCompanyList List companies a page at a time using HubSpot's cursor pagination.
HubSpotCompanyShow Retrieve one company by ID, with an optional property selection.
HubSpotCompanyUpdate Update properties on an existing company by ID.
HubSpotContactCreate Create a HubSpot contact from email, name, phone, company and lifecycle stage.
HubSpotContactList List contacts a page at a time using HubSpot's cursor pagination.
HubSpotContactShow Retrieve one contact by ID, with an optional property selection.
HubSpotContactUpdate Update properties on an existing contact by ID.
HubSpotDealCreate Create a deal with name, amount, stage, pipeline, close date and owner.
HubSpotDealList List deals a page at a time using HubSpot's cursor pagination.
HubSpotDealShow Retrieve one deal by ID, with an optional property selection.
HubSpotDealUpdate Update properties on an existing deal by ID.
HubSpotNoteCreate Log a note and attach it to CRM records in one call.
HubSpotSearch Search any CRM object type by free text or JSON filter groups.
HubSpotTicketCreate Create a support ticket with subject, body, pipeline stage, priority and owner.
HubSpotTicketShow Retrieve one ticket by ID, with an optional property selection.
HubSpotTicketUpdate Update properties on an existing ticket by ID.

Set up the MCP Server tools

  1. Download hubspot_tools.zip.
  2. In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded hubspot_tools.zip. Designer unpacks each pipeline into the project.
  3. Attach the required account to the connectivity snaps (see Connection Setup).
  4. Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.

Configure account

Attach an API Suite account (OAuth 2.0 or Bearer token) to the HTTP Client snap in Designer after import.

These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.

See the SnapLogic account documentation for this connector: API Suite Account Configuration.

Important: These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute. Credentials live in the SnapLogic account store, never in the pipeline JSON.

HubSpotAssociationCreate

Links two CRM records together, such as a contact to a company or a deal to a contact. Use it after creating records to connect them with the appropriate association type.

Parameter Type Default Description
from_object_type* string

Source object type, e.g. contacts, deals, tickets.

from_object_id* string

Source record ID.

to_object_type* string

Target object type, e.g. companies, contacts, deals.

to_object_id* string

Target record ID.

association_type_id* string

HubSpot association type ID for this from → to direction (associations are directional).

* Required parameter.

Try asking:

  • Link contact 12345 to company 67890 in HubSpot
  • Associate the deal I just created with the Acme company record
  • Attach this ticket to the contact who reported it
  • Connect deal 11111 to contact 12345

HubSpotCompanyCreate

Creates a new company record in HubSpot CRM from the name and any available details such as domain, industry, phone, and location. Use it when an organisation has no existing CRM record.

Parameter Type Default Description
name* string

Company name.

domain string

Website domain, e.g. acme.com. Used by HubSpot for contact matching and duplicate detection.

industry string

Industry category.

phone string

Company phone number.

city string

City.

country string

Country.

* Required parameter.

Try asking:

  • Create a company in HubSpot called Acme Corp with domain acme.com
  • Add Northwind Trading as a company, industry Logistics, based in Rotterdam
  • Set up a new company record for the account I just described
  • Create company Globex, domain globex.io, phone +1 415 555 0134

HubSpotCompanyList

Lists companies in the HubSpot portal a page at a time, with optional property selection. Use it to browse the account base; use HubSpotSearch when you have a name, domain, or filter to match.

Parameter Type Default Description
limit string

Page size (HubSpot caps this at 100 per page).

after string

Pagination cursor returned by the previous page.

properties string

Comma-separated property names to return.

Try asking:

  • List the companies in our HubSpot portal
  • Show me 50 companies with their name, domain and industry
  • Get the next page of companies
  • Give me the first 10 accounts on file

HubSpotCompanyShow

Retrieves a single company by its HubSpot ID, with an optional property selection. Use it to get full details on a company after a search or list has returned its ID.

Parameter Type Default Description
company_id* string

HubSpot company ID.

properties string

Comma-separated property names to return. Omit for HubSpot's default set.

* Required parameter.

Try asking:

  • Show me company 67890 in HubSpot
  • What industry and domain is this company recorded under?
  • Get the headcount and city for HubSpot company 41022
  • Pull the full record for the Acme company ID

HubSpotCompanyUpdate

Updates properties on an existing company, supporting both standard and custom fields. Use it to correct or enrich company details such as industry, domain, or location.

Parameter Type Default Description
company_id* string

HubSpot company ID to update.

properties_json* string

JSON object of property name/value pairs, e.g. {"industry": "SaaS", "numberofemployees": "500"}.

* Required parameter.

Try asking:

  • Update company 67890 — industry is SaaS and headcount is 500
  • Change the domain on this company to acme-group.com
  • Set the annual revenue on HubSpot company 41022 to 12000000
  • Correct the city on that company record to Amsterdam

HubSpotContactCreate

Creates a new contact in HubSpot CRM from the available details, with email as the required identifier and name, phone, company, and lifecycle stage as optional. To link the contact to a company record, follow up with HubSpotAssociationCreate.

Parameter Type Default Description
email* string

Contact email address; HubSpot treats it as the unique identifier for a contact.

firstname string

Contact's first name.

lastname string

Contact's last name.

phone string

Phone number.

company string

Company name as free text. Does not link to a company record — use HubSpotAssociationCreate for that.

lifecyclestage string

Funnel position, e.g. subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer.

* Required parameter.

Try asking:

  • Add Jane Doe, [email protected], to HubSpot as a new lead
  • Create a contact for [email protected] with phone +44 20 7946 0958
  • Log the person I just met at the conference as a marketing qualified lead in HubSpot
  • Add a new contact: Priya Raman, [email protected], company Acme Corp, lifecycle stage salesqualifiedlead

HubSpotContactList

Lists contacts in HubSpot a page at a time, with optional property selection. Use it to browse the contact list; use HubSpotSearch when you have a specific name, email, or filter to apply.

Parameter Type Default Description
limit string

Page size (HubSpot caps this at 100 per page).

after string

Pagination cursor returned by the previous page.

properties string

Comma-separated property names to return.

Try asking:

  • List the first 25 contacts in HubSpot
  • Show me contacts with just their name and email
  • Get the next page of contacts
  • Pull 100 contacts including their lifecycle stage

HubSpotContactShow

Retrieves a single contact by its HubSpot ID, with an optional property selection. Use it to get full details on a contact after a search or list has returned their ID.

Parameter Type Default Description
contact_id* string

HubSpot contact ID.

properties string

Comma-separated property names to return. Omit to get HubSpot's default property set.

* Required parameter.

Try asking:

  • Show me contact 12345 in HubSpot
  • Pull the phone number and lifecycle stage for contact 98107
  • What details do we have on this contact record?
  • Get firstname, lastname and email for HubSpot contact 55021

HubSpotContactUpdate

Updates properties on an existing contact, supporting both standard and custom fields. Use it to correct details, advance a lifecycle stage, or record the outcome of a conversation.

Parameter Type Default Description
contact_id* string

HubSpot contact ID to update.

properties_json* string

JSON object of property name/value pairs to write, e.g. {"phone": "+1234", "lifecyclestage": "customer"}.

* Required parameter.

Try asking:

  • Update contact 12345 — new phone number is +1 987 654 3210
  • Move contact 12345 to lifecycle stage customer
  • Fix the last name on HubSpot contact 44190, it should be Nguyen
  • Set the job title on this contact to Head of Procurement

HubSpotDealCreate

Creates a new deal in a HubSpot sales pipeline with a name and optional amount, stage, close date, and owner. Use it when a conversation produces a sales opportunity worth tracking.

Parameter Type Default Description
dealname* string

Deal name / title.

amount string

Deal value.

dealstage string

Pipeline stage ID as configured in the portal, e.g. qualifiedtobuy, closedwon.

pipeline string

Pipeline ID the deal belongs to.

closedate string

Expected close date (YYYY-MM-DD or ISO 8601).

hubspot_owner_id string

HubSpot owner (user) ID to assign the deal to.

* Required parameter.

Try asking:

  • Create a deal called 'Enterprise License - Acme' worth 50000
  • Open a new deal for the Northwind renewal, closing 2026-09-30
  • Log a $25k opportunity in the default pipeline at stage qualifiedtobuy
  • Create a deal and assign it to owner 5512203

HubSpotDealList

Lists deals in HubSpot a page at a time, with optional property selection. Use it to browse the deal list; use HubSpotSearch to filter by stage, amount, date, or other criteria.

Parameter Type Default Description
limit string

Page size (HubSpot caps this at 100 per page).

after string

Pagination cursor returned by the previous page.

properties string

Comma-separated property names to return.

Try asking:

  • List the deals in HubSpot
  • Show me 25 deals with their name, amount, stage and close date
  • Get the next page of deals
  • Give me a quick look at the current deal records

HubSpotDealShow

Retrieves a single deal by its HubSpot ID, with an optional property selection. Use it to get details on a specific opportunity once you have its ID from a search or list.

Parameter Type Default Description
deal_id* string

HubSpot deal ID.

properties string

Comma-separated property names to return. Omit for HubSpot's default set.

* Required parameter.

Try asking:

  • Show me deal 11111
  • What stage and amount is this deal at?
  • Pull the close date and owner for HubSpot deal 90233
  • Get the full property set for the Acme enterprise deal

HubSpotDealUpdate

Updates properties on an existing deal, supporting both standard and custom fields. Use it to advance a deal through the pipeline, revise the amount, push out a close date, or reassign the owner.

Parameter Type Default Description
deal_id* string

HubSpot deal ID to update.

properties_json* string

JSON object of property name/value pairs, e.g. {"dealstage": "closedwon", "amount": "75000"}.

* Required parameter.

Try asking:

  • Move deal 11111 to closedwon
  • Update the amount on this deal to 75000
  • Push the close date on deal 90233 out to the end of next quarter
  • Reassign deal 11111 to owner 5512203

HubSpotNoteCreate

Creates a note in the HubSpot timeline and links it to one or more CRM records in the same call. Use it to log a call summary, meeting outcome, or any narrative that should appear on a contact, company, deal, or ticket.

Parameter Type Default Description
hs_note_body* string

Note body text; HTML is accepted.

hs_timestamp string

ISO 8601 timestamp for the note. Defaults to the current time.

hubspot_owner_id string

HubSpot owner (user) ID to attribute the note to.

associations_json string

JSON array of associations linking the note to records on creation, e.g. [{"to":{"id":12345},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":202}]}].

* Required parameter.

Try asking:

  • Log a note on contact 12345: called about the renewal, budget approved
  • Add a note to this deal summarising today's meeting
  • Write up the support call and attach it to the ticket
  • Record a note against the account with what the customer told us

HubSpotSearch

Searches any CRM object type, including contacts, companies, deals, and tickets, using free text or property filters. Use it for any 'find me the X where Y' request, supporting both simple text searches and precise filter conditions.

Parameter Type Default Description
object_type* string

CRM object type to search, e.g. contacts, companies, deals, tickets, notes.

query string

Free-text query matched across HubSpot's default searchable properties.

filter_json string

JSON array of filter groups for property/operator/value filtering, e.g. [{"filters":[{"propertyName":"email","operator":"EQ","value":"[email protected]"}]}].

properties string

Comma-separated property names to return; split into HubSpot's property array for you.

limit string

Page size (defaults to 10 when not supplied).

after string

Pagination cursor returned by the previous page.

* Required parameter.

Try asking:

  • Find the HubSpot contact with email [email protected]
  • Search deals for anything over 50000 that hasn't closed yet
  • Look up companies with 'northwind' in the name
  • Find all open tickets marked HIGH priority
  • Search contacts for Jane and show me their name, email and phone

HubSpotTicketCreate

Creates a support ticket in HubSpot with a subject line and optional priority, pipeline stage, and owner. Use HubSpotAssociationCreate afterward to link the ticket to the relevant contact or company.

Parameter Type Default Description
subject* string

Ticket subject line.

content string

Ticket description / body.

hs_pipeline string

Service pipeline ID.

hs_pipeline_stage string

Pipeline stage ID.

hs_ticket_priority string

Priority: LOW, MEDIUM or HIGH.

hubspot_owner_id string

HubSpot owner (user) ID to assign the ticket to.

* Required parameter.

Try asking:

  • Open a HubSpot ticket: 'Cannot access dashboard', high priority
  • Raise a support ticket about the 403 error this customer is hitting
  • Create a ticket for the billing discrepancy and assign it to owner 5512203
  • Log a low priority ticket asking for a data export

HubSpotTicketShow

Retrieves a single ticket by its HubSpot ID, with an optional property selection. Use HubSpotSearch to find tickets by criteria such as priority or pipeline stage.

Parameter Type Default Description
ticket_id* string

HubSpot ticket ID.

properties string

Comma-separated property names to return. Omit for HubSpot's default set.

* Required parameter.

Try asking:

  • Show me ticket 55555
  • What priority and stage is this ticket at?
  • Pull the subject and description for HubSpot ticket 55555
  • Read back the ticket the customer just quoted

HubSpotTicketUpdate

Updates properties on an existing ticket, such as priority, pipeline stage, owner, or description. Use it to escalate, reassign, or amend a ticket as an investigation progresses.

Parameter Type Default Description
ticket_id* string

HubSpot ticket ID to update.

properties_json* string

JSON object of property name/value pairs, e.g. {"hs_ticket_priority": "HIGH", "hs_pipeline_stage": "4"}.

* Required parameter.

Try asking:

  • Escalate ticket 55555 to HIGH priority
  • Move this ticket to the resolved stage
  • Reassign ticket 55555 to owner 5512203
  • Update the ticket description with what we found