Skip to content

HubSpot MCP access for sales team, per rep

HubSpot MCP access for sales team, rep by rep: each rep's own HubSpot sign-in, deal deletion and pipeline edits blocked, and an audit row that names the deal.

Nachi Raman 7 min read
A sales rep asking Claude about a HubSpot deal, with the delete-deal tool marked blocked

Why HubSpot MCP access for sales team starts with each rep's own login

Because a connection in Elaichi runs as the account that authorized it, not as the person calling it. Share one HubSpot connection with eight reps and all eight calls reach HubSpot as whoever connected it. HubSpot's own permissions then apply to that one account. That account is usually a sales ops admin, with more reach than any rep should have through a chat window.

MCP (Model Context Protocol) is the standard way an AI assistant calls tools in other apps. In Elaichi, each person connects their AI client once and approves their own grant. A grant is the standing permission one client holds for one person in one organization. Every request re-reads it. So the unit of access is a rep, not a team.

That means the tools have to run on each rep's own connection. Three shapes do this: the rep's All tools toolbox, a toolbox they built on their own connections, or a template they stamp themselves. When a rep stamps a template, they pick their own HubSpot connection for each app. A toolbox a manager shares with the team does not do this. Its entries run on the connection pinned into them, under the authority of whoever pinned it. For a per-rep rollout, leave the shared toolboxes alone and let each rep's All tools grant carry their own connection.

Where HubSpot's own MCP server sits behind one address

HubSpot builds and runs its own remote MCP server. So the question is how to get it under one set of rules, not how to write a connector. HubSpot's changelog says the server is generally available and hosted by HubSpot at https://mcp.hubspot.com. It authenticates with OAuth 2.1 and PKCE, and HubSpot says all actions through it respect the user's existing HubSpot permissions. Connecting starts with creating an MCP auth app inside the HubSpot account (HubSpot changelog, checked October 2026).

An organization on Gold can add a remote MCP server as its own connector. That needs the connector:create permission, which among the built-in roles only Org Owner and Org Admin hold. The connector is private until it is shared, and members then connect it with their own sign-in. Check the HubSpot connector page and the wider catalog first for what Elaichi already authors and runs. Bring the vendor's server in where that is the better fit.

After that, the address does not change per app or per person. Claude, ChatGPT and Cursor all sign in at https://api.elaichi.ai/mcp. Each client has its own admin path: on ChatGPT Business, only admins and owners can enable developer mode and deploy a custom MCP app (OpenAI help, checked October 2026). One worked example of the client side lives in the Claude setup walkthrough.

One HubSpot detail matters for sales. HubSpot says Activity objects (calls, meetings, notes, tasks, emails) are blocked from its MCP server in an account with sensitive data protection turned on. That restriction does not apply to HubSpot's standard CRM APIs (HubSpot changelog, checked October 2026). If reps expect to log a call from Claude, confirm that setting before you promise it.

Blocking deal deletion and pipeline edits for the Sales role

Write one block rule on the Sales role naming the delete and pipeline-update tools. A restriction is a rule that says which connectors and tools a role or one member may reach. It targets a role or a single member, never a team and never the whole organization. So the reps need to sit on one role, and a member holds exactly one.

Use the tool names as they appear in that connection's own tool list. A remote MCP server's tools are discovered per connection. In a restriction rule a remote tool is the resource mcp, with the upstream tool name as its method. Block rules match by name or by operation, so renaming a tool upstream does not slip it past the block.

A block list leaves everything it does not name reachable. That is the trade-off: the pipeline tool you forgot stays callable. An allowlist is tighter, with a cost. Once the Sales role carries any allow rule, the allowlist turns on. Every connector and tool that none of its allow rules names is then blocked for that role, across all connectors. So an allowlist also needs whole-connector allow rules for every other app the role uses. Allow rules match only the operation Elaichi pinned when the rule was saved, never the label. That asymmetry is explained in why blocks and allows match differently.

There is a blunter lever as well. On an organization's own remote MCP connector, its owner or a member with edit access can switch a tool off. That applies to everyone on the connector rather than to one role. Set the connector's new-tool policy to Review if you would rather approve each tool HubSpot's server starts offering.

Role, team and restriction changes reach every surface within about two minutes.

What a rep sees in Claude after the connection

The rep approves scopes on Elaichi's consent screen. Those scopes are the standing approval for that client. "Run your connected tools" (mcp:tools) covers every tier of connected tool, deletes in HubSpot included. "Delete data and remove access" covers Elaichi's own data, not HubSpot's. So no consent checkbox makes a connected app read-only. Hold a client to reads by picking toolboxes of read tools at consent, or by blocking the write and delete tools with a restriction.

On Claude Team and Enterprise plans an Owner or Primary Owner adds a custom connector from Organization settings > Connectors. Each member then finds it under Customize > Connectors and clicks Connect to authenticate (Anthropic support, checked October 2026). Claude sets connector tool permissions to Always allow, Needs approval or Blocked. Each setting applies to a whole connector, a category of its tools or a single tool (Anthropic support, checked October 2026). Those settings cannot single out one connected app, because connected tools are never listed one by one, however few there are. The model finds them with search_tools and runs them with execute_tool.

