atmon docs

REFERENCE/TOOLKITS/HUBSPOT.MD

HubSpot

CRM and sales pipeline. Manage contacts, companies, deals, and tickets, log notes and calls, link records, and manage lists.

PropertyValue
Slughubspot
Definition version0.1.0
Base URLhttps://api.hubapi.com
Auth schemesoauth2
Action tools34
By class13 read, 16 write, 5 destructive
Triggers0
Provider rate limitnot declared, so outbound calls are unpaced

Measured routing accuracy

50 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 34 cases written by hand and 16 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-119/5038.0%
top-844/5088.0%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

oauth2

PropertyValue
Authorization URLhttps://app.hubspot.com/oauth/authorize
Token URLhttps://api.hubapi.com/oauth/v1/token
Default scopescrm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.companies.write, crm.objects.deals.read, crm.objects.deals.write, tickets, crm.objects.owners.read
Refresh tokensyes, the refresh daemon renews ahead of expiry

Tools

34 action tools. The catalog-wide slug is hubspot.<tool>, which is what search_tools returns and call_tool takes.

hubspot.create_contact

Create a new HubSpot contact record for a person: a lead, prospect, or customer in the CRM. Use when the user wants to add someone to HubSpot, not to send them an email or bill them. Requires an email address; name, phone, job title, and lifecycle stage are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/contacts.

Arguments:

ArgumentTypeRequiredNotes
companystringnoFree-text company name shown on the contact record.
emailstringyesContact's email address, e.g. "jane@example.com".
firstnamestringnoContact's first name.
jobtitlestringnoContact's job title.
lastnamestringnoContact's last name.
lifecyclestagestringnoLifecycle stage, e.g. "lead", "marketingqualifiedlead", "opportunity", "customer".
phonestringnoContact's phone number.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.companystring
properties.emailstring
properties.firstnamestring
properties.jobtitlestring
properties.lastnamestring
properties.lifecyclestagestring
properties.phonestring
updatedAtstring (date-time)

Also retrieved by: "add a new lead to hubspot", "add someone to the crm", "put this person in hubspot", "register a new prospect", "build a crm profile for someone".

hubspot.get_contact

Get one HubSpot contact's full record by id: email, name, phone, company, job title, and lifecycle stage. Use when the user names a specific person already in the CRM. For finding a contact by name or email use search_contacts instead.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/objects/contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesHubSpot contact id.
propertiesstringnoComma-separated property names to return, e.g. "email,firstname,lastname". Omit for the default property set.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
createdAtstring (date-time)
idstring
propertiesobject
properties.companystring
properties.emailstring
properties.firstnamestring
properties.jobtitlestring
properties.lastnamestring
properties.lifecyclestagestring
properties.phonestring
updatedAtstring (date-time)

Also retrieved by: "pull up someone's hubspot profile", "look up this person in the crm", "show me what we have on this lead", "check somebody's file in hubspot".

hubspot.update_contact

Update fields on an existing HubSpot contact: name, phone, job title, lifecycle stage, or company. Use when the user wants to edit or correct a contact's record, not create a new one.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /crm/v3/objects/contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
companystringnoFree-text company name shown on the contact record.
contact_idstringyesHubSpot contact id.
emailstringnoContact's email address.
firstnamestringnoContact's first name.
jobtitlestringnoContact's job title.
lastnamestringnoContact's last name.
lifecyclestagestringnoLifecycle stage, e.g. "opportunity", "customer".
phonestringnoContact's phone number.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.companystring
properties.emailstring
properties.firstnamestring
properties.jobtitlestring
properties.lastnamestring
properties.lifecyclestagestring
properties.phonestring
updatedAtstring (date-time)

Also retrieved by: "fix this person's phone number in hubspot", "change someone's job title on file", "edit a lead's details", "correct info on a crm profile".

hubspot.delete_contact

Permanently delete a HubSpot contact record. Use when the user wants to remove, purge, or erase someone from the CRM entirely. This removes the contact and its activity history; it does not unsubscribe them from email or touch a Stripe billing customer.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /crm/v3/objects/contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesHubSpot contact id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "wipe this person from the crm for good", "purge someone's hubspot record entirely", "get rid of this lead permanently", "erase someone from the database entirely".

