Skip to content

Connectors · Service desk & support

HubSpot Tickets MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to HubSpot Tickets and the rest of your systems. It gives your agent 71 HubSpot Tickets actions (24 reads, 31 writes and 16 that wait for a confirmation) and holds the HubSpot Tickets credential itself, so the agent never does. It paces HubSpot Tickets's limits and records every call. Connecting HubSpot Tickets needs your own HubSpot Tickets OAuth app and one admin sign-in.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "hubspot_tickets.notes.list",  intent: "check which HubSpot Tickets account is connected"}# List HubSpot notes · read · 1 upstream call
  • 71actionsin one signed file
  • 24readlook, never change
  • 31writecreate and update
  • 16wait for a yesdestructive, confirmed first

Set up

Connect HubSpot Tickets in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect HubSpot Tickets.

    OAuth 2.0, authorization code with PKCE. You register your own OAuth app with HubSpot Tickets, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.

    Before the first sign-in, HubSpot Tickets needs an OAuth app of your own, registered in its developer portal. actionlake has no HubSpot Tickets app to lend you.

    • access_tokenAccess token from one sign-in with your own OAuth app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idHubSpot app client id
    • client_secretHubSpot app client secret
    account { op: "connections.requirements", service: "hubspot_tickets" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "hubspot_tickets.notes.list" }# list hubspot notes · read · 1 upstream callcheck { action: "hubspot_tickets.notes.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

HubSpot Tickets at a glance

Sign-in
OAuth 2.0, authorization code with PKCE. You register your own OAuth app with HubSpot Tickets, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
You provide
access_tokenrefresh_tokenclient_idclient_secret
Limits we pace to
110 calls per 10 seconds and 5 a second, per connection
API covered
HubSpot Tickets API v3api.hubapi.com
Built from
HubSpot Tickets's documentation, read 15 September 2026api.hubspot.comdevelopers.hubspot.com
Service file
Version 2.0.0, signed (Ed25519)
Cached reads
24 of 24 reads, for up to an hour; a write clears what it affects
Ready-made plans
6 in the store
Shared entities
2, so ask can line HubSpot Tickets up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in HubSpot Tickets.

71 actions in 4 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 24readlook, never change
  • 31writecreate and update
  • 16destructivewait for a confirmation
  1. Metadata

    29

    13 read · 11 write · 5 destructive

    List HubSpot owners · List HubSpot ticket pipelines · List the stages of a HubSpot ticket pipeline · Get one HubSpot owner

  2. Ticketing

    15

    4 read · 7 write · 4 destructive

    List HubSpot tickets · Create a batch of HubSpot tickets · Create a HubSpot ticket · Get one HubSpot ticket

  3. Engagements

    14

    4 read · 7 write · 3 destructive

    List HubSpot notes · Read a batch of HubSpot notes · Create a batch of HubSpot notes · Create a HubSpot note

  4. Associations

    13

    3 read · 6 write · 4 destructive

    Read associations for a batch of tickets · List a ticket's associations · List the association labels available from tickets · Remove associations for a batch of tickets

HubSpot's own MCP server

HubSpot's MCP server, or actionlake?

HubSpot runs a remote MCP server for CRM data, tickets included, at mcp.hubspot.com, signed in with OAuth, and a separate local developer MCP server in its CLI.

Use HubSpot's server when one person wants to work in HubSpot Tickets from their own AI client. Use actionlake when you also want HubSpot Tickets behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across HubSpot Tickets and another system.

Source: HubSpot's documentation, checked 22 October 2026.

Top actions

