HubSpot
The HubSpot connector gives AI agents access to your CRM — contacts, deals, and notes — through the HubSpot CRM API using OAuth 2.0. Your credentials are stored encrypted in MCPGate's vault and are never exposed to the AI client.
CRM objects only
Tool reference#
The HubSpot connector exposes 8 tools: 4 read and 4 write.
| Tool | Category | Description |
|---|---|---|
| hubspot_list_contacts | read | List CRM contacts |
| hubspot_get_contact | read | Get contact details by ID |
| hubspot_search_contacts | read | Search contacts by properties |
| hubspot_list_deals | read | List CRM deals |
| hubspot_create_contact | write | Create a new CRM contact |
| hubspot_update_contact | write | Update contact properties |
| hubspot_create_deal | write | Create a new CRM deal |
| hubspot_add_note | write | Add a note to a contact |
Common guardrail recipes#
Read-only CRM access#
Enable only the four read tools and deny all write tools. Useful for sales intelligence agents that pull contact and deal data for summarisation without modifying any CRM records.
Notes-only write access#
Enable only hubspot_add_note from the write tools, while denying hubspot_create_contact, hubspot_update_contact, and hubspot_create_deal. This lets an AI assistant log call notes and summaries without creating or editing records.
PII guardrail on contact creation#
Apply the block_pii template to hubspot_create_contact and hubspot_update_contact. This prevents the AI from writing raw sensitive data (e.g. social security numbers or passport details) into CRM contact properties.
Troubleshooting#
- Contact not found by ID — HubSpot contact IDs are numeric. Ensure the AI is passing a numeric string, not an email address. Use
hubspot_search_contactsto look up a contact by email first. - Deal stage required —
hubspot_create_dealrequires a valid pipeline and deal stage. These vary by HubSpot account configuration. Check your HubSpot pipeline settings for the correct stage IDs. - Scope error on first use — HubSpot OAuth requires specific scopes per object type. If you see a 403 after connecting, disconnect and reconnect to trigger a fresh consent screen with all required scopes.