HubSpot Agent CLI vs MCP vs Custom API: Which Wins?

By Izzy Aly, Co-Founder, Systems and Architecture


HubSpot now gives coding agents three paths into your CRM: the Agent CLI, the MCP server and a custom Claude Code skill. Here's which to pick, and when to stack them.

Key takeaways

  • The HubSpot Agent CLI pairs a standalone hubspot binary with 18 pre-built skill files. It has been in public beta since June 2026 and is built for scheduled, bulk and background CRM work (HubSpot changelog, June 2026).
  • The HubSpot MCP server provides typed, discoverable tools via per-user OAuth, giving you team permission enforcement without building auth infrastructure (HubSpot MCP Docs, 2026).
  • Custom Claude Code skills open up delete operations, the full API surface and cross-system orchestration: the choice when your workflow doesn't fit a pre-built pattern.
  • For most teams, the right answer is a hybrid: MCP server for daily CRM ops plus a lightweight custom skill for the edge cases. Agencies managing multiple clients should add the Agent CLI for standardised, repeatable client onboarding.

In 2026, HubSpot shipped not one but three distinct paths for connecting AI coding agents to your CRM. The Agent CLI (first offered as a private beta, public beta since 23 June 2026). The HubSpot MCP server (GA as of April 2026, at https://mcp.hubspot.com). And the existing REST API (date-versioned since 2026-03; the current version is 2026-09). Each path makes a different trade-off between setup speed, capability depth, and engineering control.

If you are a HubSpot partner, the question isn't academic. Pick the wrong path, and you're either over-engineering a simple client need or under-delivering on a complex one. So which trade-off matters most to your team: setup speed, capability depth, or per-user safety?

Quick comparison table

CategoryHubSpot Agent CLIHubSpot MCP ServerCustom Claude Code Skill (API)
Setup Time~5 minutes (binary + npx skills)~10 minutes (OAuth PKCE setup)30 to 60 minutes (service key + tool definitions)
Tools/Featureshubspot binary + 18 skill filesTyped tools (CRM read/write, campaigns, content)Unlimited: any API endpoint
Auth ModelPer-user OAuth login, or a service key for admin workOAuth 2.1 with PKCE (mandatory)Service key, per-user service keys, or custom OAuth
Custom ObjectsRecords via object commands; schemas need a service keyRead and write recordsFull CRUD via objects API
Delete OperationsSome need a service key or a dry-run digestNot exposed as a toolAvailable via direct API calls
Production ReadinessPublic betaGA (April 2026)GA (stable REST API)
Team Permission EnforcementPer-user in OAuth mode; a service key bypasses itPer-user OAuth respects HubSpot permissionsShared token (default), per-user service keys (manual), or custom OAuth (engineering lift)
Wins atScheduled, bulk CRM opsDaily ops, typed safety, per-user authDeletes, cross-system, full control

Who should choose what?

Which path into HubSpot: a three-question decision rule Three questions, asked in order. One: does the workflow need deletes, webhooks or other systems such as enrichment, Slack or email? If yes, build a custom Claude Code skill. If no, two: do several users each need their own HubSpot permissions, or is it interactive daily work? If yes, use the HubSpot MCP server. If no, three: is it scheduled or bulk CRM work? If yes, use the HubSpot Agent CLI. For most teams the answer is the MCP server plus a custom skill, adding the Agent CLI for scheduled jobs. WHICH PATH INTO HUBSPOT? Needs deletes, webhooks or other systems? Yes Custom Claude Code skill deletes, full API, other systems No Several users, each with their own permissions? Yes HubSpot MCP server per-user OAuth, interactive work No Scheduled or bulk CRM work? Yes HubSpot Agent CLI local binary + 18 skill files Most teams: MCP server + custom skill. Add the Agent CLI for scheduled jobs.
Which path into HubSpot: a three-question decision rule Three questions, asked in order. One: does the workflow need deletes, webhooks or other systems such as enrichment, Slack or email? If yes, build a custom Claude Code skill. If no, two: do several users each need their own HubSpot permissions, or is it interactive daily work? If yes, use the HubSpot MCP server. If no, three: is it scheduled or bulk CRM work? If yes, use the HubSpot Agent CLI. For most teams the answer is the MCP server plus a custom skill, adding the Agent CLI for scheduled jobs. WHICH PATH INTO HUBSPOT? Deletes, webhooks, other systems? Yes: Custom Claude Code skill No Per-user permissions or daily use? Yes: HubSpot MCP server No Scheduled or bulk CRM work? Yes: HubSpot Agent CLI Most teams: MCP server + skill. Add the Agent CLI for scheduled jobs.
Fig. 1 — Three questions, asked in order, pick the path. Most teams end up on the MCP server plus a custom skill.

Sales and RevOps teams running standard HubSpot workflows: Start with the Agent CLI for the scheduled and bulk work. The pre-built skills cover pipeline management, deal tracking, ticket resolution, data quality, and sales reporting, exactly the work that consumes ops teams' time, with a five-minute setup. For interactive, day-to-day questions, add the MCP server alongside it.

Engineering teams building multi-system AI agents: Use the HubSpot MCP server. Its typed tool schemas and protocol-standard design mean you can swap LLM providers without rewriting anything. Connect alongside Slack's MCP server, Gmail's, and whatever else your agent touches. Reserve custom API skills for the operations that the MCP server doesn't support.

Teams with delete-heavy clean-ups or cross-system workflows: Build a custom Claude Code skill via the HubSpot API. You need delete operations, webhook-driven automation, or workflows that chain HubSpot to enrichment, then to Slack, then to email. The 30- to 60-minute setup is a one-time cost.

Agencies managing multiple client HubSpot instances: Install the Agent CLI for standardised per-client CRM operations. Supplement with a custom skill for cross-client reporting and agency-specific workflows that don't fit the pre-built patterns.

Teams with multiple Claude Code users who need per-user HubSpot permissions: Use the MCP server exclusively. Its per-user OAuth PKCE flow means your SDR can only see their owned deals, and your sales VP can view the full pipeline.

What are the three paths and how do they differ?

Each path operates at a different infrastructure layer: the Agent CLI runs locally, HubSpot hosts the MCP server, and custom skills use the REST API directly.

Three paths from Claude Code to HubSpot, at three layers Claude Code, the coding agent, reaches HubSpot by one of three paths. Path one, the Agent CLI, runs locally: a hubspot binary plus 18 skill files, authenticated by a per-user OAuth login or by a service key for admin work; it is in public beta. Path two, the MCP server, is hosted by HubSpot at mcp.hubspot.com and uses OAuth 2.1 with PKCE, per user, respecting HubSpot permissions; it has been generally available since April 2026. Path three, a custom skill, is markdown plus curl against the REST API, authenticated by a service key with account-wide scopes. All three share HubSpot's API limits, and only the custom skill also reaches other systems such as enrichment, Slack and email. THREE PATHS, THREE LAYERS Claude Code coding agent 01 Agent CLI public beta Local binary + 18 skill files OAuth login or service key 02 MCP server GA April 2026 Hosted at mcp.hubspot.com OAuth 2.1 + PKCE, per user 03 Custom skill REST API Markdown + curl Service key, account-wide HubSpot shared API limits Other systems Only the custom skill reaches enrichment, Slack and email.
Three paths from Claude Code to HubSpot, at three layers Claude Code, the coding agent, reaches HubSpot by one of three paths. Path one, the Agent CLI, runs locally: a hubspot binary plus 18 skill files, authenticated by a per-user OAuth login or by a service key for admin work; it is in public beta. Path two, the MCP server, is hosted by HubSpot at mcp.hubspot.com and uses OAuth 2.1 with PKCE, per user, respecting HubSpot permissions; it has been generally available since April 2026. Path three, a custom skill, is markdown plus curl against the REST API, authenticated by a service key with account-wide scopes. All three share HubSpot's API limits, and only the custom skill also reaches other systems such as enrichment, Slack and email. Claude Code Agent CLI local, beta OAuth login or service key MCP server HubSpot-hosted OAuth 2.1 + PKCE, per user Custom skill REST API Service key, account-wide Other systems HubSpot
Fig. 2 — Same agent, same CRM, three layers in between. Each path brings its own auth model.

Path 1: HubSpot Agent CLI, the turnkey approach

The Agent CLI is a single hubspot binary with no runtime dependencies, plus a separate set of skill files that teach the agent how to plan its commands (HubSpot Agent CLI guide):

curl -fsSL https://api.hubapi.com/hub/cli/backend/hub-cli/latest/install.sh | sh
hubspot auth login
npx skills add hubspot/agent-cli-skills

The 18 skills in the Agent CLI Skills repo build on one foundation, bulk operations, and cover CRM lookup, deals, tickets, data quality, enrichment, quote-to-cash, workflow automation and custom object management, among others.

Every write command supports --dry-run, and some destructive commands, such as deletes and schema changes, require a local safety digest from a dry run before they execute. Audit goes through hubspot history, a local log of destructive operations.

HubSpot positions the Agent CLI for scheduled, bulk and background work, and the MCP server for interactive, human-in-the-loop tasks (HubSpot changelog, June 2026).

Path 2: HubSpot MCP server, the standard protocol

Launched as a public beta in September 2025 and GA since 13 April 2026 (HubSpot changelog), HubSpot's remote MCP server implements the Model Context Protocol to expose typed tools for CRM, campaign and content operations. Setup uses OAuth with PKCE, no API key to manage. You create an MCP connector in HubSpot (Development, then MCP Connectors), register http://localhost:8080/callback as its redirect URL, and pass its client ID to Claude Code (Claude Code MCP docs):

claude mcp add --transport http --scope user \
  --client-id <your-client-id> --client-secret --callback-port 8080 \
  hubspot https://mcp.hubspot.com

HubSpot's docs list more than 30 public tools, from search_crm_objects and manage_crm_objects to campaign, marketing email and content tools. Read and write access covers the core CRM objects, activities and custom object records; some tools depend on your subscription tier (HubSpot MCP Docs). Call get_user_details to see which tools your account can access.

The MCP server's key architectural advantage is that typed tool schemas sharply reduce the risk of AI hallucinations. Claude Code discovers property names at runtime rather than guessing from memory. That removes a common failure of raw API calls: writing to a field name that doesn't exist.

A limitation worth noting: if your HubSpot account has Sensitive Data enabled, activity and conversation data are blocked through the MCP server even though they remain accessible through the standard API.

Path 3: Custom Claude Code skill, full API control

Building a custom skill means wiring Claude Code directly to HubSpot's REST API. The simplest approach uses a service key, which HubSpot now recommends for in-account integrations: HubSpot blocked new legacy Private Apps from 26 October 2026 for existing accounts, though existing apps keep working (HubSpot changelog, August 2026).

curl -H "Authorization: Bearer $HUBSPOT_TOKEN" \
  https://api.hubapi.com/crm/objects/2026-09/contacts

You define every tool, every endpoint, every validation rule, across CRM, marketing, CMS and commerce (HubSpot API Reference).

The key advantage over both the Agent CLI and the MCP server: you're not limited to HubSpot.

How do they compare on setup, capability and safety?

Setup speed

The HubSpot Agent CLI wins on raw speed: one install, one login, one skills command, under 5 minutes.

The MCP server takes about 10 minutes for first-time setup: the connector, claude mcp add and the browser OAuth PKCE flow.

A custom skill takes 30 to 60 minutes. You're creating a service key, scoping permissions, writing tool definitions, handling pagination, and implementing retry logic. This is engineering work, not configuration.

Capability depth

Custom Claude Code skills win on raw capability: they expose the full API surface.

The MCP server's gaps are specific. There's no delete tool, and the search tool caps out at 5 filter groups with 6 filters each and 200 results per page, while a batch fetch takes up to 100 IDs. You can't export your full CRM through it. The Agent CLI streams JSONL and pages through large exports, but its schema and some delete operations need an admin service key.

A custom skill has none of these constraints. Delete? Available. Any API domain beyond CRM? All reachable. But here's the real question: does your team actually need all of that, or are you paying the engineering overhead for capabilities you won't use?

The rate limit reality: all three paths hit HubSpot's API limits. Privately distributed apps get 100 requests per 10 seconds on Free/Starter, 190/10s on Professional/Enterprise (250 with the API Limit Increase), while public OAuth apps get 110/10s per installing account (HubSpot API Usage Guidelines). A custom skill needs explicit retry logic that backs off on a 429 response, reads HubSpot's X-HubSpot-RateLimit-* headers and uses exponential backoff.

HubSpot API burst limits by app type Horizontal bar chart of HubSpot API burst limits, in requests per 10 seconds, which all three paths share. Private apps and service keys: 100 on Free or Starter, 190 on Professional or Enterprise, 250 with the API Limit Increase. Public OAuth apps: 110 per installing account. Source: HubSpot API Usage Guidelines. API BURST LIMIT, REQUESTS PER 10 SECONDS Free / Starter private app, service key 100 Professional / Enterprise private app, service key 190 With API Limit Increase private app, service key 250 Public OAuth app per installing account 110 All three paths share these limits. A custom skill must retry on 429. Source: HubSpot API Usage Guidelines.
HubSpot API burst limits by app type Horizontal bar chart of HubSpot API burst limits, in requests per 10 seconds, which all three paths share. Private apps and service keys: 100 on Free or Starter, 190 on Professional or Enterprise, 250 with the API Limit Increase. Public OAuth apps: 110 per installing account. Source: HubSpot API Usage Guidelines. REQUESTS PER 10 SECONDS Free / Starter · private app 100 Pro / Enterprise · private app 190 API Limit Increase · private app 250 OAuth app · per installing account 110 Service keys share the private app limits.
Fig. 3 — HubSpot API burst limits by app type, in requests per 10 seconds. All three paths share them. Source: HubSpot API Usage Guidelines.

Safety and guardrails

The HubSpot Agent CLI wins on built-in safety: its dry-run and safety-digest pattern is purpose-built to prevent AI agents from destroying your CRM.

The MCP server is safe by design in a different way: typed tool schemas prevent hallucinated property names. But the MCP server doesn't enforce confirmation gates. If you ask Claude Code to update 200 contacts, the server won't stop to ask; any approval step lives in your client.

A custom skill has no built-in guardrails. Since API version 2026-09 (8 September 2026), HubSpot enforces admin-configured property validation rules on CRM API writes (HubSpot property validations guide), but those rules check format, not intent: a well-formed write to the wrong record still goes through. You must scope your service key narrowly, implement confirmation hooks in your skill, and never give the agent write access to objects it doesn't need. This is disciplined engineering, not a product feature. If you build it, put the gate in the tool, not in the prompt: here's how that gate works on a production CRM, with previews, typed record counts and undo.

Can it leave HubSpot, and who maintains it?

Cross-system workflows

Custom Claude Code skills win decisively: they're the only path that orchestrates across systems.

A real GTM automation might pull high-fit contacts from HubSpot, enrich via a data provider, check LinkedIn activity, draft outreach, create a deal in HubSpot, and notify Slack. The Agent CLI and the MCP server handle steps 1 and 5. Only a custom skill orchestrates the whole chain.

LLM portability

The MCP server wins on LLM portability: it's the only path that uses an open protocol, supported by Claude, Gemini, Codex, Cursor and other MCP-compatible clients. If you switch clients next year, your HubSpot connection follows you.

HubSpot builds the Agent CLI primarily for Claude Code, Claude Cowork and OpenAI Codex. Custom skills are markdown files wrapping curl commands, so any coding agent that can execute shell commands can use them, with minimal porting.

Maintenance burden

The MCP server and Agent CLI are tied for lowest maintenance. HubSpot owns the infrastructure. Custom skills are fully your responsibility.

The Agent CLI updates with hubspot upgrade and npx skills update. The risk: it's in beta, and HubSpot warns that commands, flags and behaviour may change without notice. The MCP server is GA server-side infrastructure: HubSpot adds tools and fixes bugs without you touching anything. The risk: if HubSpot adds new scopes, you need to reinstall the connector to grant them.

A custom skill is yours to keep alive. HubSpot's date-based API versioning (2026-03, 2026-09) means versioned endpoints eventually reach end of life. You track deprecations and schema drift yourself.

Who can do what when your whole team uses it?

The HubSpot MCP server wins on team permission enforcement: it's the only path where per-user permissions hold on every request without additional setup.

MCP server (per-user OAuth, zero additional work): Each user authenticates with their own HubSpot credentials via OAuth 2.1 with PKCE, and "all actions respect your existing HubSpot user permissions" (HubSpot MCP Docs). If a sales rep can only view their owned deals in HubSpot, that same restriction applies when they ask Claude Code to "show me my deals closing this week."

Agent CLI (per-user until someone needs admin mode): hubspot auth login scopes the token to the user's own HubSpot permissions. Schema operations and most deletes need a service key, which HubSpot warns "carries broader permissions and doesn't generate a per-user audit trail" (HubSpot changelog).

Custom skill with a shared service key (the default, simplest path): Its scopes are account-wide; it doesn't know which team member is making the request. HubSpot sets service key scopes per object type, such as crm.objects.contacts.read, on the key rather than on the person using it (HubSpot service keys docs).

Custom skill with per-user service keys (manual, but works for small teams): An admin issues each team member their own service key, scoped to their role, and each sets HUBSPOT_TOKEN to their personal key. The same skill file now respects per-role scopes, though scopes limit object types, not records: a rep's key still reads every deal, not just their own. Onboarding 20 team members means 20 keys, but for a team of 3-5 people, this is entirely workable.

In a Claude Team or Enterprise deployment, administrators can use managed settings to enforce which MCP servers are available (allowManagedMcpServersOnly), prevent users from adding their own permission rules (allowManagedPermissionRulesOnly), and block direct Bash HTTP calls (Bash(curl *) deny rules) (Claude Code managed MCP docs, Claude Code Permissions Docs). A deny rule doesn't catch /usr/bin/curl or sh -c 'curl ...', so pair it with the sandbox network allowlist. With these controls in place, the MCP server becomes the sanctioned path to HubSpot.

Frequently asked questions

Is the HubSpot Agent CLI ready for production?

Not yet. As of October 2026, it's in public beta, and HubSpot warns that write commands can change or remove live data. For production-critical workflows, the MCP server (GA since April 2026) or the direct REST API is a safer choice. Run --dry-run first and test in a sandbox account where you can.

What does each path cost?

All three paths are free at the tool level. The real cost is engineering time for setup and maintenance, plus Claude Code or LLM usage costs at runtime.

Verdict: category winners

CategoryWinner
Setup SpeedHubSpot Agent CLI
Capability DepthCustom Claude Code Skill
Safety and GuardrailsHubSpot Agent CLI
Type Safety and Schema DiscoveryHubSpot MCP Server
Cross-System WorkflowsCustom Claude Code Skill
LLM PortabilityHubSpot MCP Server
Maintenance BurdenHubSpot MCP Server (tie with Agent CLI)
Team Permission ManagementHubSpot MCP Server
OverallMCP Server for daily ops + Custom Skill for edge cases

The three paths aren't competing products; they're different points on a spectrum of control versus convenience. The MCP server sits in the middle: typed, discoverable, protocol-standard, and covering most of what teams actually need.

For most teams, the pragmatic path is to set up the MCP server first (10 minutes, GA, no regrets), install the Agent CLI alongside it if you want pre-built scheduled workflows, and build a lightweight custom skill for the operations that neither covers.

Topics
Author
Izzy Aly · Co-Founder, Systems and Architecture
Share