The HubSpot Tickets API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 46 of HubSpot Tickets's 46 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
hubspot_tickets.notes.listList HubSpot notesPage through every note in the portal, newest ids first.readcrm.contact_note.list29 connectors
hubspot_tickets.tickets.listList HubSpot ticketsPage through every ticket in the portal, newest ids first.readservice.ticket.list56 connectors
hubspot_tickets.notes.batch_readRead a batch of HubSpot notesFetch up to 100 notes in one call, by HubSpot id or by a unique property.readcrm.contact_note.list29 connectors
hubspot_tickets.notes.createCreate a HubSpot noteCreate one note, optionally associating it to existing records as it is made.writecrm.contact_note.create28 connectors
hubspot_tickets.notes.batch_createCreate a batch of HubSpot notesCreate up to 100 notes in one call.writecrm.contact_note.create28 connectors
hubspot_tickets.tickets.createCreate a HubSpot ticketCreate one ticket, optionally associating it to existing records as it is made.writeservice.ticket.create54 connectors
hubspot_tickets.notes.archiveArchive a HubSpot noteMove one note to the recycling bin. Recoverable in the UI for 90 days.destructivecrm.contact_note.delete21 connectors
hubspot_tickets.owners.listList HubSpot ownersEnumerate the portal's owners — the users a ticket can be assigned to, with the id `hubspot_owner_id` actually holds.readidentity.user.list474 connectors
hubspot_tickets.associations.listList a ticket's associationsFind every record of one type associated with a ticket — its company, its contacts, its notes.readcrm.record_association.list14 connectors
hubspot_tickets.associations.batch_readRead associations for a batch of ticketsFetch the associated records of one type for many tickets in one call.readcrm.record_association.list14 connectors
hubspot_tickets.pipelines.listList HubSpot ticket pipelinesEnumerate the ticket pipelines, each with its stages — the id-to-label map every ticket status needs.readcrm.pipeline.list13 connectors
hubspot_tickets.pipeline_stages.listList the stages of a HubSpot ticket pipelineEnumerate one pipeline's stages with their ids, labels and order.readcrm.pipeline_stage.list12 connectors

Try it

Prompts to paste into Claude.

Each one names the HubSpot Tickets actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which HubSpot Tickets tickets have been open the longest? Show me the ten oldest with their status.

    callshubspot_tickets.tickets.list

  2. Planwrite

    Open a ticket for a request and link it to the customer in HubSpot Tickets.

    callshubspot_tickets.pipeline_stages.gethubspot_tickets.tickets.createhubspot_tickets.associations.create_defaulthubspot_tickets.notes.create

  3. Plandestructive

    Merge a duplicate ticket into the one being worked in HubSpot Tickets. Ask me before anything is sent or changed.

    callshubspot_tickets.tickets.gethubspot_tickets.associations.listhubspot_tickets.tickets.mergehubspot_tickets.notes.create

  4. Writewrite

    Create a HubSpot note in HubSpot Tickets. Show me exactly what you will send before you save it.

    callshubspot_tickets.notes.create

The plan store

Ready-made plans for HubSpot Tickets.

6 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Report where tickets are stacking up in a pipeline

    Use it when Someone asks which support stage is backing up, or why a pipeline's numbers moved.

    Effect
    read
    Steps
    5 · loops
    Needs
    pipeline id and search query
    Install
    hubspot_tickets-pipeline-health-report
  2. Escalate tickets that have sat too long without movement

    Use it when Tickets are ageing past the response target and someone wants the stalled ones escalated with sign-off.

    A person decidesEscalate the number of results stalled tickets found before cutoff to HIGH priority.

    Effect
    write
    Steps
    4 · loops
    Needs
    escalation stage, search query and stale days
    Install
    hubspot_tickets-escalate-stale-tickets
  3. Open a ticket for a request and link it to the customer

    Use it when A customer request arrived outside HubSpot and needs to become a real ticket linked to that customer.

    Effect
    write
    Steps
    4
    Needs
    body, contact id, pipeline id, priority, stage id and subject
    Install
    hubspot_tickets-log-ticket-from-request
  4. Triage unassigned tickets to an owner with a triage note

    Use it when New support tickets have piled up without an owner and someone wants them assigned and annotated in one pass.

    Effect
    write
    Steps
    4 · loops
    Needs
    owner email, search query and triage stage
    Install
    hubspot_tickets-triage-new-tickets
  5. Archive long resolved tickets after sign-off

    Use it when Resolved tickets have built up past the retention window and someone wants them cleared with sign-off.

    A person decidesArchive the number of results tickets resolved before cutoff.

    Effect
    destructive
    Steps
    5
    Needs
    search query and retention days
    Install
    hubspot_tickets-archive-resolved-tickets
  6. Merge a duplicate ticket into the one being worked

    Use it when The same customer issue was raised twice and the duplicate should be folded into the ticket being worked.

    A person decidesMerge ticket duplicate id into primary id. This cannot be undone.

    Effect
    destructive
    Steps
    6
    Needs
    primary id and duplicate id
    Install
    hubspot_tickets-merge-duplicate-tickets