hubspot.search_contacts

Search HubSpot contacts by name, email, or free text across the CRM. Use when the user describes a person rather than naming a known contact id, for example finding everyone at a company or matching an email address.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/contacts/search.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.
querystringyesFree-text search over name, email, phone, and company.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.companystring
results[].properties.emailstring
results[].properties.firstnamestring
results[].properties.lastnamestring
results[].properties.phonestring
totalinteger

Also retrieved by: "find everyone at a certain company", "look up a lead by their email", "who do we have on file matching this name", "hunt down a person's crm profile".

hubspot.list_contacts

List HubSpot contacts in the CRM, most recently created first, paginated. Use for browsing or exporting the contact database rather than looking for one specific person.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/objects/contacts.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.emailstring
results[].properties.firstnamestring
results[].properties.lastnamestring

Also retrieved by: "show me every lead in the system", "pull up the whole crm database", "browse who's in the crm", "export all our leads".

hubspot.merge_contacts

Merge two HubSpot contact records into one, keeping the primary contact and folding the duplicate's properties and activity history into it. Use when the user has found a duplicate contact. Irreversible: the merged-away contact id stops existing.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/contacts/merge.

Arguments:

ArgumentTypeRequiredNotes
duplicate_contact_idstringyesId of the contact that gets folded in and stops existing.
primary_contact_idstringyesId of the contact that survives the merge.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.emailstring
properties.firstnamestring
properties.lastnamestring

Also retrieved by: "combine two duplicate leads into one", "fold this duplicate profile into the main one", "treat these two as the same person", "collapse two crm entries together".

hubspot.create_company

Create a new HubSpot company record: an organization or account in the CRM, distinct from an individual contact. Use when the user wants to add a business, not a person, to HubSpot. Requires a name; domain, industry, and location are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/companies.

Arguments:

ArgumentTypeRequiredNotes
citystringnoCity the company is based in.
domainstringnoCompany's primary website domain, e.g. "acme.com".
industrystringnoIndustry, e.g. "Computer Software".
namestringyesCompany name.
phonestringnoCompany's main phone number.
statestringnoState or region the company is based in.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.citystring
properties.domainstring
properties.industrystring
properties.namestring
properties.phonestring
properties.statestring

Also retrieved by: "add a new business to the crm", "register an organization in hubspot", "put this account into the system", "log a new client's business".

hubspot.get_company

Get one HubSpot company's full record by id: name, domain, industry, phone, and location. Use when the user names a specific organization already in the CRM.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/objects/companies/{{params.company_id}}.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesHubSpot company id.
propertiesstringnoComma-separated property names to return, e.g. "name,domain". Omit for the default property set.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
createdAtstring (date-time)
idstring
propertiesobject
properties.citystring
properties.domainstring
properties.industrystring
properties.namestring
properties.phonestring
properties.statestring
updatedAtstring (date-time)

Also retrieved by: "pull up this organization's crm profile", "show me what we know about this business", "look up an account's details".

hubspot.update_company

Update fields on an existing HubSpot company: name, domain, industry, phone, or location. Use when the user wants to edit an organization's record.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /crm/v3/objects/companies/{{params.company_id}}.

Arguments:

ArgumentTypeRequiredNotes
citystringnoCity the company is based in.
company_idstringyesHubSpot company id.
domainstringnoCompany's primary website domain.
industrystringnoIndustry, e.g. "Computer Software".
namestringnoCompany name.
phonestringnoCompany's main phone number.
statestringnoState or region the company is based in.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.domainstring
properties.industrystring
properties.namestring
updatedAtstring (date-time)

Also retrieved by: "fix the industry on this organization", "change an account's phone number", "edit a business's location on file".

hubspot.delete_company

Permanently delete a HubSpot company record and its history. Use when the user wants to remove a business from the CRM entirely.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /crm/v3/objects/companies/{{params.company_id}}.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesHubSpot company id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "remove this business from the crm for good", "purge an account entirely", "get rid of an organization's record".

