Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

HubSpot

NPM · @MINDSTONE/MCP-SERVER-HUBSPOT · SCANNED SEP 20

HubSpot CRM: contacts, deals, tickets, line items, properties, marketing, files, workflows, threads

0 this week 91 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 35 of 100 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency87
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to mindstone/mcp-servers). View diagnostics → Pass
  • License check failed: the license (FSL-1.1-MIT) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 42 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 16957 tokens (~159/item across 106 items; 106 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 98% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 106 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the HubSpot MCP server?

HubSpot runs locally as an npm package, launched with npx -y @mindstone/mcp-server-hubspot. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @mindstone/mcp-server-hubspot

# add to Claude Code
claude mcp add mindstone-mcp-server-hubspot -- npx -y @mindstone/mcp-server-hubspot
// .cursor/mcp.json
{
  "mcpServers": {
    "mindstone-mcp-server-hubspot": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-hubspot"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mindstone-mcp-server-hubspot": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-hubspot"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add mindstone-mcp-server-hubspot -- npx -y @mindstone/mcp-server-hubspot
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mindstone-mcp-server-hubspot": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mindstone/mcp-server-hubspot"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mindstone-mcp-server-hubspot --command npx --arg -y --arg @mindstone/mcp-server-hubspot
# ~/.hermes/config.yaml
mcp_servers:
  mindstone-mcp-server-hubspot:
    command: "npx"
    args: ["-y", "@mindstone/mcp-server-hubspot"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mindstone-mcp-server-hubspot": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@mindstone/mcp-server-hubspot"
      ]
    }
  }
}
# add to Vellum
assistant mcp add mindstone-mcp-server-hubspot -t stdio -c npx -a -y @mindstone/mcp-server-hubspot
// mcp.json
{
  "mcpServers": {
    "mindstone-mcp-server-hubspot": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-hubspot"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 14 Sept 26 0
    • Stability: 0.97 → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@mindstone/mcp-server-hubspot@0.4.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo mindstone/mcp-servers
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/mindstone/mcp-servers/.github/workflows/release.yml@refs/heads/main
Rekor log index 2384223791
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:012779a29330a75784191dd4ebed0c9664311bffa98d2d16b0f221890573cbdb78e513c1643df7f79b86461de6fdf3bed7dfdce8980ff40a7189fd849

Background: How many MCP packages publish verified provenance →

Dependencies 100 packages
Packages resolved 100
Stale 35
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 106 exposed · ~16,957 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
activate_hubspot_workflow ~34

Activate a workflow (sets isEnabled to true).

NameTypeReqDescription
flowIdstringyesWorkflow ID to activate

No output schema declared.

No examples provided.

add_hubspot_list_members ~216

Add records to a HubSpot list/segment. USE THIS WHEN: - User asks "add these contacts to the Q3 webinar list" or "put this deal on the nurture list" WORKFLOW: 1. list_hubspot_lists → find the listId 2. search_hubspot_contacts (or another search tool) → find the record IDs 3. add_hubspot_list_members with both IMPORTANT: only MANUAL and SNAPSHOT lists accept membership changes. DYNAMIC lists compute membership from their filter criteria — HubSpot rejects the write; edit the list's filters (in the HubSpot UI) instead. REQUIRES the crm.lists.write OAuth scope. On a 403 the account's plan, the signed-in user's permissions, or the connected app's scopes are the likely cause.

NameTypeReqDescription
listIdstringyesThe list ID (from list_hubspot_lists)
recordIdsarrayyesRecord IDs to add (max 100 per call)

No output schema declared.

No examples provided.

attach_file_to_record ~219

Upload a file and attach it to a CRM record in one step. This is a convenience tool that combines: 1. Uploading a file to HubSpot's file manager 2. Creating a note with the file attached 3. Associating the note with the specified record(s) USE THIS WHEN: - User says "attach this file to [contact/deal/company]" - Adding a document, proposal, or contract to a record - Uploading meeting notes or attachments to a contact ACCEPTS EITHER: - filePath: Local file path to upload - fileUrl: Public URL to import RETURNS: { fileId, noteId, fileName, associations }

NameTypeReqDescription
associationsobjectyesRecords to attach the file to (at least one required)
filePathstringLocal file path to upload (use this OR fileUrl)
fileUrlstringPublic URL to import (use this OR filePath)
noteBodystringOptional note text to accompany the attachment

No output schema declared.

No examples provided.

authenticate_hubspot_account ~224

Connect a new HubSpot account or re-authenticate an existing one. This tool initiates the OAuth flow to connect a HubSpot account: 1. Returns an authorization URL that the user must click 2. User signs into HubSpot and grants permissions 3. Authentication completes automatically via callback WHEN TO USE: - When list_hubspot_accounts shows no connected accounts - When an account shows status "expired" or "error" - When user explicitly asks to connect/reconnect HubSpot WHEN NOT TO USE: - If list_hubspot_accounts shows a valid, active account - Without checking list_hubspot_accounts first (wastes user time) After calling this tool: 1. Present the auth_url to the user as a clickable link 2. Tell them to click it and authorize in their browser 3. Call complete_hubspot_auth to wait for completion 4. Or if auto_complete is enabled, it will complete automatically

NameTypeReqDescription
emailstringOptional: Email hint for the account being connected (for display purposes)

No output schema declared.

No examples provided.

batch_read_hubspot_contacts ~172

Fetch multiple contacts by ID in a single request (up to 100). USE THIS TO: Hydrate contact IDs from list_hubspot_list_members into full records. WORKFLOW: 1. list_hubspot_list_members(listId) → get recordIds 2. batch_read_hubspot_contacts(ids, ['email', 'firstname', 'lastname']) → get details RETURNS: {results: [{id, properties: {email, firstname, ...}, createdAt, updatedAt}]} Common properties: email, firstname, lastname, phone, company, jobtitle, lifecyclestage

NameTypeReqDescription
idsarrayyesContact IDs to fetch (max 100)
propertiesarrayProperties to return (e.g., ["email", "firstname", "lastname"])

No output schema declared.

No examples provided.

complete_hubspot_auth ~132

Wait for HubSpot OAuth authorization to complete. Call this AFTER authenticate_hubspot_account has returned an auth_url and the user has clicked it. This tool: 1. Waits for the OAuth callback (up to 2 minutes) 2. Exchanges the authorization code for access tokens 3. Saves the account credentials 4. Returns success with the connected email IMPORTANT: Only call this if auto_complete was false in authenticate_hubspot_account response. If auto_complete was true, authentication completes automatically and you don't need this tool.

NameTypeReqDescription
emailstringEmail address of the account being authenticated

No output schema declared.

No examples provided.

create_hubspot_association ~220

Create an unlabeled association between two HubSpot objects (v3 API). For labeled associations (e.g., "Primary Contact", "Contract Signatory", "Decision Maker"), use create_hubspot_labeled_association instead. Common association types: - contact_to_company - deal_to_contact - deal_to_company - ticket_to_contact - line_item_to_deal

NameTypeReqDescription
associationTypestringyesAssociation type (e.g., contact_to_company, line_item_to_deal)
fromObjectIdstringyes
fromObjectTypestringyesSource object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.
toObjectIdstringyes
toObjectTypestringyesTarget object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.

No output schema declared.

No examples provided.

create_hubspot_call ~265

Log a call in HubSpot CRM. USE THIS WHEN: - User says "log a call" or "record that I called [contact]" - Documenting a phone conversation - Adding call notes after a conversation REQUIRED: hs_timestamp (Unix timestamp in milliseconds) COMMON PROPERTIES: - hs_timestamp: when call occurred (REQUIRED, Unix ms, e.g., Date.now()) - hs_call_title: brief description - hs_call_body: notes, transcript, or summary - hs_call_direction: "INBOUND" or "OUTBOUND" - hs_call_status: "COMPLETED", "BUSY", "NO_ANSWER", "FAILED" - hs_call_duration: call length in milliseconds - hubspot_owner_id: who made the call ASSOCIATIONS (link call to records): - contactIds: ["contact_id_1", "contact_id_2"] - companyIds: ["company_id"] - dealIds: ["deal_id"] WORKFLOW: 1. search_hubspot_contacts to get contact ID 2. create_hubspot_call with associations.contactIds RETURNS: Created call with id

NameTypeReqDescription
associationsobjectLink call to CRM records
propertiesobjectyesCall properties object

No output schema declared.

No examples provided.

create_hubspot_company ~241

Create a new company in HubSpot CRM. USE THIS WHEN: - User says "add company" or "create account for [organization]" - Company doesn't exist (verify with search first!) REQUIRED: name COMMON PROPERTIES: - name (company name) - domain (website domain, used for deduplication) - industry (e.g., "COMPUTER_SOFTWARE", "FINANCIAL_SERVICES") - numberofemployees, annualrevenue - phone, address, city, state, zip, country - hubspot_owner_id: assign to team member (RECOMMENDED — get IDs from list_hubspot_owners) COMMON MISTAKES: - NOT specifying hubspot_owner_id — if omitted, the company may be assigned to the HubSpot integration account used by your host, not the intended owner. Use list_hubspot_owners to find the correct owner ID. - If list_hubspot_owners returns empty (e.g., free accounts), you may proceed without hubspot_owner_id. RETURNS: Created company with id and properties

NameTypeReqDescription
propertiesobjectyesCompany properties object

No output schema declared.

No examples provided.

create_hubspot_contact ~273

Create a new contact in HubSpot CRM. USE THIS WHEN: - User says "add contact" or "create contact for [person]" - Logging a new lead or prospect - Contact doesn't exist (verify with search first!) REQUIRED: email (strongly recommended - used for deduplication) NOTE: The server automatically sets hs_object_source_detail_2 for source attribution. COMMON PROPERTIES: - email, firstname, lastname - phone, mobilephone - company, jobtitle - address, city, state, zip, country - lifecyclestage: "lead", "marketingqualifiedlead", "salesqualifiedlead", "opportunity", "customer" - hubspot_owner_id: assign to a team member (RECOMMENDED — get IDs from list_hubspot_owners) COMMON MISTAKES: - NOT specifying hubspot_owner_id — if omitted, the contact may be assigned to the HubSpot integration account used by your host, not the intended owner. Use list_hubspot_owners to find the correct owner ID. - If list_hubspot_owners returns empty (e.g., free accounts), you may proceed without hubspot_owner_id. RETURNS: Created contact with id and properties

NameTypeReqDescription
propertiesobjectyesContact properties object

No output schema declared.

No examples provided.

create_hubspot_deal ~499

Create a new deal/opportunity in HubSpot CRM. USE THIS WHEN: - User says "create deal" or "add opportunity" - Logging a new sales opportunity REQUIRED: dealname, hubspot_owner_id IMPORTANT: Use list_hubspot_pipelines first to get valid pipeline and dealstage IDs! FALLBACK FIELDS (set by the server only if not provided): - hubspot_owner_id: FALLBACK ONLY — if not provided via the top-level parameter, falls back to the HubSpot integration account used by your host. This is usually the WRONG person on team accounts. - hs_object_source_detail_2: records that this deal was created via your MCP host COMMON PROPERTIES (inside the properties object): - dealname (deal/opportunity name) - amount (deal value as string, e.g., "10000") - pipeline (pipeline ID from list_hubspot_pipelines, e.g., "default") - dealstage (stage ID from list_hubspot_pipelines, e.g., "qualifiedtobuy") - closedate (expected close date, format: "YYYY-MM-DD") WORKFLOW: 1. list_hubspot_pipelines to get pipeline/stage IDs 2. list_hubspot_owners to find the correct deal owner 3. create_hubspot_deal with valid pipeline/stage IDs AND hubspot_owner_id 4. create_hubspot_association to link to contact/company COMMON MISTAKES: - Using this tool when the user says "lead" or "create a lead" — leads are a separate HubSpot object type. Use create_hubspot_lead instead. - NOT specifying hubspot_owner_id — if omitted, the deal is silently assigned to the HubSpot integration account used by your host, NOT the intended deal owner. This causes incorrect assignment notifications and pipeline confusion. ALWAYS call list_hubspot_owners to find the correct owner ID. - Using display names instead of IDs for pipeline/dealstage — always use list_hubspot_pipelines to get valid IDs first. RETURNS: Created deal with id and properties

NameTypeReqDescription
hubspot_owner_idstringyesOwner ID for the deal (REQUIRED — get from list_hubspot_owners). If omitted, falls back to the integration account which is usually wrong for team accounts.
propertiesobjectyesDeal properties object

No output schema declared.

No examples provided.

create_hubspot_labeled_association ~246

Create a labeled association between two records using the v4 API. Unlike create_hubspot_association (v3, unlabeled), this creates associations WITH labels like "Primary Contact", "Contract Signatory", "Decision Maker", etc. WORKFLOW: 1. Call list_hubspot_association_labels to discover available labels and their typeIds 2. Call this tool with the desired associationCategory and associationTypeId associationCategory: - "HUBSPOT_DEFINED": Built-in labels (e.g., Primary Contact, typeId varies by object pair) - "USER_DEFINED": Custom labels created in HubSpot Settings → Objects → Associations

NameTypeReqDescription
associationCategorystringyesLabel category (from list_hubspot_association_labels)
associationTypeIdnumberyesLabel type ID (from list_hubspot_association_labels)
fromObjectIdstringyesSource record ID
fromObjectTypestringyesSource object type (e.g., "contacts")
toObjectIdstringyesTarget record ID
toObjectTypestringyesTarget object type (e.g., "deals")

No output schema declared.

No examples provided.

create_hubspot_lead ~294

Create a new lead in HubSpot CRM. NOTE: Requires Sales Hub Professional or Enterprise. IMPORTANT: This tool creates a HubSpot Lead object (pipeline/stage tracking in Sales Hub). DO NOT use create_hubspot_deal when the user says "lead" — deals and leads are separate HubSpot object types. REQUIRED: - properties.hs_lead_name (the lead's display name) - contactId (leads MUST be associated with a contact at creation — HubSpot API requirement) The contactId is used to create a LEAD_TO_PRIMARY_CONTACT association automatically. COMMON PROPERTIES: - hs_lead_name (required — lead display name) - hs_lead_status: "NEW", "OPEN", "IN_PROGRESS", "CONNECTED", "ATTEMPTED_TO_CONTACT" - hubspot_owner_id: assign to a team member (get IDs from list_hubspot_owners) WORKFLOW: 1. search_hubspot_contacts to find/create the contact 2. create_hubspot_lead with contactId and properties 3. Optionally create_hubspot_association to link to a company or deal RETURNS: Created lead with id and properties

NameTypeReqDescription
contactIdstringyesHubSpot contact ID to associate with this lead (required — leads must be linked to a contact)
propertiesobjectyesLead properties object (hs_lead_name required)

No output schema declared.

No examples provided.

create_hubspot_line_item ~256

Create a line item and optionally associate with a deal. Line items link products to deals for revenue tracking. This is the KEY tool for adding products to a deal. WORKFLOW: 1. search_hubspot_products to find product ID 2. search_hubspot_deals to find deal ID 3. create_hubspot_line_item with dealId association REQUIRED PROPERTIES: - name: Line item name - quantity: Number of units (string, e.g. "1") - price: Unit price (string, e.g. "1000.00") OPTIONAL: - hs_product_id: Link to product catalog - hs_discount_percentage: Discount to apply - dealId: Associate immediately with deal EXAMPLE: { "properties": { "name": "Enterprise License - Annual", "quantity": "2", "price": "10000", "hs_product_id": "123456" }, "dealId": "789" } RETURNS: Created line item with id

NameTypeReqDescription
dealIdstringDeal ID to associate (recommended)
propertiesobjectyesLine item properties (name, quantity, price required)

No output schema declared.

No examples provided.

create_hubspot_meeting ~290

Log a meeting in HubSpot CRM. USE THIS WHEN: - User says "log a meeting" or "record meeting with [contact]" - Documenting a completed meeting - Scheduling a future meeting in CRM REQUIRED: - hs_timestamp (Unix ms) - hs_meeting_start_time (Unix ms) - hs_meeting_end_time (Unix ms) COMMON PROPERTIES: - hs_timestamp: when meeting was logged (Unix ms) - hs_meeting_start_time: meeting start (Unix ms) - hs_meeting_end_time: meeting end (Unix ms) - hs_meeting_title: meeting subject - hs_meeting_body: notes, agenda, or action items - hs_meeting_outcome: "SCHEDULED", "COMPLETED", "RESCHEDULED", "NO_SHOW", "CANCELLED" - hs_meeting_location: location or video link - hubspot_owner_id: meeting organizer ASSOCIATIONS (link meeting to records): - contactIds: attendee contact IDs - companyIds: company IDs - dealIds: related deal IDs WORKFLOW: 1. search_hubspot_contacts to get attendee contact IDs 2. create_hubspot_meeting with associations RETURNS: Created meeting with id

NameTypeReqDescription
associationsobjectLink meeting to CRM records
propertiesobjectyesMeeting properties object

No output schema declared.

No examples provided.

create_hubspot_note ~185

Create a note in HubSpot and optionally associate it with records. Properties: - hs_note_body (required) - The note content (supports HTML) - hs_timestamp - When the note was created (ISO8601 or Unix ms) - hs_attachment_ids - Semicolon-separated file IDs to attach (e.g., "123" or "123;456") Get file IDs from upload_hubspot_file or import_hubspot_file_from_url. TO ATTACH FILES TO A RECORD: 1. Upload file with upload_hubspot_file → get file id 2. Create note with hs_attachment_ids: "<file_id>" and associations to the record Or use the convenience tool attach_file_to_record for a one-step workflow.

NameTypeReqDescription
associationsobjectAssociate note with records
propertiesobjectyesNote properties (hs_note_body required)

No output schema declared.

No examples provided.

create_hubspot_object ~128

Create a record of ANY HubSpot object type, including custom objects. Use list_hubspot_properties with the same objectType first to discover the object's properties and their expected values. To link the new record to other records, follow up with create_hubspot_association (or create_hubspot_labeled_association). REQUIRES the crm.objects.custom.write OAuth scope for custom object types.

NameTypeReqDescription
objectTypestringyesObject type name (e.g. "p_widgets", "2-1234567")
propertiesobjectyesRecord properties

No output schema declared.

No examples provided.

create_hubspot_product ~122

Create a new product in the product catalog. USE THIS WHEN: - Adding new products to sell - Setting up product catalog REQUIRED: name RECOMMENDED: price, hs_sku, description EXAMPLE: { "properties": { "name": "Enterprise License", "price": "10000", "hs_sku": "ENT-001", "description": "Annual enterprise license" } } RETURNS: Created product with id

NameTypeReqDescription
propertiesobjectyesProduct properties (name required)

No output schema declared.

No examples provided.

create_hubspot_property ~221

Create a new custom property on a HubSpot object. VALID TYPE/FIELDTYPE COMBINATIONS: - string: text, textarea, phonenumber, html - number: number - date: date - datetime: date - enumeration: select, radio, checkbox, booleancheckbox - bool: booleancheckbox

NameTypeReqDescription
descriptionstringOptional property description
fieldTypestringyesHubSpot field type
groupNamestringyesProperty group internal name (use list_hubspot_property_groups to discover)
labelstringyesDisplay label shown in HubSpot UI
namestringyesInternal property name (lowercase, no spaces, underscores allowed)
objectTypestringyesObject type (e.g., "contacts", "companies", "deals", "tickets", "tasks", "leads", or a custom object type ID like "2-12345")
optionsarrayOptions for enumeration properties
typestringyesProperty data type

No output schema declared.

No examples provided.

create_hubspot_property_group ~105

Create a new property group for an object type

NameTypeReqDescription
displayOrdernumberDisplay order for the group (optional)
labelstringyesDisplay label for the group
namestringyesInternal group name
objectTypestringyesObject type (e.g., "contacts", "companies", "deals", "tickets", "tasks", "leads", or a custom object type ID like "2-12345")

No output schema declared.

No examples provided.

create_hubspot_task ~92

Create a new task in HubSpot. Common properties: - hs_task_subject (required) - hs_task_body - hs_timestamp (due date in ms) - hs_task_status (NOT_STARTED, IN_PROGRESS, COMPLETED) - hs_task_priority (LOW, MEDIUM, HIGH) - hubspot_owner_id

NameTypeReqDescription
propertiesobjectyesTask properties

No output schema declared.

No examples provided.

create_hubspot_ticket ~60

Create a new ticket in HubSpot. Common properties: - subject (required) - content - hs_pipeline - hs_pipeline_stage - hs_ticket_priority

NameTypeReqDescription
propertiesobjectyesTicket properties

No output schema declared.

No examples provided.

create_hubspot_workflow ~175

Create a new HubSpot workflow. ⚠️ BETA API — this uses the v4 Automation API. Endpoint behavior may change. WORKFLOW TYPES: - CONTACT_FLOW: Triggered by contact enrollment - COMPANY_FLOW: Triggered by company enrollment - DEAL_FLOW: Triggered by deal enrollment - TICKET_FLOW: Triggered by ticket enrollment EXAMPLE minimal workflow: { "name": "New Lead Notification", "type": "CONTACT_FLOW" } To add actions and enrollment criteria, use the fields from get_hubspot_workflow as a reference for the expected structure.

NameTypeReqDescription
actionsarrayOptional workflow actions graph
enrollmentCriteriaobjectOptional enrollment criteria configuration
namestringyesWorkflow name
typestringyesWorkflow type

No output schema declared.

No examples provided.

deactivate_hubspot_workflow ~35

Deactivate a workflow (sets isEnabled to false).

NameTypeReqDescription
flowIdstringyesWorkflow ID to deactivate

No output schema declared.

No examples provided.

delete_hubspot_association ~135

Remove an association between two objects

NameTypeReqDescription
associationTypestringyes
fromObjectIdstringyes
fromObjectTypestringyesSource object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.
toObjectIdstringyes
toObjectTypestringyesTarget object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.

No output schema declared.

No examples provided.

delete_hubspot_company ~63

Permanently delete a company from HubSpot. WARNING: This is permanent and may affect associated contacts and deals. PREREQUISITE: Get companyId from search_hubspot_companies first

NameTypeReqDescription
companyIdstringyesHubSpot company ID

No output schema declared.

No examples provided.

delete_hubspot_contact ~84

Permanently delete a contact from HubSpot. USE THIS WHEN: - User explicitly asks to delete/remove a contact - Cleaning up duplicate or test records WARNING: This is permanent. Associated engagements may be orphaned. PREREQUISITE: Get contactId from search_hubspot_contacts first

NameTypeReqDescription
contactIdstringyesHubSpot contact ID

No output schema declared.

No examples provided.

delete_hubspot_deal ~65

Permanently delete a deal from HubSpot. WARNING: This is permanent. Deal history and associations will be lost. PREREQUISITE: Get dealId from search_hubspot_deals first

NameTypeReqDescription
dealIdstringyesHubSpot deal ID

No output schema declared.

No examples provided.

delete_hubspot_file ~61

Delete a file from HubSpot's file manager. WARNING: This marks the file as deleted and makes its content inaccessible. Notes that reference this file will no longer display the attachment.

NameTypeReqDescription
fileIdstringyesHubSpot file ID to delete

No output schema declared.

No examples provided.

delete_hubspot_lead ~73

Permanently delete a lead from HubSpot. NOTE: Requires Sales Hub Professional or Enterprise. WARNING: This is permanent. The lead record will be removed. PREREQUISITE: Get leadId from search_hubspot_leads first

NameTypeReqDescription
leadIdstringyesHubSpot lead ID

No output schema declared.

No examples provided.

delete_hubspot_note ~53

Permanently delete (archive) a note by ID. This cannot be undone from the CRM UI recycle bin for engagements — confirm with the user first.

NameTypeReqDescription
noteIdstringyesHubSpot note ID

No output schema declared.

No examples provided.

delete_hubspot_property ~88

Archive a property from HubSpot. This ARCHIVES the property (not a hard delete).

NameTypeReqDescription
objectTypestringyesObject type (e.g., "contacts", "companies", "deals", "tickets", "tasks", "leads", or a custom object type ID like "2-12345")
propertyNamestringyesInternal property name to archive

No output schema declared.

No examples provided.

delete_hubspot_task ~30

Delete a task from HubSpot

NameTypeReqDescription
taskIdstringyesHubSpot task ID

No output schema declared.

No examples provided.

delete_hubspot_ticket ~30

Delete a ticket from HubSpot

NameTypeReqDescription
ticketIdstringyesHubSpot ticket ID

No output schema declared.

No examples provided.

delete_hubspot_workflow ~66

Permanently delete a workflow. WARNING: This is irreversible. The workflow and its history are removed. Set confirm=true to acknowledge permanent deletion.

NameTypeReqDescription
confirmbooleanyesMust be true to confirm permanent deletion
flowIdstringyesWorkflow ID to delete

No output schema declared.

No examples provided.

enrol_in_hubspot_workflow ~129

Enrol specific records into a workflow. Uses the v4 BETA enrollment endpoint. A 403 means the connection can't access workflows (most often plan or user permissions, less commonly app authorisation) — reconnecting alone won't fix it; resolve the cause, then reconnect. A 404 may mean your portal requires the v3 enrollment endpoint.

NameTypeReqDescription
flowIdstringyesWorkflow ID to enrol into
objectIdsarrayyesRecord IDs to enrol
objectTypestringEnrollment object type path segment (default: contacts)

No output schema declared.

No examples provided.

get_contact_engagements ~178

Get all recent activity (calls, meetings) for a contact. USE THIS WHEN: - User asks "what's the history with [contact]?" or "show activity for [person]" - Preparing for a meeting and need relationship context - Need a quick activity summary RETURNS: Object with arrays for each engagement type: { calls: [{id, properties}], meetings: [{id, properties}] } This is a convenience tool that fetches multiple engagement types in one call. For more control, use search_hubspot_calls or search_hubspot_meetings directly. PREREQUISITE: Get contactId from search_hubspot_contacts first

NameTypeReqDescription
contactIdstringyesHubSpot contact ID (numeric string)
limitnumberMax results per engagement type (default 5)

No output schema declared.

No examples provided.

get_hubspot_analytics_report ~313

Get website traffic analytics report. This is the ONLY reporting API available from HubSpot. HubSpot does not have a public API for creating, listing, or managing custom reports or dashboards. For custom report needs, users must use the HubSpot UI directly. ⚠️ REQUIRES Marketing Hub Professional or Enterprise. Will return 403 error on free accounts. BREAKDOWN OPTIONS: - totals: Overall traffic metrics - sessions: Session-based metrics - sources: Traffic by source (organic, direct, etc.) - geolocation: Traffic by country/region - utm-campaigns: By UTM campaign - utm-sources: By UTM source - utm-mediums: By UTM medium - pages: By page URL TIME PERIODS: - totals: Aggregate for date range - daily: Day-by-day breakdown - weekly: Week-by-week - monthly: Month-by-month DATE FORMAT: YYYYMMDD (e.g., "20260101") RETURNS: { totals: {views, visits, leads, ...}, breakdowns: [{breakdown: "...", metrics: {...}}, ...] }

NameTypeReqDescription
breakdownBystringyesHow to segment the data
endDatestringyesEnd date YYYYMMDD
limitnumberMax breakdown rows (default 100)
startDatestringyesStart date YYYYMMDD
timePeriodstringyesTime grouping

No output schema declared.

No examples provided.

get_hubspot_associations ~197

Get all associations of a specific type for an object. Useful for pivoting between object types in either direction, e.g.: - deal -> contacts / companies / line_items - line_item -> deals (resolves a line item back to its parent deal) - ticket -> contacts / companies - contact -> deals / companies RETURNS: { results: [{ id, type }] } — array of associated record IDs.

NameTypeReqDescription
fromObjectIdstringyes
fromObjectTypestringyesSource object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.
toObjectTypestringyesTarget object type. Common values: "contacts", "companies", "deals", "tickets", "leads", "products", "line_items", or any custom object name.

No output schema declared.

No examples provided.

get_hubspot_call ~92

Get full details for a single call by ID. USE THIS WHEN: - You have a call ID and need complete details - Retrieving call notes or recording info PREREQUISITE: Get callId from search_hubspot_calls or get_contact_engagements

NameTypeReqDescription
callIdstringyesHubSpot call ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

get_hubspot_company ~95

Get full details for a single company by ID. USE THIS WHEN: - You have a company ID (from search or association) - Need complete company profile for account research PREREQUISITE: Get companyId from search_hubspot_companies or get_hubspot_associations

NameTypeReqDescription
companyIdstringyesHubSpot company ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

get_hubspot_contact ~104

Get full details for a single contact by ID. USE THIS WHEN: - You already have a contact ID (from search or association) - Need complete contact information - Preparing a detailed contact profile RETURNS: Single contact object with all requested properties PREREQUISITE: Get contactId from search_hubspot_contacts first

NameTypeReqDescription
contactIdstringyesHubSpot contact ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

get_hubspot_deal ~96

Get full details for a single deal by ID. USE THIS WHEN: - You have a deal ID (from search or association) - Need complete deal information including custom properties PREREQUISITE: Get dealId from search_hubspot_deals or get_hubspot_associations

NameTypeReqDescription
dealIdstringyesHubSpot deal ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

get_hubspot_email ~132

Get full details for a single logged email engagement by ID. PREREQUISITE: Get emailId from search_hubspot_emails or get_contact_engagements. SCOPE NOTE: the email body (hs_email_text / hs_email_html) is redacted by HubSpot unless the connected app holds the sales-email-read scope; the response carries a notes field warning when redaction applies. Subject, sender, recipients, and timestamps are always returned.

NameTypeReqDescription
emailIdstringyesHubSpot email engagement ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

get_hubspot_email_statistics ~119

Get aggregated email performance statistics. RETURNS: { aggregations: {sent, delivered, opened, clicked, bounced, unsubscribed}, emails: [{emailId, counters: {...}}] } Use this to analyze email campaign performance across multiple emails.

NameTypeReqDescription
emailIdsarraySpecific email IDs (optional)
endTimestampstringISO8601 end
startTimestampstringISO8601 start (e.g., "2026-01-01T00:00:00Z")

No output schema declared.

No examples provided.

get_hubspot_file ~164

Get details of a file in HubSpot's file manager by ID. USE THIS WHEN: - Need to check file details (name, size, URL, access level) - Verifying a file exists before attaching to a record - Getting a viewable URL for a private file (use getSignedUrl: true) RETURNS: { id, name, path, url, size, type, access, createdAt, updatedAt } For private files, the url will 404. Set getSignedUrl to true to get a temporary viewable URL.

NameTypeReqDescription
fileIdstringyesHubSpot file ID (from upload or import)
getSignedUrlbooleanIf true, also return a signed (viewable) URL for private files

No output schema declared.

No examples provided.

get_hubspot_form ~50

Get detailed information about a specific form. RETURNS: Form with id, name, configuration, fieldGroups (form fields)

NameTypeReqDescription
formIdstringyesHubSpot form ID or GUID

No output schema declared.

No examples provided.

get_hubspot_form_submissions ~127

Get submissions for a specific form. USE THIS WHEN: - Reviewing lead capture performance - Checking recent form submissions - Analyzing lead sources RETURNS: Array of submissions with: - submittedAt: Submission timestamp - values: Field name/value pairs - pageUrl: Where form was submitted NOTE: Uses formGuid (same as formId for most forms)

NameTypeReqDescription
afterstringPagination cursor
formIdstringyesForm ID/GUID
limitnumberMax submissions (default 20, max 50)

No output schema declared.

No examples provided.

get_hubspot_kb_article ~233

Get full details for a single HubSpot Knowledge Base article by ID via the GraphQL API (read-only). USE THIS WHEN: - You already have an articleId and need full content/details - Need the complete article body, metadata, or URL RETURNS: - Full KB article object with id, title, body, slug, URL, language, and metadata WORKFLOW: 1. Get articleId from list_hubspot_kb_articles or search_hubspot_kb_articles 2. Call get_hubspot_kb_article for complete details SCOPES REQUIRED: cms.knowledge_base.articles.read and collector.graphql_query.execute (a 403 usually means the account's plan or the signed-in user's permissions don't include the knowledge base — reconnecting alone won't add it) COMMON MISTAKES: - Using a knowledgeBaseId/contentGroupId instead of an articleId - Assuming search result snippets are full article content — use this tool for the full body Requires Service Hub Professional or Enterprise.

NameTypeReqDescription
articleIdstringyesHubSpot KB article ID

No output schema declared.

No examples provided.

get_hubspot_lead ~118

Get full details for a single lead by ID. NOTE: Requires Sales Hub Professional or Enterprise. USE THIS WHEN: - You already have a lead ID (from search or association) - Need complete lead information - Reviewing a specific lead's properties and status RETURNS: Single lead object with all requested properties PREREQUISITE: Get leadId from search_hubspot_leads first

NameTypeReqDescription
leadIdstringyesHubSpot lead ID (numeric string)
propertiesarrayProperties to return

No output schema declared.

No examples provided.

Common questions

What is the HubSpot MCP server?

HubSpot is an MCP server listed in the public MCP registry as io.github.mindstone/mcp-server-hubspot. HubSpot CRM: contacts, deals, tickets, line items, properties, marketing, files, workflows, threads. This page covers its npm package (@mindstone/mcp-server-hubspot).

Is the HubSpot MCP server safe to use?

HubSpot scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the HubSpot MCP server expose?

HubSpot exposes 106 tools: list_hubspot_accounts, authenticate_hubspot_account, complete_hubspot_auth, remove_hubspot_account, search_hubspot_contacts, and 101 more. Their descriptions and schemas cost roughly 16,957 tokens of context every time the server is loaded.

Is the HubSpot MCP server still maintained?

HubSpot is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the HubSpot MCP server under?

HubSpot declares the FSL-1.1-MIT licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.