Integrate HubSpot MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with HubSpot
Updates an existing thread's status. To archive a thread, use the Archive Thread action; to restore an archived thread, use the Unarchive Thread action. HubSpot's PATCH endpoint does not support either operation via a status change. See the documentation
Update a page in Hubspot. See the documentation
Update a lead in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names. Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "hs_lead_name": "Site B Expansion - Priority" }. Returns the updated lead. See the documentation
Update a landing page in HubSpot. See the documentation
Update some of the form definition components. See the documentation
Update a deal in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names. Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "dealstage": "closedwon", "amount": "90000" }. Returns the updated deal. See the documentation
Update a custom object record in HubSpot by id. Set Custom Object Type (the object's fullyQualifiedName, e.g. p_pets) and Object ID, and put the fields to change in Object Properties. Example: Custom Object Type p_pets, Object ID 123, Object Properties { "birthday": "1993-06-12" }. Returns the updated record. See the documentation
Update an existing CRM record by ID. Pass only the properties you want to change — unspecified properties are left unchanged. Use Search CRM Objects to find the record ID, Search Properties to discover available fields, and Get Properties to find valid enum values. See the documentation
Update a contact in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names (only the fields you pass are modified). If you don't have the id, look it up first with Search CRM (by email, or by name). Example: Object ID 123, Object Properties { "jobtitle": "Chief Paleontologist" }. Returns the updated contact. See the documentation
Update a company in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names (only the fields you pass are modified). Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "phone": "555-0100", "industry": "BIOTECHNOLOGY" }. Returns the updated company. See the documentation
Updates an existing blog post in HubSpot. See the documentation
Updates the draft version of an existing blog post in HubSpot. See the documentation
Restores a previously-archived thread, returning it to the active inbox. Sends PATCH with body { archived: false }, the only restore path HubSpot's API supports. The Thread ID dropdown lists archived threads. See the documentation
Sends a message to a thread. See the documentation
Search for property definitions (field names) on a CRM object type. Returns lightweight results: property names, labels, descriptions, and types — without enum options. Use this to discover what fields exist before creating or updating records. To get full details including valid enum values for a specific property, use Get Properties. To search for actual CRM data/records, use Search CRM Objects. For custom object properties, use List Custom Object Properties instead (custom object types are not in the standard type list). See the documentation
Search a CRM object type by a single property. Set Object Type, Search Property (internal name, e.g. email or dealname; use Get Properties / Search Properties to find valid names), and Search Value. With Exact Match off, partial (substring) matches are returned. Results are capped per call — if paging.next is present in the response, call again with Offset advanced to fetch the next page. Example: Object Type deal, Search Property dealname, Search Value InGen Annual Contract. Returns matching records plus paging. For lookups, keep results small with Limit and Fields (return only the properties you need). See the documentation
Search HubSpot CRM records (contacts, companies, deals, tickets, etc.) using text queries or filters. Returns matching records with properties, pagination, and total count. Use the query parameter for simple text search across default searchable fields (contacts: firstname, lastname, email, phone, company; companies: name, website, domain, phone; deals: dealname, pipeline, dealstage, description). Use filterGroups for advanced filtering with operators like EQ, NEQ, LT, GT, CONTAINS_TOKEN, IN, HAS_PROPERTY, etc. You can combine up to 5 filter groups (OR logic) with up to 6 filters each (AND logic within a group). Supports standard object types only (contacts, companies, deals, tickets, etc.). For custom objects, use List Custom Object Schemas to discover available types, then List Custom Objects to list records. See the documentation
Schedules a blog post to be published at a specified time. See the documentation
Retrieve a list of all workflows. See the documentation
Retrieve emails sent by a workflow by ID. See the documentation
Retrieve detailed information about a specific workflow. See the documentation
Fetch one quote by ID or list quotes with CRM v3 pagination (after, limit). Complements Create CRM Object for quotes when you need read access outside Search CRM. See the documentation
Retrieve the IDs of v3 workflows that have been migrated to the v4 API. See the documentation
Pushes a blog post draft live, making it the published version. See the documentation
Retrieves available options for the Pipeline field.
Retrieves a list of threads. See the documentation
Retrieves a list of templates. See the documentation
Retrieves available options for the Template Path field.
List all pipelines and their stages for deals or tickets. Returns pipeline IDs, labels, and each pipeline's ordered stages with stage IDs and labels. Use this to discover valid pipeline and dealstage / hs_pipeline_stage values before creating or updating deals and tickets. See the documentation
Retrieves a list of site pages. See the documentation
List owners (users) in the HubSpot account. Returns owner IDs, names, and emails. Use this to discover valid values for the hubspot_owner_id property when creating or updating any CRM object (contacts, companies, deals, tickets, etc.). See the documentation
Retrieves available options for the Object Schema field.
Retrieves a list of messages in a thread. See the documentation
List meeting scheduling pages for a HubSpot organizer. Returns a single page of results; use Limit to control the page size and check the (of N total) summary to see if more results exist beyond the page returned. See the documentation
Retrieves a list of marketing events. See the documentation
Retrieves a list of marketing emails. See the documentation
Retrieves a list of inboxes. See the documentation
Retrieves a list of forms. See the documentation
Retrieves available options for the Form field.
Retrieves available options for the File URL field.
Retrieves available options for the Pipeline field.
List records of a custom object type with pagination and property selection. HubSpot does NOT support the /search endpoint for custom objects — use this list action to browse records, then use Get Custom Object to fetch full details by ID. Use List Custom Object Schemas first to obtain the correct objectType identifier (fullyQualifiedName or objectTypeId). Use List Custom Object Properties to discover which properties are available to request. See the documentation
Retrieves available options for the Custom Object Type field.
Discover all custom object types defined in the HubSpot account. Returns the objectTypeId, fullyQualifiedName, name, labels (singular/plural), primaryDisplayProperty, and a list of all property names for each schema. Call this first before any other custom object operation to obtain the correct objectType identifier. Standard object types (contacts, companies, deals, tickets) do NOT appear here. See the documentation
List all property definitions for a specific custom object type. Returns each property's name, label, type, fieldType, and enum options (for enumeration fields). Use List Custom Object Schemas first to obtain the correct objectType identifier (either fullyQualifiedName like p_pd_eval_movie or objectTypeId like 2-12345678). Standard object types (contacts, companies, deals, tickets) are not supported here — use Get Properties or Search Properties for those. See the documentation
List CRM v4 associations from a source record to a target object type. Returns associated record IDs and association types for each link. Direction matters: from is the record you are querying from; swap from/to to traverse the relationship the other way. See the documentation
Retrieves a list of channels. See the documentation
Retrieves a list of campaigns. See the documentation
Retrieves a list of blog posts. See the documentation
List association type definitions (labels and type IDs) between two object types in CRM v4. Use the returned typeId values when creating associations with Create Association or Create CRM Object (associations JSON). Order matters: from/to defines the direction of the relationship. See the documentation
List engagements (notes, tasks, calls, meetings, emails, etc.) associated with a CRM record using HubSpot's legacy Engagements v1 paged API. This endpoint is documented for company, deal, and quote; other object types may return errors. Use Offset for pagination when hasMore is true. For newer CRM v3 engagement objects, prefer v4 List CRM Associations from the record to notes, tasks, calls, etc. See the documentation
Get details about the current authenticated HubSpot user, including their owner ID, email, hub ID, and account info. Use this to determine the user's identity — the ownerId is needed to filter CRM records owned by the current user (e.g. 'my deals' requires filtering by hubspot_owner_id). Also returns available CRM object types for the account. See the documentation
Retrieves a single thread's metadata, including status, assignee, associations, and latest-message info. See the documentation
Retrieves the subscription preferences for a contact. See the documentation
Retrieve a contact's sequence enrollment status. See the documentation
Get detailed property definitions for specific properties on a CRM object type. Returns full metadata including data types, enum options with valid values, referenced object types, and read-only status. Use this after Search Properties to get valid values for specific fields (e.g. enum options for dealstage or hs_pipeline). Property details can be large — fetch only the properties you need rather than all of them. For custom object properties, use List Custom Object Properties instead (custom object types are not in the standard type list). See the documentation
Get a single HubSpot owner (user) by ID. Provide an owner ID or use List Owners to fetch IDs. See the documentation
Get a single meeting engagement from HubSpot by its id, with a default set of meeting properties. Add Additional properties to retrieve to include more. Example: Object ID 123. Returns the meeting record (title, body, start/end time). See the documentation
Retrieve the booking configuration and availability for a meeting scheduling page. Returns link metadata, availability windows by duration, busy times, branding, and organizer details. See the documentation
Fetch the upcoming availability windows (and busy times) for a meeting scheduling page. Use this when you only need the open slots; use Get Meeting Link Booking Info for the full booking configuration. See the documentation
Retrieves a single inbox by its ID. See the documentation
Get a publicly available URL for a file that was uploaded using a Hubspot form. See the documentation
Retrieves one or more engagements by their IDs. Use this action to fetch details about multiple engagements, such as their types, timestamps, and associated CRM objects. Requires engagement IDs, which you can obtain from the List CRM Objects action. See the documentation
Get a single deal from HubSpot by its id, with a default set of deal properties. Add Additional properties to retrieve to include more (use Get Properties for deals). Example: Object ID 123, Additional properties ["amount", "dealstage"]. Returns the deal record. See the documentation
Fetch one or more custom object records by ID in a single request. Use List Custom Objects first to browse records and find the IDs you need, then use this tool to retrieve full property details. Use List Custom Object Schemas to get the correct objectType identifier. Max 100 IDs per request. See the documentation
Fetch one or more CRM objects by their IDs in a single request. Returns the requested properties for each object. Use Search CRM Objects first to find record IDs, then use this tool to fetch full details. Max 100 IDs per request. Supports standard object types only. For custom objects, use Get Custom Object instead. See the documentation
Get a single contact from HubSpot by its id, with a default set of contact properties. Add Additional properties to retrieve to include more (use Get Properties for contacts). Look up the id with Search CRM by email if you only have an address. Example: Object ID 123, Additional properties ["jobtitle"]. Returns the contact record. See the documentation
Get a single company from HubSpot by its id, with a default set of company properties. Add Additional properties to retrieve (internal names; use Get Properties for companies) to include more. Example: Object ID 123, Additional properties ["industry", "numberofemployees"]. Returns the company record. See the documentation
Retrieves a single channel by its ID. See the documentation
Retrieves the draft version of a blog post. See the documentation
List meetings associated with a contact, company, or deal in HubSpot. Set From Object Type and Object ID (for contacts you may pass an email instead of the numeric id). Optionally narrow with Timeframe (today, this_week, this_month, last_month, or custom with Start/End Date), or set Most Recent to return only the latest meeting. Returns up to 100 meetings with default meeting properties. Example: From Object Type contacts, Object ID ada@example.com, Timeframe this_month. See the documentation
Retrieves emails associated with a specific object (contact, company, or deal). See the documentation
Resolves an actor ID (e.g. the value returned by a message's senders[].actorId field) to its name, email, and type. See the documentation
Add a contact to a workflow. Note: The Workflows API currently only supports contact-based workflows and is only available for Marketing Hub Enterprise accounts. See the documentation
Enroll a contact into a HubSpot sequence. See the documentation
Delete a workflow by ID. See the documentation
Create a new workflow. See the documentation
Create a support ticket in HubSpot. Set Ticket Name, Pipeline, and Pipeline Stage (use List Pipelines and Stages for tickets to get valid ids), and put extra fields in Object Properties. Example: subject Login broken, hs_pipeline 0, hs_pipeline_stage 1, Object Properties { "hs_ticket_priority": "HIGH" }. Returns the created ticket with its id. See the documentation
Create a task engagement in HubSpot. Put task fields in Object Properties as HubSpot internal names (hs_task_subject, hs_task_body, hs_task_status, hs_task_priority); hs_timestamp is defaulted for you. Optionally associate it with a record via Associated Object Type/ID + Association Type. Example: Object Properties { "hs_task_subject": "Call Art Vandelay", "hs_task_status": "NOT_STARTED", "hs_task_priority": "HIGH" }. Returns the created task with its id. See the documentation
Create a page in HubSpot. See the documentation
Create a contact in HubSpot, or update it when one with the same email already exists (enable Update If Exists). Put contact fields in Object Properties as HubSpot internal names. Example: Object Properties { "email": "ada@example.com", "firstname": "Ada", "jobtitle": "CTO" }. Returns the created or updated contact with its id. See the documentation
Create a HubSpot CRM note. Put the note text in Object Properties as hs_note_body (e.g. { "hs_note_body": "Reviewed the Q3 numbers" }). For only a contact ID + note body, Add Note to Contact is simpler. To associate the note with another record, supply toObjectType, toObjectId, and associationType together. See the documentation
Create a meeting engagement in HubSpot. Put meeting fields in Object Properties (hs_meeting_title, hs_meeting_body, hs_meeting_start_time, hs_meeting_end_time as ISO-8601); hs_timestamp defaults to the start time. Set Associated Object Type and optionally link a record via Associated Object ID + Association Type. Example: Object Properties { "hs_meeting_title": "Kickoff", "hs_meeting_start_time": "2026-08-27T14:00:00Z", "hs_meeting_end_time": "2026-08-27T15:00:00Z" }. Returns the created meeting with its id. See the documentation
Create a lead in HubSpot associated with an existing contact. Set Contact ID (the contact to link) and put lead fields in Object Properties as HubSpot internal names. Example: Contact ID 12345, Object Properties { "hs_lead_name": "Isla Nublar Opportunity" }. Returns the created lead with its id. See the documentation
Create a landing page in Hubspot. See the documentation
Create a form in HubSpot. See the documentation
Create a task, meeting, email, call, or note engagement with optional associations. If the request does not make the engagement type clear, ask which type (note, task, meeting, email, or call) before creating rather than guessing. Set Engagement Type and pass engagement fields in Object Properties (HubSpot property names, e.g. hs_note_body for notes). No reloadProps step and no CONFIGURE_COMPONENT requirement: association fields accept raw HubSpot IDs (use Search CRM or the Associations API to resolve associationType when needed). For only a note on a contact by ID, Add Note to Contact (hubspot-add-note-to-contact) is still simpler. See the documentation
Create a marketing email in Hubspot. See the documentation
Create a deal in HubSpot. Set Deal Name, Pipeline, and Stage, and put any extra fields in Object Properties as HubSpot internal names. Example: Deal Name InGen Annual Contract, Pipeline default, Stage appointmentscheduled, Object Properties { "amount": "250000", "closedate": "2026-09-23" }. Returns the created deal with its id. See the documentation
Create a custom object record in HubSpot. Set Custom Object Type to the object's fullyQualifiedName (e.g. p_pets; use List Custom Object Schemas to find it) and put fields in Object Properties. Example: Custom Object Type p_pets, Object Properties { "pet_name": "Rexy" }. Returns the created record with its id. See the documentation
Create a new CRM record (contact, company, deal, ticket, etc.). Pass property values as a JSON object in the properties parameter. Use Search Properties to discover available fields for the object type, Get Properties to find valid enum values (e.g. lifecyclestage, dealstage), and List Pipelines and Stages to find valid pipeline/stage IDs for deals and tickets. Use List Owners to find valid hubspot_owner_id values. See the documentation
Create a contact workflow in Hubspot. See the documentation
Create a company in HubSpot. Put the company fields in Object Properties as a JSON object of HubSpot internal property names (use Get Properties for companies to discover them). Example: { "name": "InGen", "domain": "ingen.com", "industry": "BIOTECHNOLOGY" }. Returns the created company with its id. See the documentation
Log a WhatsApp, LinkedIn, or SMS communication in HubSpot. Put the message fields in Object Properties (hs_communication_channel_type = SMS | WHATS_APP | LINKEDIN_MESSAGE, hs_communication_body); hs_communication_logged_from and hs_timestamp are set for you. Optionally associate it with a record via Associated Object Type/ID + Association Type. Example: Object Properties { "hs_communication_channel_type": "SMS", "hs_communication_body": "Reminder: call at 9am" }. Returns the created communication with its id. See the documentation
Creates a new blog post in HubSpot. See the documentation
Create associations between objects. See the documentation
Create an association (link) between two CRM records. For example, associate a contact with a company, a deal with a contact, or a ticket with a company. Common association type IDs: contact→company (1), company→contact (2), deal→contact (3), contact→deal (4), deal→company (5), company→deal (6), ticket→contact (15), contact→ticket (16), ticket→company (26), company→ticket (25). See the documentation
Clone a site page in Hubspot. See the documentation
Clone a marketing email in HubSpot. See the documentation
Book a meeting on a HubSpot meeting scheduling page. Creates a calendar event for the organizer and registers the booker as a contact. See the documentation
Upsert a batch of companies in Hubspot. See the documentation
Update a batch of companies in Hubspot. See the documentation
Create or update a batch of contacts by its ID or email. See the documentation
Create a batch of companies in Hubspot. See the documentation
Archives a thread (soft delete). The thread is hidden from active views but can be restored via the HubSpot UI or by listing archived threads. See the documentation
MCP and AI agents: Prefer this action when the user wants to leave a note on a HubSpot contact using a contact ID and note text. Exposes only hubspot, contactId, and noteBody (no engagement-type step, no reloadProps, no dynamic HubSpot schema fields). Do not use Create Engagement for this workflow. For every writable note property or non-contact associations, use Create Note instead. See the documentation
Adds a contact to a specific static list. See the documentation
Adds a comment to a thread. See the documentation