HubSpot CRM Deals
Track the sales pipeline in HubSpot CRM: search deals by stage, owner, amount or close date, read deals with their associated contacts and companies, and create or update deals. Curated from HubSpot's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with HubSpot CRM Deals via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /crm/v3/objects/0-3/search |
searchDeals | Search deals by stage, owner, amount, close date or any property |
| GET | /crm/v3/objects/0-3 |
listDeals | List deals page by page |
| POST | /crm/v3/objects/0-3 |
createDeal | Create a deal |
| GET | /crm/v3/objects/0-3/{dealId} |
getDeal | Get one deal with its properties and associations |
| PATCH | /crm/v3/objects/0-3/{dealId} |
updateDeal | Update a deal, e.g. move it to another stage |
| POST | /crm/v3/objects/0-3/batch/read |
batchReadDeals | Get several deals by id at once |
Authentication
PrivateAppToken
Bearer token — sent as Authorization: Bearer <token>
HubSpot private app access token sent as Authorization: Bearer <token>.
How to get a credential
- In HubSpot, open Settings > Integrations > Private Apps (Super Admin required).
- Click Create a private app and name it (e.g. VX Agents).
- On the Scopes tab, add
crm.objects.deals.readandcrm.objects.deals.write. - Click Create app, then copy the access token (starts with
pat-).
Permissions used
| Scope | Operations |
|---|---|
| crm.objects.deals.read | searchDeals, listDeals, getDeal, batchReadDeals |
| crm.objects.deals.write | createDeal, updateDeal |
Common errors
- 401 Unauthorized: the token is wrong, rotated or missing the
Bearerprefix. Copy it again from the private app. - 403 Forbidden: the private app is missing a scope above (
MISSING_SCOPES). Add it and use the updated token. - 400 Bad Request: unknown property, or a
dealstagethat does not belong to the deal'spipeline. Use internal stage ids. - 429 Too Many Requests: rate limit hit (per 10 seconds and daily); wait and retry.
Store the token as a VX Agents credential (Bearer token); never paste it into chat.
Usage guide
Setup
- Add a HubSpot private app token (scopes
crm.objects.deals.readandcrm.objects.deals.write) as the Bearer credential. - Pin the pipeline and stage ids you use (Settings > Objects > Deals > Pipelines; the default pipeline is
default, stages have internal ids likeappointmentscheduled,closedwon). Pinpropertiestoo, e.g.dealname,amount,dealstage,pipeline,closedate,hubspot_owner_id.
Review the pipeline
searchDealswithfilterGroups, e.g. open deals closing this month:[{"filters":[{"propertyName":"dealstage","operator":"NOT_IN","values":["closedwon","closedlost"]},{"propertyName":"closedate","operator":"LTE","value":"2026-10-31T23:59:59Z"}]}], plus thepropertiesyou need.getDealwithassociations=contacts,companiesto see who the deal is with.batchReadDealsfor up to 100 deal ids at once;listDealsto page through everything (limitmax 100,afterfrompaging.next.after).
Create or move a deal
- Search first so you don't create a duplicate.
- Show the user the deal name, amount, stage and close date and get confirmation.
createDealwithproperties(dealname,pipeline,dealstagerequired in practice;amount,closedate,hubspot_owner_idoptional). To link a contact, addassociations:[{"to":{"id":"<contactId>"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":3}]}](use 5 for a company).- To move a deal or change its value, confirm, then
updateDealwith only the changedproperties(e.g.{"dealstage":"closedwon"}).
Good to know
- Creating or changing deals edits customer data: always confirm
createDealandupdateDealfirst. - Use internal property names and stage ids, not labels. A
dealstagemust belong to the deal'spipeline. amountis a string number in the account currency;closedateis ISO 8601 or Unix milliseconds.searchDealsreturns up to 200 per page and at most 10,000 results; results can lag a few seconds behind writes.- Filters in one group are AND, groups are OR.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “HubSpot CRM Deals” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.