A tool a restriction withholds is not advertised to the client. It is not hidden from the rep either. It still appears in search results by name, flagged restricted and with no schema, with a way to ask an admin for access. That request is decided in the console under Governance > Access requests, by a person, never by the AI.

The audit query that finds stage changes

Every connected-tool call that reaches execution writes one row. In the console's audit log, set the category to Assistant, pick the rep as the actor, and set a start date. Then search the tool's name as free text. Free text matches the action, resource type, resource id, acting user id and the event's metadata. The row records both the advertised and the catalog tool name, so the name is the reliable handle.

Two traps. Filtering the audit log to MCP does not show MCP tool calls. Connected-tool calls sit in the Assistant category, and the MCP category holds client grants. And by action kind, a connected-tool call counts as other, not updated.

What the row gives you is the acting rep, the connector, the connection the call actually reached, the tool and its classification. It also records how approval was given, the surface, the MCP client, the outcome, and a target. The target is the resource type plus the id taken from the one URL path argument that names the object. For a deal update, that id is the deal.

What it does not give you is the new stage. Apart from that one path argument, a connected-tool row records no argument values. It records neither argument names nor an argument count. So the evidence reads as: this rep ran this tool against this deal from Claude at this time, and it succeeded. The before and after live in HubSpot's own record. Decide up front whether that is enough. What an AI agent audit log must capture works through the general case.

The console exports the current view as CSV with its filters applied, stopping at 10,000 entries. Elaichi keeps 90 days of audit history; for longer, export to your own Datadog comes with the Black plan, which is launching soon.

What the removal of a rep actually revokes

Removing or suspending a member revokes every MCP grant they hold in that organization. Grants are re-read on each request, so their clients fail on the next call. Reactivating them does not bring the grants back; they consent again.

Their HubSpot account is untouched. Removing a member ends their access through Elaichi, not their accounts in the connected apps. Those stay until they are deprovisioned in HubSpot or through the identity provider. If a departing rep's connection backs anything shared, transfer it during the removal rather than after. Outside offboarding, only a connection's owner can transfer it. Offboarding when the agent holds access covers the rest of the estate.

When a shared HubSpot login is still the right answer

If one person in the company touches HubSpot and nobody else will, per-rep grants buy you nothing. Say your reps only ever ask read questions and already hold HubSpot seats. HubSpot's own MCP server is then a shorter path, with one fewer vendor in it. That is a fair place to stop; when you do not need an MCP gateway makes the case properly.

The argument for putting it behind Elaichi starts at the second app. One address, one place where the Sales role's restrictions are written, and one audit log across HubSpot and everything else the team reaches. The same pattern on another CRM is in each rep's own Salesforce access in ChatGPT. The marketing side of HubSpot is in should marketing get HubSpot inside ChatGPT. The model underneath both is MCP governance. A sales-side sibling using the same per-rep shape on a different tool is Outreach access in Cursor.

FAQ

Frequently asked questions

Does HubSpot's MCP server respect each rep's own HubSpot permissions?

HubSpot says all actions through its remote MCP server respect the user's existing HubSpot permissions. HubSpot hosts the server at https://mcp.hubspot.com, with OAuth 2.1 and PKCE ([HubSpot changelog](https://developers.hubspot.com/changelog/remote-hubspot-mcp-server-is-now-generally-available), checked October 2026). That holds for the account that authorized the connection. In Elaichi, every call through a connection runs as the account that connected it. So a connection shared with a team reaches HubSpot as its owner, not as each caller. For per-person permissions, each rep connects their own HubSpot account.

How quickly does blocking a HubSpot tool take effect?

A role, team, restriction or access-grant change in Elaichi reaches every surface within about two minutes. Some changes are faster. Revoking a client's grant, removing or suspending a member, revoking a share and disconnecting an account all take effect on the next call, because Elaichi re-reads the grant and the connection on every request.

Does Elaichi's audit log record which stage a deal moved to?

No. An Elaichi audit row for a connected-tool call records the person, the connector and the connection the call reached. It also records the tool's advertised and catalog names, its classification, how approval was given, the surface and MCP client, and the outcome. The target it records includes the id taken from the one URL path argument naming the object. Apart from that path argument, no argument values are recorded, and neither argument names nor an argument count are. So the row names the deal and the tool, and the old and new stage values live in the app's own record.

Where do connected-tool calls appear in the Elaichi audit log's filters?

Under the Assistant category, not MCP. Connected-tool calls, including calls made from Claude, ChatGPT or Cursor, are recorded with an assistant action. The MCP category holds events such as client grants. By action kind a connected-tool call counts as other. Searching the tool's name as free text matches the row's metadata, which is the most reliable way to find a specific tool's calls.

Put agents to work on your own systems

14 days on Gold, no credit card. Start with one app and one team.

Works with
Claude ChatGPT Cursor and any other MCP client, or the Elaichi Agent.
When the trial ends
Nothing is deleted. Connections, roles and the audit log stay where they are, so subscribing picks up exactly where you left off.