hubspot.search_companies

Search HubSpot companies by name, domain, or free text. Use when the user describes an organization rather than naming a known company id.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/companies/search.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.
querystringyesFree-text search over name, domain, and industry.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.domainstring
results[].properties.industrystring
results[].properties.namestring
totalinteger

Also retrieved by: "find a business by its website", "look up an account by name", "hunt down which organization this is".

hubspot.create_deal

Create a new HubSpot deal: an opportunity moving through a sales pipeline toward a close date. Use when the user wants to open, start, or log a sale or piece of revenue, not a support ticket or an invoice. Requires a deal name and stage; pipeline, amount, and close date are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/deals.

Arguments:

ArgumentTypeRequiredNotes
amountstringnoDeal value as a decimal string, e.g. "15000.00".
closedatestringnoExpected or actual close date, RFC 3339.
dealnamestringyesDeal's name, e.g. "Acme Corp - annual plan".
dealstagestringyesPipeline stage id the deal starts in. Use list_deal_pipelines to see valid stage ids.
pipelinestringnoPipeline id the deal belongs to. Omit for the default pipeline.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.amountstring
properties.closedatestring
properties.dealnamestring
properties.dealstagestring
properties.pipelinestring

Also retrieved by: "open a new sales opportunity", "start tracking a potential sale", "log a piece of revenue in the pipeline", "kick off a new opportunity for this account".

hubspot.get_deal

Get one HubSpot deal's full record by id: name, amount, stage, pipeline, and close date. Use when the user names a specific deal or opportunity.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/objects/deals/{{params.deal_id}}.

Arguments:

ArgumentTypeRequiredNotes
deal_idstringyesHubSpot deal id.
propertiesstringnoComma-separated property names to return, e.g. "dealname,amount,dealstage". Omit for the default property set.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
createdAtstring (date-time)
idstring
propertiesobject
properties.amountstring
properties.closedatestring
properties.dealnamestring
properties.dealstagestring
properties.pipelinestring
updatedAtstring (date-time)

Also retrieved by: "check the status of this opportunity", "pull up details on a sale in progress", "show me where this opportunity stands".

hubspot.update_deal

Update fields on an existing HubSpot deal: name, amount, stage, pipeline, or close date. Use when the user wants to advance, reprice, or reschedule a deal, for example moving it to the next pipeline stage.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /crm/v3/objects/deals/{{params.deal_id}}.

Arguments:

ArgumentTypeRequiredNotes
amountstringnoDeal value as a decimal string.
closedatestringnoExpected or actual close date, RFC 3339.
deal_idstringyesHubSpot deal id.
dealnamestringnoDeal's name.
dealstagestringnoPipeline stage id to move the deal to.
pipelinestringnoPipeline id the deal belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.amountstring
properties.dealnamestring
properties.dealstagestring
updatedAtstring (date-time)

Also retrieved by: "move this opportunity to the next stage", "reprice a sale in the pipeline", "push back the close date on this opportunity", "advance this to negotiation".

hubspot.delete_deal

Permanently delete a HubSpot deal record. Use when the user wants to remove an opportunity from the pipeline entirely, rather than mark it lost or closed.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /crm/v3/objects/deals/{{params.deal_id}}.

Arguments:

ArgumentTypeRequiredNotes
deal_idstringyesHubSpot deal id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "scrap this opportunity for good", "remove a sale from the pipeline entirely", "wipe this opportunity from the system".

hubspot.search_deals

Search HubSpot deals by name or free text across the sales pipeline. Use when the user describes a deal rather than naming a known deal id.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/deals/search.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.
querystringyesFree-text search over deal name.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.amountstring
results[].properties.dealnamestring
results[].properties.dealstagestring
totalinteger

Also retrieved by: "find an opportunity by name", "look up a sale in the pipeline", "hunt down a specific opportunity".

hubspot.list_deal_pipelines

