> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paradime.io/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot Tool

> The HubSpot Tool connects DinoAI to your CRM so it can search contacts, companies, deals, and tickets, create and update records, and add notes.

export const ToolIds = ({ids = []}) => <div style={{
  margin: '1.25rem 0'
}}>
    <p style={{
  fontSize: '13px',
  fontWeight: 600,
  color: '#6B7280',
  margin: '0 0 8px'
}}>
      Allow-list ids — use in a Programmable Agent's <code>tools.list</code>:
    </p>
    <div style={{
  display: 'flex',
  flexWrap: 'wrap',
  gap: '6px'
}}>
      {ids.map(id => <code key={id} style={{
  fontSize: '12.5px',
  padding: '2px 8px',
  borderRadius: '6px',
  background: 'rgba(114,106,227,0.08)',
  border: '1px solid rgba(114,106,227,0.2)',
  color: '#5943D6'
}}>
          {id}
        </code>)}
    </div>
  </div>;

export const ToolMeta = ({copilot = false, agent = false, backedBy, name, href}) => {
  const pill = on => ({
    display: 'inline-flex',
    alignItems: 'center',
    gap: '5px',
    padding: '2px 10px',
    borderRadius: '9999px',
    fontSize: '13px',
    fontWeight: 500,
    border: '1px solid',
    borderColor: on ? 'rgba(114,106,227,0.35)' : 'rgba(128,128,140,0.22)',
    background: on ? 'rgba(114,106,227,0.12)' : 'transparent',
    color: on ? '#5943D6' : '#9AA0AA'
  });
  return <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    alignItems: 'center',
    gap: '8px',
    margin: '0 0 1.5rem'
  }}>
      <span style={{
    fontSize: '13px',
    fontWeight: 600,
    color: '#6B7280'
  }}>Available in</span>
      <span style={pill(copilot)}>{copilot ? '✓' : '—'} Copilot</span>
      <span style={pill(agent)}>{agent ? '✓' : '—'} Agent</span>
      {backedBy === 'native' && <span style={{
    fontSize: '13px',
    color: '#9AA0AA'
  }}>· Built-in</span>}
      {(backedBy === 'integration' || backedBy === 'connection') && name && <span style={{
    fontSize: '13px',
    color: '#6B7280'
  }}>
          · Backed by {href ? <a href={href}>{name}</a> : name} {backedBy}
        </span>}
    </div>;
};

<ToolMeta copilot agent backedBy="integration" name="HubSpot" href="/integrations/connecting-integrations" />

<ToolIds ids={["search_hubspot_objects", "get_hubspot_object", "list_hubspot_properties", "list_hubspot_owners", "get_hubspot_associations", "create_hubspot_object", "update_hubspot_object", "add_hubspot_note"]} />

The HubSpot Tool lets DinoAI work with your CRM records the way it already works with Jira tickets and Notion pages: looking up the customers behind the data, and writing back what it finds.

It is most useful when the question spans your warehouse and your CRM, such as reconciling a revenue model against the deals that produced it, or annotating an account with what a data investigation turned up.

<Info>
  **Requires the HubSpot integration.** Connect it under **Settings → Integrations**. The **Personal** card connects your own HubSpot account for the copilot in the Code IDE; the **DinoAI agent** card connects a workspace-level account for Slack, Programmable, and Bolt pipeline agents. See [Connecting integrations](/integrations/connecting-integrations).
</Info>

#### Capabilities

Every tool works across the standard CRM objects (contacts, companies, deals, and tickets) and accepts custom object type ids, so the same set covers your whole CRM.

| Action               | What DinoAI can do                                                                                          |
| -------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Search objects**   | Find records of any object type using HubSpot's own filters, returning a useful set of properties per type  |
| **Get an object**    | Fetch a single record by id                                                                                 |
| **List properties**  | List the properties defined for an object type, so DinoAI uses your real property names instead of guessing |
| **List owners**      | List HubSpot owners, to resolve an owner id to a person                                                     |
| **Get associations** | Read the records associated with one record, for example the contacts on a deal                             |
| **Create an object** | Create a record of any object type                                                                          |
| **Update an object** | Update properties on an existing record                                                                     |
| **Add a note**       | Add a note and attach it to a record                                                                        |

<Info>
  **Every HubSpot call asks first.** Reads and writes alike surface an approval card in the chat panel before they run, the same way Jira and Linear calls do. Writes use HubSpot's default associations, and when HubSpot rejects a call (for example an unknown property) it passes the reason back so DinoAI can correct itself rather than failing silently.
</Info>

#### Using the HubSpot Tool

1. Connect HubSpot under **Settings → Integrations**, on the **Personal** card for the copilot or the **DinoAI agent** card for agents.
2. Open DinoAI and describe what you need in terms of your CRM, naming the object type where it helps.
3. Approve each HubSpot call as DinoAI makes it.

#### Example use cases

**Finding the deals behind a number**

```
Find the HubSpot deals closing this quarter and who owns them.
```

**Result:** DinoAI searches deals with a close-date filter, resolves the owner ids to people, and lists them.

**Reconciling the CRM against your warehouse**

```
Compare the accounts in dim_customers with HubSpot companies and tell me which ones are missing.
```

**Result:** DinoAI queries the model with the warehouse tool, searches the matching HubSpot companies, and reports the gaps.

**Writing findings back**

```
Add a note to the Acme company record summarising the data quality issues we found in their usage data.
```

**Result:** DinoAI creates the note and attaches it to the record, after asking you to approve the write.

#### Over MCP

The five read-only tools (search, get, list properties, list owners, and get associations) are also available through the [Paradime MCP server](/products/dino-ai/mcp-server/index), so Claude, Cursor, or any other MCP client can query your CRM through Paradime. The write tools are not exposed over MCP, because each one depends on an approval step an MCP client cannot present.

#### Related

* [Tools & Features](/products/dino-ai/tools-and-features/index): the full DinoAI toolset
* [Tools Reference](/products/dino-ai/programmable-agents/tools-reference): the ids to use in an agent's `tools.list`


## Related topics

- [Tools Reference](/products/dino-ai/programmable-agents/tools-reference.md)
- [Changelog](/changelog/overview.md)
- [DinoAI can now read and update HubSpot](/changelog/2026-09-03/hubspot-tools.md)
- [DinoAI Tools](/products/dino-ai/tools-and-features/index.md)
- [Trigger Hightouch Syncs](/guides/orchestrate-data-pipelines/templates/reverse-etl-templates/trigger-hightouch-syncs.md)