install a plan
account { op: "plans.install", slug: "hubspot_tickets-pipeline-health-report" }
# then ask for it by name; a schedule can run it on a timetable

Governance for HubSpot Tickets

Destructive actions wait for a yes.

16 HubSpot Tickets actions are destructive. These are all of them:

  • Archive a HubSpot notehubspot_tickets.notes.archive
  • Archive a batch of HubSpot noteshubspot_tickets.notes.batch_archive
  • Archive a HubSpot tickethubspot_tickets.tickets.archive
  • Archive a batch of HubSpot ticketshubspot_tickets.tickets.batch_archive
  • Merge two HubSpot noteshubspot_tickets.notes.merge
  • Permanently delete a HubSpot ticket (GDPR)hubspot_tickets.tickets.gdpr_delete
  • Remove every association between a ticket and a recordhubspot_tickets.associations.delete
  • Remove associations for a batch of ticketshubspot_tickets.associations.batch_archive
  • Remove specific association labels for a batch of ticketshubspot_tickets.associations.batch_archive_labels
  • Archive a HubSpot ticket pipelinehubspot_tickets.pipelines.archive
  • Archive a stage in a HubSpot ticket pipelinehubspot_tickets.pipeline_stages.archive
  • Merge two HubSpot ticketshubspot_tickets.tickets.merge
  • Delete an association label from ticketshubspot_tickets.association_labels.delete
  • Archive a HubSpot ticket propertyhubspot_tickets.properties.archive
  • Archive a batch of HubSpot ticket propertieshubspot_tickets.properties.batch_archive
  • Archive a HubSpot ticket property grouphubspot_tickets.property_groups.archive

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dohubspot_tickets.associations.deleteconfirm_policy: human

Remove every association between a ticket and a record?

intent: the user asked me to remove every association between a ticket and a record