List the sales pipelines configured in HubSpot and the stages within each one. Use when the user asks what stages a deal can move through, or which pipeline a team uses, before creating or moving a deal.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/pipelines/deals.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
resultsarray of object
results[].displayOrderinteger
results[].idstring
results[].labelstring
results[].stagesarray of object
results[].stages[].displayOrderinteger
results[].stages[].idstring
results[].stages[].labelstring

Also retrieved by: "what stages does our sales process have", "show the sales stages set up in hubspot", "what steps does an opportunity move through", "how many phases does a sale pass through".

hubspot.create_ticket

Create a new HubSpot support ticket: a customer service case in the CRM's ticket pipeline. Use when the user wants to open, file, or log a customer support issue, not an engineering bug in Jira or Linear. Requires a subject; content and priority are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/tickets.

Arguments:

ArgumentTypeRequiredNotes
contentstringnoTicket body describing the issue.
pipeline_stagestringnoTicket pipeline stage id to start in. Omit for the default pipeline's first stage.
prioritystringnoPriority, e.g. "LOW", "MEDIUM", "HIGH".
subjectstringyesOne-line ticket subject.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.contentstring
properties.hs_pipeline_stagestring
properties.hs_ticket_prioritystring
properties.subjectstring

Also retrieved by: "open a customer support case", "file a service issue for a client", "log a complaint from a customer", "start a help desk case".

hubspot.get_ticket

Get one HubSpot support ticket's full record by id: subject, content, pipeline stage, and priority. Use when the user names a specific support ticket.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/objects/tickets/{{params.ticket_id}}.

Arguments:

ArgumentTypeRequiredNotes
propertiesstringnoComma-separated property names to return, e.g. "subject,content,hs_ticket_priority". Omit for the default property set.
ticket_idstringyesHubSpot ticket id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
createdAtstring (date-time)
idstring
propertiesobject
properties.contentstring
properties.hs_pipeline_stagestring
properties.hs_ticket_prioritystring
properties.subjectstring
updatedAtstring (date-time)

Also retrieved by: "pull up a customer's support case", "check the status of a service issue", "show me what this complaint says".

hubspot.update_ticket

Update fields on an existing HubSpot support ticket: subject, content, pipeline stage, or priority. Use when the user wants to move a ticket forward or edit its details.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /crm/v3/objects/tickets/{{params.ticket_id}}.

Arguments:

ArgumentTypeRequiredNotes
contentstringnoTicket body describing the issue.
pipeline_stagestringnoTicket pipeline stage id to move the ticket to.
prioritystringnoPriority, e.g. "LOW", "MEDIUM", "HIGH".
subjectstringnoOne-line ticket subject.
ticket_idstringyesHubSpot ticket id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.hs_pipeline_stagestring
properties.hs_ticket_prioritystring
properties.subjectstring
updatedAtstring (date-time)

Also retrieved by: "move a support case to the next stage", "change the priority on a service issue", "edit the details on a complaint".

hubspot.delete_ticket

Permanently delete a HubSpot support ticket record. Use when the user wants to remove a customer service case from the CRM entirely.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /crm/v3/objects/tickets/{{params.ticket_id}}.

Arguments:

ArgumentTypeRequiredNotes
ticket_idstringyesHubSpot ticket id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "remove a support case from the system for good", "purge a service issue entirely", "wipe a customer complaint record".

hubspot.search_tickets

Search HubSpot support tickets by subject or free text. Use when the user describes a customer issue rather than naming a known ticket id.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /crm/v3/objects/tickets/search.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.
querystringyesFree-text search over subject and content.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.hs_pipeline_stagestring
results[].properties.hs_ticket_prioritystring
results[].properties.subjectstring
totalinteger

Also retrieved by: "find a support case by subject", "look up a service issue", "hunt down a customer complaint".

hubspot.create_note

Log a note on HubSpot's activity timeline: free-text commentary about a contact, company, deal, or ticket. Use when the user wants to jot down context in the CRM, not send a message. Link the note to a record afterward with create_association.

Class write (writes, no confirmation needed). Scopes crm.objects.notes.write. Calls POST /crm/v3/objects/notes.

Arguments:

ArgumentTypeRequiredNotes
contentstringyesThe note's text.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.hs_note_bodystring

Also retrieved by: "jot down some context on this account", "leave a comment on a crm record", "write down what happened on a call", "save some background on this lead".

hubspot.create_task

Create a HubSpot task: a to-do reminder for a sales or support rep, with a subject, due date, and priority. Use when the user wants a follow-up reminder in the CRM, distinct from a Jira ticket or a Linear issue.

Class write (writes, no confirmation needed). Scopes crm.objects.tasks.write. Calls POST /crm/v3/objects/tasks.

Arguments:

ArgumentTypeRequiredNotes
bodystringnoLonger task detail or instructions.
due_datestringnoWhen the task is due, RFC 3339.
owner_idstringnoHubSpot owner id the task is assigned to. See list_owners.
prioritystringnoPriority, e.g. "LOW", "MEDIUM", "HIGH".
subjectstringyesOne-line task title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.hs_task_bodystring
properties.hs_task_prioritystring
properties.hs_task_statusstring
properties.hs_task_subjectstring

Also retrieved by: "set a follow-up reminder for a rep", "schedule a to-do on this account", "remind someone to check back in", "put a reminder on my plate for this lead".

hubspot.update_task

Update a HubSpot task's subject, body, due date, priority, or status. Use when the user wants to reschedule a follow-up or mark it done.

Class write (writes, no confirmation needed). Scopes crm.objects.tasks.write. Calls PATCH /crm/v3/objects/tasks/{{params.task_id}}.

Arguments:

ArgumentTypeRequiredNotes
bodystringnoLonger task detail or instructions.
due_datestringnoWhen the task is due, RFC 3339.
prioritystringnoPriority, e.g. "LOW", "MEDIUM", "HIGH".
statusstringnoTask status, e.g. "NOT_STARTED", "IN_PROGRESS", "COMPLETED".
subjectstringnoOne-line task title.
task_idstringyesHubSpot task id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
propertiesobject
properties.hs_task_statusstring
properties.hs_task_subjectstring
updatedAtstring (date-time)

Also retrieved by: "mark a follow-up as done", "push back a reminder's due date", "reschedule a rep's to-do".

hubspot.list_tasks

List HubSpot tasks, most recently created first, paginated. Use for browsing a rep's outstanding to-dos rather than looking for one specific task.

Class read (reads only). Scopes crm.objects.tasks.read. Calls GET /crm/v3/objects/tasks.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
limitintegernoPage size, default 10.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].idstring
results[].propertiesobject
results[].properties.hs_task_statusstring
results[].properties.hs_task_subjectstring

Also retrieved by: "show me what's on my plate today", "what follow-ups are still open", "browse outstanding reminders", "check a rep's open to-dos".

hubspot.log_call

Log a phone call on HubSpot's activity timeline: the call's notes, direction, and duration. Use when the user wants to record that a call happened, not to place or receive one. Link the call to a contact afterward with create_association.

Class write (writes, no confirmation needed). Scopes crm.objects.calls.write. Calls POST /crm/v3/objects/calls.

Arguments:

ArgumentTypeRequiredNotes
directionstringnoCall direction, "INBOUND" or "OUTBOUND".
duration_msintegernoCall duration in milliseconds.
notesstringyesSummary of what the call covered.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdAtstring (date-time)
idstring
propertiesobject
properties.hs_call_bodystring
properties.hs_call_directionstring
properties.hs_call_durationstring

Also retrieved by: "record that a phone conversation happened", "note down what we discussed on the phone", "save a conversation summary to the timeline".

hubspot.create_association

Link two HubSpot records together, such as a contact to a company or a deal to a contact, using HubSpot's default association between the two object types. Use when the user wants to connect records that already exist in the CRM.

Class write (writes, no confirmation needed). Scopes crm.objects.contacts.write. Calls PUT /crm/v4/objects/{{params.from_object_type}}/{{params.from_object_id}}/associations/default/{{params.to_object_type}}/{{params.to_object_id}}.

Arguments:

ArgumentTypeRequiredNotes
from_object_idstringyesId of the source record.
from_object_typestringyesObject type of the source record, e.g. "contacts", "companies", "deals", "tickets", "notes", "tasks", "calls".
to_object_idstringyesId of the target record.
to_object_typestringyesObject type of the target record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
fromObjectTypeIdstring
labelsarray of string
toObjectTypeIdstring

Also retrieved by: "connect this person to their employer", "link a sale to the person who owns it", "tie this record to another one", "attach a contact to a company".

hubspot.remove_association

Remove the link between two HubSpot records without deleting either one. Use when the user wants to disconnect a contact, company, deal, or ticket from another record.

Class write (writes, no confirmation needed). Scopes crm.objects.contacts.write. Calls DELETE /crm/v4/objects/{{params.from_object_type}}/{{params.from_object_id}}/associations/{{params.to_object_type}}/{{params.to_object_id}}.

Arguments:

ArgumentTypeRequiredNotes
from_object_idstringyesId of the source record.
from_object_typestringyesObject type of the source record, e.g. "contacts", "deals".
to_object_idstringyesId of the target record.
to_object_typestringyesObject type of the target record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
removedboolean

Also retrieved by: "unlink two records without deleting them", "disconnect a person from an account", "take away a link between two entries".

hubspot.list_association_types

List the association types HubSpot allows between two kinds of records, for example the ways a contact can be linked to a deal. Use when create_association needs a label other than the default.

Class read (reads only). Scopes crm.objects.contacts.read. Calls GET /crm/v4/associations/{{params.from_object_type}}/{{params.to_object_type}}/labels.

Arguments:

ArgumentTypeRequiredNotes
from_object_typestringyesObject type of the source record, e.g. "contacts".
to_object_typestringyesObject type of the target record, e.g. "deals".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
resultsarray of object
results[].categorystring
results[].labelstring
results[].typeIdinteger

Also retrieved by: "what ways can these two records be linked", "show the relationship options between a contact and a deal", "find out how a company and a deal can connect".

hubspot.add_contact_to_list

Add one or more HubSpot contacts to a marketing or active list by list id. Use when the user wants to build an audience or segment for a campaign, not add a contact to the CRM itself.

Class write (writes, no confirmation needed). Scopes crm.lists.write. Calls PUT /crm/v3/lists/{{params.list_id}}/memberships/add.

Arguments:

ArgumentTypeRequiredNotes
contact_idsarray of stringyesContact ids to add to the list.
list_idstringyesHubSpot list id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
recordIdsProcessedarray of string

Also retrieved by: "build an audience for a campaign", "put someone into a marketing segment", "enroll a lead in a campaign audience", "grow a segment with a new lead".

hubspot.remove_contact_from_list

Remove one or more HubSpot contacts from a list by list id, without deleting the contacts themselves. Use when the user wants to shrink a segment or unenroll someone from a campaign audience.

Class write (writes, no confirmation needed). Scopes crm.lists.write. Calls PUT /crm/v3/lists/{{params.list_id}}/memberships/remove.

Arguments:

ArgumentTypeRequiredNotes
contact_idsarray of stringyesContact ids to remove from the list.
list_idstringyesHubSpot list id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
recordIdsProcessedarray of string

Also retrieved by: "take someone off a campaign segment", "drop a lead from a marketing audience", "shrink a segment by pulling someone out", "unenroll someone from a campaign".

hubspot.list_owners

List the HubSpot users who can own contacts, companies, deals, and tickets, for example to find a sales rep's owner id before assigning a record. Use when the user asks who a record's owner could be, not who is a member of a Slack channel or Linear team.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /crm/v3/owners.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoPagination cursor from a previous response's paging.next.after.
emailstringnoFilter to the owner with this email address.
limitintegernoPage size, default 100.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
pagingobject
paging.nextobject
paging.next.afterstring
resultsarray of object
results[].emailstring
results[].firstNamestring
results[].idstring
results[].lastNamestring

Also retrieved by: "who can be assigned as the rep on a record", "show me the sales reps in the system", "find someone's rep id before assigning a deal".