run suspended · waiting for a named person · key hubspot-tickets-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "hubspot-tickets-agent",  allowed_actions: ["hubspot_tickets.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "hubspot_tickets.notes.archive", approver: "[email protected]" },    { match: "hubspot_tickets.notes.batch_archive", approver: "[email protected]" },    { match: "hubspot_tickets.tickets.archive", approver: "[email protected]" }  ]}
Illustrative. Scoped to HubSpot Tickets only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What HubSpot Tickets costs on actionlake.

Every HubSpot Tickets action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call HubSpot Tickets refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 71 HubSpot Tickets actions
  • 13actions pageeach page of a long list is one call
  • 24reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every HubSpot Tickets action.

71 actions by area: the id your agent calls, what it does, and its effect.

Metadata29
  • hubspot_tickets.owners.getGet one HubSpot ownerread
  • hubspot_tickets.owners.listList HubSpot ownersread
  • hubspot_tickets.pipeline_stages.archiveArchive a stage in a HubSpot ticket pipelinedestructive
  • hubspot_tickets.pipeline_stages.auditRead a HubSpot ticket pipeline stage's audit trailread
  • hubspot_tickets.pipeline_stages.createCreate a stage in a HubSpot ticket pipelinewrite
  • hubspot_tickets.pipeline_stages.getGet one HubSpot ticket pipeline stageread
  • hubspot_tickets.pipeline_stages.listList the stages of a HubSpot ticket pipelineread
  • hubspot_tickets.pipeline_stages.replaceReplace a stage in a HubSpot ticket pipelinewrite
  • hubspot_tickets.pipeline_stages.updateUpdate a stage in a HubSpot ticket pipelinewrite
  • hubspot_tickets.pipelines.archiveArchive a HubSpot ticket pipelinedestructive
  • hubspot_tickets.pipelines.auditRead a HubSpot ticket pipeline's audit trailread
  • hubspot_tickets.pipelines.createCreate a HubSpot ticket pipelinewrite
  • hubspot_tickets.pipelines.getGet one HubSpot ticket pipelineread
  • hubspot_tickets.pipelines.listList HubSpot ticket pipelinesread
  • hubspot_tickets.pipelines.replaceReplace a HubSpot ticket pipelinewrite
  • hubspot_tickets.pipelines.updateUpdate a HubSpot ticket pipelinewrite
  • hubspot_tickets.properties.archiveArchive a HubSpot ticket propertydestructive
  • hubspot_tickets.properties.batch_archiveArchive a batch of HubSpot ticket propertiesdestructive
  • hubspot_tickets.properties.batch_createCreate a batch of HubSpot ticket propertieswrite
  • hubspot_tickets.properties.batch_readRead a batch of HubSpot ticket property definitionsread
  • hubspot_tickets.properties.createCreate a HubSpot ticket propertywrite
  • hubspot_tickets.properties.getGet one HubSpot ticket property definitionread
  • hubspot_tickets.properties.listList the properties a HubSpot ticket carriesread
  • hubspot_tickets.properties.updateUpdate a HubSpot ticket propertywrite
  • hubspot_tickets.property_groups.archiveArchive a HubSpot ticket property groupdestructive
  • hubspot_tickets.property_groups.createCreate a HubSpot ticket property groupwrite
  • hubspot_tickets.property_groups.getGet one HubSpot ticket property groupread
  • hubspot_tickets.property_groups.listList HubSpot ticket property groupsread
  • hubspot_tickets.property_groups.updateUpdate a HubSpot ticket property groupwrite
Ticketing15
  • hubspot_tickets.tickets.archiveArchive a HubSpot ticketdestructive
  • hubspot_tickets.tickets.batch_archiveArchive a batch of HubSpot ticketsdestructive
  • hubspot_tickets.tickets.batch_createCreate a batch of HubSpot ticketswrite
  • hubspot_tickets.tickets.batch_readRead a batch of HubSpot ticketsread
  • hubspot_tickets.tickets.batch_updateUpdate a batch of HubSpot ticketswrite
  • hubspot_tickets.tickets.batch_upsertCreate or update a batch of HubSpot ticketswrite
  • hubspot_tickets.tickets.createCreate a HubSpot ticketwrite
  • hubspot_tickets.tickets.create_rawCreate a HubSpot ticket from a raw property mapwrite
  • hubspot_tickets.tickets.gdpr_deletePermanently delete a HubSpot ticket (GDPR)destructive
  • hubspot_tickets.tickets.getGet one HubSpot ticketread
  • hubspot_tickets.tickets.listList HubSpot ticketsread
  • hubspot_tickets.tickets.mergeMerge two HubSpot ticketsdestructive
  • hubspot_tickets.tickets.searchSearch HubSpot ticketsread
  • hubspot_tickets.tickets.updateUpdate a HubSpot ticketwrite
  • hubspot_tickets.tickets.update_rawUpdate a HubSpot ticket from a raw property mapwrite
Engagements14
  • hubspot_tickets.notes.archiveArchive a HubSpot notedestructive
  • hubspot_tickets.notes.batch_archiveArchive a batch of HubSpot notesdestructive
  • hubspot_tickets.notes.batch_createCreate a batch of HubSpot noteswrite
  • hubspot_tickets.notes.batch_readRead a batch of HubSpot notesread
  • hubspot_tickets.notes.batch_updateUpdate a batch of HubSpot noteswrite
  • hubspot_tickets.notes.batch_upsertCreate or update a batch of HubSpot noteswrite
  • hubspot_tickets.notes.createCreate a HubSpot notewrite
  • hubspot_tickets.notes.create_rawCreate a HubSpot note from a raw property mapwrite
  • hubspot_tickets.notes.getGet one HubSpot noteread
  • hubspot_tickets.notes.listList HubSpot notesread
  • hubspot_tickets.notes.mergeMerge two HubSpot notesdestructive
  • hubspot_tickets.notes.searchSearch HubSpot notesread
  • hubspot_tickets.notes.updateUpdate a HubSpot notewrite
  • hubspot_tickets.notes.update_rawUpdate a HubSpot note from a raw property mapwrite
Associations13
  • hubspot_tickets.association_labels.createCreate an association label from ticketswrite
  • hubspot_tickets.association_labels.deleteDelete an association label from ticketsdestructive
  • hubspot_tickets.association_labels.listList the association labels available from ticketsread
  • hubspot_tickets.association_labels.updateRename an association label from ticketswrite
  • hubspot_tickets.associations.batch_archiveRemove associations for a batch of ticketsdestructive
  • hubspot_tickets.associations.batch_archive_labelsRemove specific association labels for a batch of ticketsdestructive
  • hubspot_tickets.associations.batch_createAssociate a batch of tickets using labelswrite
  • hubspot_tickets.associations.batch_create_defaultAssociate a batch of tickets using default labelswrite
  • hubspot_tickets.associations.batch_readRead associations for a batch of ticketsread
  • hubspot_tickets.associations.create_defaultAssociate a ticket with another recordwrite
  • hubspot_tickets.associations.create_labelledAssociate a ticket with another record using a labelwrite
  • hubspot_tickets.associations.deleteRemove every association between a ticket and a recorddestructive
  • hubspot_tickets.associations.listList a ticket's associationsread

Questions

The HubSpot Tickets MCP server, answered.

Is there a HubSpot Tickets MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 71 HubSpot Tickets actions across metadata, ticketing, engagements and associations, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by HubSpot.

Does HubSpot have its own MCP server?

HubSpot runs a remote MCP server for CRM data, tickets included, at mcp.hubspot.com, signed in with OAuth, and a separate local developer MCP server in its CLI. (HubSpot's documentation, checked 22 October 2026.) Use HubSpot's server when one person wants to work in HubSpot Tickets from their own AI client. Use actionlake when you also want HubSpot Tickets behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across HubSpot Tickets and another system.

What do I need to connect HubSpot Tickets?

Your own HubSpot Tickets OAuth app, registered with HubSpot Tickets (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no HubSpot Tickets app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "hubspot_tickets" } lists exactly what to paste.

Can an AI agent delete or change things in HubSpot Tickets?

Only if its key allows it, and only with an explicit confirmation. 16 HubSpot Tickets actions are destructive, including archive a HubSpot note, archive a batch of HubSpot notes and archive a HubSpot ticket. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my HubSpot Tickets API limit?

actionlake paces every call to the limits in the HubSpot Tickets service file: 110 calls per 10 seconds and 5 a second per connection. Repeated reads are answered from cache (24 HubSpot Tickets actions can be), which never reaches HubSpot Tickets.

What does a HubSpot Tickets action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (13 HubSpot Tickets actions page). Cache hits, searches, dry runs and calls HubSpot Tickets refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which HubSpot Tickets API does it cover?

The HubSpot Tickets API v3 at api.hubapi.com. It is built from HubSpot Tickets's documentation as read on 15 September 2026. 71 actions in 4 areas, each one in the signed service file (version 2.0.0).

Does actionlake keep my HubSpot Tickets data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your HubSpot Tickets credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent HubSpot Tickets today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.