> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `claude plugin marketplace add scalekit-inc/claude-code-authstack && claude plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agentkit`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# HubSpot connector

Connect to HubSpot CRM. Manage contacts, deals, companies, and marketing automation

**Authentication:** OAuth 2.0
**Categories:** Crm, Sales
1. ### Install the SDK

   
     ### Node.js

```bash frame="terminal"
npm install @scalekit-sdk/node
```

     ### Python

```bash frame="terminal"
pip install scalekit
```

   

   Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/)

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

```sh showLineNumbers=false title=".env"
SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
SCALEKIT_CLIENT_ID=<your-client-id>
SCALEKIT_CLIENT_SECRET=<your-client-secret>
```

3. ### Set up the connector

   Register your HubSpot credentials with Scalekit so it handles the token lifecycle. You do this once per environment.

   ## Dashboard setup steps

Register your Scalekit environment with the HubSpot connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

1. ### Set up auth redirects

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** > **Create Connection**. Find **HubSpot** and click **Create**. Copy the redirect URI. It looks like `https:///sso/v1/oauth//callback`.

      > Image: Copy redirect URI from Scalekit dashboard

    - Log in to your [HubSpot developer dashboard](https://developers.hubspot.com/), click **Manage apps**, click **Create app**, and select **Public app**. Do not select **Private app**; Private Apps use static API tokens and do not support OAuth redirect flows, so they do not show the Redirect URL field Scalekit needs. If you already have a HubSpot Public App, open that app instead.

    - Go to **Auth** > **Auth settings** > **Redirect URL**, paste the redirect URI from Scalekit, and click **Save**.

      > Image: Adding redirect URL to HubSpot

    - Under **Auth** > **Auth settings** > **Scopes**, select the required scopes for your application. The scopes you select here must match exactly what you configure in Scalekit. For a read-only CRM enrichment flow that looks up contacts, companies, and deals, use:

      ```text
      crm.objects.contacts.read
      crm.objects.companies.read
      crm.objects.deals.read
      ```

2. ### Get client credentials

    - In your HubSpot app, go to **Auth** > **Auth settings**.

    - Copy your **Client ID** and **Client Secret**.

3. ### Add credentials in Scalekit

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** and open the connection you created.

    - Enter your credentials:
      - **Client ID** (from your HubSpot app)
      - **Client Secret** (from your HubSpot app)
      - **Permissions** (OAuth scope strings such as `crm.objects.contacts.read`, entered exactly as configured in the HubSpot app)

      > Image: Add credentials in Scalekit dashboard

    - Click **Save**.

4. ### Authorize and make your first call

   ### Node.js

```typescript title="quickstart.ts"

const scalekit = new ScalekitClient(
  process.env.SCALEKIT_ENV_URL,
  process.env.SCALEKIT_CLIENT_ID,
  process.env.SCALEKIT_CLIENT_SECRET,
)
const actions = scalekit.actions

const connector = 'hubspot'
const identifier = 'user_123'

// Generate an authorization link for the user
const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
console.log('Authorize HubSpot:', link)
process.stdout.write('Press Enter after authorizing...')
await new Promise(r => process.stdin.once('data', r))

// Make your first call — list CRM owners
const result = await actions.executeTool({
  connector,
  identifier,
  toolName: 'hubspot_owners_list',
  toolInput: {},
})
console.log('HubSpot owners:', result)
```

  ### Python

```python title="quickstart.py"

from scalekit.client import ScalekitClient
from dotenv import load_dotenv
load_dotenv()

scalekit_client = ScalekitClient(
    env_url=os.getenv("SCALEKIT_ENV_URL"),
    client_id=os.getenv("SCALEKIT_CLIENT_ID"),
    client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
)
actions = scalekit_client.actions

connection_name = "hubspot"
identifier = "user_123"

# Generate an authorization link for the user
link_response = actions.get_authorization_link(
    connection_name=connection_name,
    identifier=identifier,
)
print("Authorize HubSpot:", link_response.link)
input("Press Enter after authorizing...")

# Make your first call — list CRM owners
result = actions.execute_tool(
    tool_input={},
    tool_name="hubspot_owners_list",
    connection_name=connection_name,
    identifier=identifier,
)
print("HubSpot owners:", result)
```

## What you can do

Connect this agent connector to let your agent:

- **Manage contacts** — create, update, search, and list contacts; batch create, update, upsert, read, and archive
- **Manage companies and deals** — create and update company records and deals; batch create, update, upsert, read, and archive
- **Manage tickets and tasks** — create and update support tickets; create tasks with due dates and priorities
- **Batch operations with inline associations** — create contacts, companies, deals, or tickets and link them to related records in a single call
- **Log engagements** — record calls, meetings, notes, and emails against any CRM record
- **Search, associate, and extend** — full-text search across all CRM objects, batch-manage associations, list owners, discover properties, and work with custom objects

## Common workflows

export const sectionTitle = 'Common workflows'

## Proxy API call

  ### Node.js

```typescript
const result = await actions.request({
  connectionName: 'hubspot',
  identifier: 'user_123',
  path: '/crm/v3/owners',
  method: 'GET',
});
console.log(result);
```

  ### Python

```python
result = actions.request(
    connection_name='hubspot',
    identifier='user_123',
    path="/crm/v3/owners",
    method="GET"
)
print(result)
```

## Create a contact

  ### Node.js

```typescript
const contact = await actions.executeTool({
  connector: 'hubspot',
  identifier: 'user_123',
  toolName: 'hubspot_contact_create',
  toolInput: {
    email: 'jane.smith@acme.com',
    firstname: 'Jane',
    lastname: 'Smith',
    jobtitle: 'VP of Engineering',
    company: 'Acme Corp',
    lifecyclestage: 'lead',
  },
});
console.log('Created contact ID:', contact.id);
```

  ### Python

```python
contact = actions.execute_tool(
    connection_name='hubspot',
    identifier='user_123',
    tool_name="hubspot_contact_create",
    tool_input={
        "email": "jane.smith@acme.com",
        "firstname": "Jane",
        "lastname": "Smith",
        "jobtitle": "VP of Engineering",
        "company": "Acme Corp",
        "lifecyclestage": "lead",
    },
)
print("Created contact ID:", contact["id"])
```

## Search deals

  ### Node.js

```typescript
const deals = await actions.executeTool({
  connector: 'hubspot',
  identifier: 'user_123',
  toolName: 'hubspot_deals_search',
  toolInput: {
    query: 'enterprise',
    filterGroups: JSON.stringify([{
      filters: [{ propertyName: 'dealstage', operator: 'EQ', value: 'qualifiedtobuy' }]
    }]),
    properties: 'dealname,amount,dealstage,closedate',
    limit: 10,
  },
});
console.log('Found deals:', deals.results);
```

  ### Python

```python

deals = actions.execute_tool(
    connection_name='hubspot',
    identifier='user_123',
    tool_name="hubspot_deals_search",
    tool_input={
        "query": "enterprise",
        "filterGroups": json.dumps([{
            "filters": [{"propertyName": "dealstage", "operator": "EQ", "value": "qualifiedtobuy"}]
        }]),
        "properties": "dealname,amount,dealstage,closedate",
        "limit": 10,
    },
)
print("Found deals:", deals["results"])
```

## Log a call

  ### Node.js

```typescript
const call = await actions.executeTool({
  connector: 'hubspot',
  identifier: 'user_123',
  toolName: 'hubspot_call_log',
  toolInput: {
    hs_call_title: 'Q4 Renewal Discussion',
    hs_timestamp: new Date().toISOString(),
    hs_call_body: 'Discussed renewal terms. Customer is interested in the enterprise plan.',
    hs_call_direction: 'OUTBOUND',
    hs_call_duration: 900000, // 15 minutes in ms
    hs_call_status: 'COMPLETED',
  },
});
console.log('Logged call ID:', call.id);
```

  ### Python

```python
from datetime import datetime, timezone

call = actions.execute_tool(
    connection_name='hubspot',
    identifier='user_123',
    tool_name="hubspot_call_log",
    tool_input={
        "hs_call_title": "Q4 Renewal Discussion",
        "hs_timestamp": datetime.now(timezone.utc).isoformat(),
        "hs_call_body": "Discussed renewal terms. Customer is interested in the enterprise plan.",
        "hs_call_direction": "OUTBOUND",
        "hs_call_duration": 900000,  # 15 minutes in ms
        "hs_call_status": "COMPLETED",
    },
)
print("Logged call ID:", call["id"])
```

## Create and associate a ticket

  ### Node.js

```typescript
// Create the ticket
const ticket = await actions.executeTool({
  connector: 'hubspot',
  identifier: 'user_123',
  toolName: 'hubspot_ticket_create',
  toolInput: {
    subject: 'Cannot export data to CSV',
    hs_pipeline_stage: '1', // "New" stage
    content: 'Customer reports that the CSV export button is unresponsive on the Reports page.',
    hs_ticket_priority: 'HIGH',
  },
});

// Associate with a contact
await actions.executeTool({
  connector: 'hubspot',
  identifier: 'user_123',
  toolName: 'hubspot_association_create',
  toolInput: {
    from_object_type: 'tickets',
    from_object_id: ticket.id,
    to_object_type: 'contacts',
    to_object_id: '12345',
  },
});
console.log('Ticket created and associated:', ticket.id);
```

  ### Python

```python
# Create the ticket
ticket = actions.execute_tool(
    connection_name='hubspot',
    identifier='user_123',
    tool_name="hubspot_ticket_create",
    tool_input={
        "subject": "Cannot export data to CSV",
        "hs_pipeline_stage": "1",  # "New" stage
        "content": "Customer reports that the CSV export button is unresponsive on the Reports page.",
        "hs_ticket_priority": "HIGH",
    },
)

# Associate with a contact
actions.execute_tool(
    connection_name='hubspot',
    identifier='user_123',
    tool_name="hubspot_association_create",
    tool_input={
        "from_object_type": "tickets",
        "from_object_id": ticket["id"],
        "to_object_type": "contacts",
        "to_object_id": "12345",
    },
)
print("Ticket created and associated:", ticket["id"])
```

## Getting resource IDs

export const sectionTitle = 'Getting resource IDs'

Most HubSpot batch and update tools require record IDs. Always fetch IDs from the API — never guess or hard-code them.

| Resource | Tool to get ID | Field in response |
|----------|---------------|-------------------|
| Contact ID | `hubspot_contacts_search` or `hubspot_contacts_list` | `results[].id` |
| Company ID | `hubspot_companies_search` | `results[].id` |
| Deal ID | `hubspot_deals_search` | `results[].id` |
| Ticket ID | `hubspot_tickets_search` | `results[].id` |
| Line Item ID | `hubspot_deal_line_items_get` | `results[].id` |
| Product ID | `hubspot_products_list` | `results[].id` |
| Owner ID | `hubspot_owners_list` | `results[].id` |
| Pipeline ID | `hubspot_deal_pipelines_list` | `results[].id` |
| Pipeline Stage ID | `hubspot_deal_pipelines_list` | `results[].stages[].id` |
| Custom Object Type ID | `hubspot_schemas_list` | `results[].objectTypeId` |
| Custom Object Record ID | `hubspot_custom_object_records_search` | `results[].id` |
| Quote ID | `hubspot_quote_get` | `id` |

### Association type IDs

When linking records, use the correct `association_type_id` for the object pair:

| From → To | Association Type ID |
|-----------|-------------------|
| Contact → Company (primary) | `1` |
| Contact → Company | `279` |
| Contact → Deal | `4` |
| Contact → Ticket | `15` |
| Deal → Contact | `3` |
| Deal → Company | `5` |
| Ticket → Contact | `16` |
| Ticket → Company | `340` |
| Line Item → Deal | `20` |
| Company → Contact | `280` |
| Company → Deal | `6` |

## Tool list

Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first.

## Tool list

### `hubspot_company_create`

Create a new company in HubSpot CRM. Requires a company name as the unique identifier. Supports additional properties like domain, industry, phone, location, and revenue information.

Parameters:

- `name` (`string`, required): Company name (required, serves as primary identifier).
- `domain` (`string`, optional): Company website domain (e.g. `example.com`).
- `phone` (`string`, optional): Primary phone number for the company.
- `industry` (`string`, optional): Industry type of the company.
- `description` (`string`, optional): Company description or overview.
- `city` (`string`, optional): City where the company is located.
- `state` (`string`, optional): State or region where the company is located.
- `country` (`string`, optional): Country where the company is located.
- `annualrevenue` (`number`, optional): Annual revenue of the company in dollars.
- `numberofemployees` (`number`, optional): Number of employees at the company.

### `hubspot_company_get`

Retrieve details of a specific company from HubSpot by company ID. Returns company properties and associated data.

Parameters:

- `company_id` (`string`, required): The unique identifier of the company in HubSpot.
- `properties` (`string`, optional): Comma-separated list of properties to include in the response (e.g. `name,domain,industry,phone`).

### `hubspot_company_update`

Update an existing company in HubSpot CRM by company ID. Provide any fields to update.

Parameters:

- `company_id` (`string`, required): The unique identifier of the company in HubSpot.
- `name` (`string`, optional): Updated name of the company.
- `domain` (`string`, optional): Updated company website domain.
- `phone` (`string`, optional): Updated primary phone number.
- `city` (`string`, optional): Updated city.
- `state` (`string`, optional): Updated state or region.
- `country` (`string`, optional): Updated country.
- `industry` (`string`, optional): Updated industry.
- `description` (`string`, optional): Updated company description.
- `website` (`string`, optional): Full URL of the company website.
- `annualrevenue` (`number`, optional): Updated annual revenue.
- `numberofemployees` (`number`, optional): Updated number of employees.

### `hubspot_companies_search`

Search HubSpot companies using full-text search and pagination. Returns matching companies with specified properties.

Parameters:

- `query` (`string`, optional): Search term for full-text search across company properties.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"industry","operator":"EQ","value":"Technology"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_contact_create`

Create a new contact in HubSpot CRM. Requires an email address as the unique identifier. Supports additional properties like name, company, phone, and lifecycle stage.

Parameters:

- `email` (`string`, required): Primary email address (required, must be unique in HubSpot).
- `firstname` (`string`, optional): Contact's first name.
- `lastname` (`string`, optional): Contact's last name.
- `phone` (`string`, optional): Contact's primary phone number.
- `company` (`string`, optional): Company name where the contact works.
- `jobtitle` (`string`, optional): Contact's job title or role.
- `website` (`string`, optional): Personal or company website URL.
- `lifecyclestage` (`string`, optional): Lifecycle stage: `subscriber`, `lead`, `marketingqualifiedlead`, `salesqualifiedlead`, `opportunity`, `customer`, `evangelist`, or `other`.
- `hs_lead_status` (`string`, optional): Lead status: `NEW`, `OPEN`, `IN_PROGRESS`, `OPEN_DEAL`, `UNQUALIFIED`, `ATTEMPTED_TO_CONTACT`, `CONNECTED`, or `BAD_TIMING`.

### `hubspot_contact_get`

Retrieve details of a specific contact from HubSpot by contact ID. Returns contact properties and associated data.

Parameters:

- `contact_id` (`string`, required): The unique identifier of the contact in HubSpot.
- `properties` (`string`, optional): Comma-separated list of properties to include (e.g. `firstname,lastname,email,company`).

### `hubspot_contact_update`

Update an existing contact in HubSpot CRM by contact ID. Provide any fields to update.

Parameters:

- `contact_id` (`string`, required): The unique identifier of the contact in HubSpot.
- `email` (`string`, optional): Updated email address (must be unique in HubSpot).
- `firstname` (`string`, optional): Updated first name.
- `lastname` (`string`, optional): Updated last name.
- `phone` (`string`, optional): Updated phone number.
- `company` (`string`, optional): Updated company name.
- `jobtitle` (`string`, optional): Updated job title.
- `website` (`string`, optional): Updated website URL.
- `lifecyclestage` (`string`, optional): Updated lifecycle stage (e.g. `lead`, `customer`).
- `hs_lead_status` (`string`, optional): Updated lead status (e.g. `IN_PROGRESS`, `CONNECTED`).

### `hubspot_contacts_list`

Retrieve a list of contacts from HubSpot with filtering and pagination. Returns contact properties and supports cursor-based navigation.

Parameters:

- `properties` (`string`, optional): Comma-separated list of properties to return.
- `limit` (`number`, optional): Number of contacts to return per page (max 100).
- `after` (`string`, optional): Cursor value from previous response to get next page.
- `archived` (`boolean`, optional): Include archived contacts (default: false).

### `hubspot_contacts_search`

Search HubSpot contacts using full-text search and pagination. Returns matching contacts with specified properties.

Parameters:

- `query` (`string`, optional): Search term for full-text search across contact properties.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"lifecyclestage","operator":"EQ","value":"customer"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_contacts_batch_create`

Create multiple contacts in HubSpot CRM in a single batch API call. Pass a JSON array of contact objects — each with a `properties` map and an optional `associations` array.

Parameters:

- `inputs` (`string`, required): JSON array of contact objects to create. Each item has a `properties` object with contact fields and an optional `associations` array to link records on creation. Example: `[{"properties":{"email":"jane@example.com","firstname":"Jane","lastname":"Smith"},"associations":[{"to":{"id":"201"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":279}]}]}]`

### `hubspot_contacts_batch_update`

Update multiple contacts in HubSpot CRM in a single batch API call. Pass a JSON array of objects — each with an `id` and a `properties` map.

Parameters:

- `inputs` (`string`, required): JSON array of contact update objects. Each item has an `id` (HubSpot record ID) and a `properties` object with fields to update. Example: `[{"id":"12345","properties":{"jobtitle":"VP of Engineering","lifecyclestage":"customer"}}]`

### `hubspot_contacts_batch_upsert`

Create or update multiple contacts in HubSpot CRM in a single batch API call. Uses `idProperty` for lookup — creates if not found, updates if found.

Parameters:

- `inputs` (`string`, required): JSON array of contact upsert objects. Each item has an `idProperty` (unique field name, e.g. `"email"`), `id` (value of that field), and `properties` map. Example: `[{"idProperty":"email","id":"jane@example.com","properties":{"firstname":"Jane","lifecyclestage":"lead"}}]`

### `hubspot_contacts_batch_read`

Read multiple contact records from HubSpot CRM in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of contact record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["firstname","email","company"]`). Returns default properties if omitted.

### `hubspot_contacts_batch_archive`

Archive multiple contacts in HubSpot CRM in a single batch API call. Archived contacts are hidden from the UI but can be restored.

Parameters:

- `inputs` (`string`, required): JSON array of contact record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_contact_list_membership_get`

Retrieve all HubSpot lists that a specific contact belongs to, identified by contact ID.

Parameters:

- `contact_id` (`string`, required): The unique identifier of the contact in HubSpot.

### `hubspot_contact_email_events_get`

Retrieve marketing email events for a specific contact by their email address. Returns open, click, bounce, and unsubscribe events.

Parameters:

- `email` (`string`, required): The contact's email address.
- `eventType` (`string`, optional): Filter by event type: `OPEN`, `CLICK`, `BOUNCE`, or `UNSUBSCRIBE`.
- `limit` (`number`, optional): Number of events to return per page (default: 100).

### `hubspot_companies_batch_create`

Create multiple companies in HubSpot CRM in a single batch API call. Pass a JSON array of company objects — each with a `properties` map and an optional `associations` array.

Parameters:

- `inputs` (`string`, required): JSON array of company objects to create. Each item has a `properties` object with company fields and an optional `associations` array. Example: `[{"properties":{"name":"Acme Corp","domain":"acme.com","industry":"TECHNOLOGY"},"associations":[{"to":{"id":"101"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":280}]}]}]`

### `hubspot_companies_batch_update`

Update multiple companies in HubSpot CRM in a single batch API call. Pass a JSON array of objects — each with an `id` and a `properties` map.

Parameters:

- `inputs` (`string`, required): JSON array of company update objects. Each item has an `id` (HubSpot record ID) and a `properties` object with fields to update. Example: `[{"id":"12345","properties":{"numberofemployees":500,"annualrevenue":"5000000"}}]`

### `hubspot_companies_batch_upsert`

Create or update multiple companies in HubSpot CRM in a single batch API call. Specify a unique property via `idProperty` to match records — omitting `idProperty` defaults to matching by record ID.

Parameters:

- `inputs` (`string`, required): JSON array of company upsert objects. Each item has an `idProperty` (unique field name, e.g. `"domain"`), `id` (value of that field), and `properties` map. Example: `[{"idProperty":"domain","id":"acme.com","properties":{"name":"Acme Corp","industry":"TECHNOLOGY"}}]`

### `hubspot_companies_batch_read`

Read multiple company records from HubSpot CRM in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of company record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["name","domain","industry"]`). Returns default properties if omitted.

### `hubspot_companies_batch_archive`

Archive multiple companies in HubSpot CRM in a single batch API call. Archived companies are hidden from the UI but can be restored.

Parameters:

- `inputs` (`string`, required): JSON array of company record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_deal_create`

Create a new deal in HubSpot CRM. Requires dealname and dealstage. Supports additional properties like amount, pipeline, close date, and deal type.

Parameters:

- `dealname` (`string`, required): Name of the deal.
- `dealstage` (`string`, required): Current stage of the deal (e.g. `qualifiedtobuy`, `closedwon`).
- `amount` (`number`, optional): Monetary value of the deal.
- `closedate` (`string`, optional): Expected close date in `YYYY-MM-DD` format.
- `pipeline` (`string`, optional): The pipeline this deal belongs to (e.g. `default`).
- `dealtype` (`string`, optional): Classification of the deal type (e.g. `newbusiness`, `existingbusiness`).
- `description` (`string`, optional): Additional details about the deal.
- `hs_priority` (`string`, optional): Deal priority: `high`, `medium`, or `low`.

### `hubspot_deal_get`

Retrieve details of a specific deal from HubSpot by deal ID. Returns deal properties and associated data.

Parameters:

- `deal_id` (`string`, required): The unique identifier of the deal in HubSpot.
- `properties` (`string`, optional): Comma-separated list of properties to return (e.g. `dealname,amount,dealstage,closedate`).
- `associations` (`string`, optional): Comma-separated object types to retrieve associations for (e.g. `contacts,companies,line_items`).

### `hubspot_deal_update`

Update an existing deal in HubSpot CRM by deal ID. Provide any fields to update.

Parameters:

- `deal_id` (`string`, required): The unique identifier of the deal in HubSpot.
- `dealname` (`string`, optional): Updated name of the deal.
- `dealstage` (`string`, optional): Updated pipeline stage (e.g. `closedwon`).
- `amount` (`number`, optional): Updated monetary value of the deal.
- `closedate` (`string`, optional): Updated expected close date in `YYYY-MM-DD` format.
- `pipeline` (`string`, optional): Updated pipeline.
- `dealtype` (`string`, optional): Updated deal type.
- `description` (`string`, optional): Updated deal description.
- `hs_priority` (`string`, optional): Updated priority: `high`, `medium`, or `low`.

### `hubspot_deals_search`

Search HubSpot deals using full-text search and pagination. Returns matching deals with specified properties.

Parameters:

- `query` (`string`, optional): Search term for full-text search across deal properties.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"dealstage","operator":"EQ","value":"closedwon"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_deal_pipelines_list`

Retrieve all pipelines for a HubSpot CRM object type (e.g. `deals` or `tickets`), including pipeline stages. Use this to get valid pipeline IDs and stage IDs for creating or updating deals and tickets.

Parameters:

- `archived` (`boolean`, optional): Set to `true` to include archived pipelines.

### `hubspot_deal_line_items_get`

Retrieve all line items associated with a specific HubSpot deal.

Parameters:

- `deal_id` (`string`, required): The HubSpot ID of the deal.

### `hubspot_deals_batch_create`

Create multiple deals in HubSpot CRM in a single batch API call. Pass a JSON array of deal objects — each with a `properties` map and an optional `associations` array.

Parameters:

- `inputs` (`string`, required): JSON array of deal objects to create. Each item has a `properties` object with deal fields and an optional `associations` array. Example: `[{"properties":{"dealname":"Enterprise Q4","amount":"50000","dealstage":"qualifiedtobuy","closedate":"2025-12-31"},"associations":[{"to":{"id":"101"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":3}]}]}]`

### `hubspot_deals_batch_update`

Update multiple deals in HubSpot CRM in a single batch API call. Pass a JSON array of objects — each with an `id` and a `properties` map.

Parameters:

- `inputs` (`string`, required): JSON array of deal update objects. Each item has an `id` (HubSpot record ID) and a `properties` object with fields to update. Example: `[{"id":"12345","properties":{"dealstage":"closedwon","amount":"75000"}}]`

### `hubspot_deals_batch_upsert`

Create or update multiple deals in HubSpot CRM in a single batch API call. Uses a unique property for lookup — the property must be configured as unique in your HubSpot portal.

Parameters:

- `inputs` (`string`, required): JSON array of deal upsert objects. Each item has an `idProperty` (unique field name), `id` (value of that field), and `properties` map. Example: `[{"idProperty":"dealname","id":"Enterprise Q4","properties":{"amount":"50000","dealstage":"qualifiedtobuy"}}]`

### `hubspot_deals_batch_read`

Read multiple deal records from HubSpot CRM in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of deal record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["dealname","amount","dealstage"]`). Returns default properties if omitted.

### `hubspot_deals_batch_archive`

Archive multiple deals in HubSpot CRM in a single batch API call. Archived deals are hidden from the UI but can be restored.

Parameters:

- `inputs` (`string`, required): JSON array of deal record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_ticket_create`

Create a new support ticket in HubSpot. Use `hubspot_deal_pipelines_list` with `object_type: tickets` to find valid pipeline and stage IDs.

Parameters:

- `subject` (`string`, required): A short descriptive title for the support ticket.
- `hs_pipeline_stage` (`string`, required): Pipeline stage ID for the ticket (e.g. `1` for New).
- `content` (`string`, optional): Detailed description of the support issue.
- `hs_pipeline` (`string`, optional): Pipeline ID (use `'0'` for the default Support Pipeline).
- `hs_ticket_priority` (`string`, optional): Priority level: `HIGH`, `MEDIUM`, or `LOW`.

### `hubspot_ticket_get`

Retrieve details of a specific HubSpot support ticket by ticket ID.

Parameters:

- `ticket_id` (`string`, required): The unique identifier of the ticket in HubSpot.
- `properties` (`string`, optional): Comma-separated list of properties to return.

### `hubspot_ticket_update`

Update an existing HubSpot support ticket by ticket ID. Provide any fields to update.

Parameters:

- `ticket_id` (`string`, required): The unique identifier of the ticket in HubSpot.
- `subject` (`string`, optional): Updated subject of the ticket.
- `content` (`string`, optional): Updated description of the support issue.
- `hs_pipeline_stage` (`string`, optional): Updated pipeline stage ID.
- `hs_pipeline` (`string`, optional): Updated pipeline ID.
- `hs_ticket_priority` (`string`, optional): Updated priority: `HIGH`, `MEDIUM`, or `LOW`.

### `hubspot_tickets_search`

Search HubSpot support tickets using filters and full-text search. Returns matching tickets with their properties.

Parameters:

- `query` (`string`, optional): Full-text search term across ticket subjects and content.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"hs_ticket_priority","operator":"EQ","value":"HIGH"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_tickets_batch_create`

Create multiple support tickets in HubSpot CRM in a single batch API call. Pass a JSON array of ticket objects — each with a `properties` map and an optional `associations` array.

Parameters:

- `inputs` (`string`, required): JSON array of ticket objects to create. Each item has a `properties` object with ticket fields and an optional `associations` array. Example: `[{"properties":{"subject":"Login issue","hs_pipeline_stage":"1","hs_ticket_priority":"HIGH"},"associations":[{"to":{"id":"101"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":16}]}]}]`

### `hubspot_tickets_batch_update`

Update multiple support tickets in HubSpot CRM in a single batch API call. Pass a JSON array of objects — each with an `id` and a `properties` map.

Parameters:

- `inputs` (`string`, required): JSON array of ticket update objects. Each item has an `id` (HubSpot record ID) and a `properties` object with fields to update. Example: `[{"id":"12345","properties":{"hs_pipeline_stage":"4","hs_ticket_priority":"LOW"}}]`

### `hubspot_tickets_batch_upsert`

Create or update multiple support tickets in HubSpot CRM in a single batch API call. Uses a unique property for lookup — the property must be configured as unique in your HubSpot portal.

Parameters:

- `inputs` (`string`, required): JSON array of ticket upsert objects. Each item has an `idProperty` (unique field name), `id` (value of that field), and `properties` map. Example: `[{"idProperty":"subject","id":"Login issue","properties":{"hs_pipeline_stage":"1","hs_ticket_priority":"HIGH"}}]`

### `hubspot_tickets_batch_read`

Read multiple support ticket records from HubSpot CRM in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of ticket record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["subject","hs_ticket_priority","hs_pipeline_stage"]`). Returns default properties if omitted.

### `hubspot_tickets_batch_archive`

Archive multiple support tickets in HubSpot CRM in a single batch API call. Archived tickets are hidden from the UI but can be restored.

Parameters:

- `inputs` (`string`, required): JSON array of ticket record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_task_create`

Create a new task in HubSpot CRM. Tasks can be assigned to owners and associated with contacts, companies, or deals.

Parameters:

- `hs_task_subject` (`string`, required): A descriptive subject for the task.
- `hs_timestamp` (`string`, required): Due date and time for the task in ISO 8601 format (e.g. `2024-01-20T10:00:00Z`).
- `hs_task_status` (`string`, optional): Status: `NOT_STARTED`, `IN_PROGRESS`, `COMPLETED`, `DEFERRED`, or `WAITING`.
- `hs_task_priority` (`string`, optional): Priority: `HIGH`, `MEDIUM`, or `LOW`.
- `hs_task_type` (`string`, optional): Type of task: `EMAIL`, `CALL`, or `TODO`.
- `hs_task_body` (`string`, optional): Additional notes or context for the task.

### `hubspot_task_complete`

Mark a HubSpot task as completed or update its status. Use the task ID from `hubspot_tasks_search` or `hubspot_task_create`.

Parameters:

- `task_id` (`string`, required): The unique identifier of the task in HubSpot.
- `hs_task_status` (`string`, optional): New status: `NOT_STARTED`, `IN_PROGRESS`, `COMPLETED`, `DEFERRED`, or `WAITING`.
- `hs_task_body` (`string`, optional): Updated notes when completing the task.

### `hubspot_tasks_search`

Search HubSpot tasks using filters and full-text search. Returns tasks with their subject, status, due date, and priority.

Parameters:

- `query` (`string`, optional): Full-text search term across task subjects and notes.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"hs_task_status","operator":"NEQ","value":"COMPLETED"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_meeting_log`

Log a meeting engagement in HubSpot CRM. Records details of a meeting including title, start/end time, description, and outcome.

Parameters:

- `hs_meeting_title` (`string`, required): A descriptive title for the meeting.
- `hs_meeting_start_time` (`string`, required): Start time of the meeting in ISO 8601 format (e.g. `2024-01-15T14:00:00Z`).
- `hs_meeting_end_time` (`string`, required): End time of the meeting in ISO 8601 format.
- `hs_timestamp` (`string`, required): Timestamp when the meeting was logged in ISO 8601 format.
- `hs_meeting_body` (`string`, optional): Notes, agenda, or description of the meeting.
- `hs_meeting_outcome` (`string`, optional): Outcome of the meeting: `SCHEDULED`, `COMPLETED`, `NO_SHOW`, or `CANCELED`.

### `hubspot_meetings_search`

Search HubSpot meeting engagements using filters and full-text search. Returns logged meetings with their properties.

Parameters:

- `query` (`string`, optional): Full-text search term across meeting titles and descriptions.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"hs_meeting_outcome","operator":"EQ","value":"COMPLETED"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_call_log`

Log a call engagement in HubSpot CRM. Records details of a phone call including title, duration, notes, status, and direction.

Parameters:

- `hs_call_title` (`string`, required): A descriptive title for the call.
- `hs_timestamp` (`string`, required): Date and time when the call took place in ISO 8601 format.
- `hs_call_body` (`string`, optional): Notes or transcript from the call.
- `hs_call_direction` (`string`, optional): Direction of the call: `INBOUND` or `OUTBOUND`.
- `hs_call_duration` (`number`, optional): Duration of the call in milliseconds (e.g. `300000` = 5 minutes).
- `hs_call_status` (`string`, optional): Outcome status: `COMPLETED`, `BUSY`, `FAILED`, `NO_ANSWER`, `CANCELED`, `QUEUED`, or `IN_PROGRESS`.

### `hubspot_calls_search`

Search HubSpot call engagements using filters and full-text search. Returns logged calls with their properties.

Parameters:

- `query` (`string`, optional): Full-text search term across call titles, notes, and other text fields.
- `filterGroups` (`string`, optional): JSON string containing filter groups (e.g. `[{"filters":[{"propertyName":"hs_call_status","operator":"EQ","value":"COMPLETED"}]}]`).
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_note_create`

Create a note in HubSpot CRM to log interactions, meeting summaries, or important information. Notes can be associated with contacts, companies, or deals.

Parameters:

- `hs_note_body` (`string`, required): Content of the note. Supports HTML.
- `hs_timestamp` (`string`, required): Timestamp for the note in ISO 8601 format (e.g. `2024-01-15T10:30:00Z`).

### `hubspot_note_log`

Log a note engagement in HubSpot CRM. Creates a text note that can be associated with contacts, companies, or deals.

Parameters:

- `hs_note_body` (`string`, required): Content of the note. Supports HTML.
- `hs_timestamp` (`string`, required): Timestamp for the note in ISO 8601 format (e.g. `2024-01-15T10:30:00Z`).

### `hubspot_notes_search`

Search HubSpot note engagements using filters and full-text search. Returns logged notes with their content and timestamps.

Parameters:

- `query` (`string`, optional): Full-text search term across note body text.
- `filterGroups` (`string`, optional): JSON string containing filter groups for advanced filtering.
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_emails_search`

Search HubSpot email engagements (logged emails) using filters and full-text search. Returns logged email records with their properties.

Parameters:

- `query` (`string`, optional): Full-text search term across email subject lines and body text.
- `filterGroups` (`string`, optional): JSON string containing filter groups for advanced filtering.
- `properties` (`string`, optional): Comma-separated list of properties to include (e.g. `hs_email_subject,hs_email_text,hs_timestamp`).
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_engagements_list`

List engagements (notes, tasks, calls, emails, meetings) from HubSpot CRM. Supports filtering by engagement type and pagination.

Parameters:

- `engagement_type` (`string`, required): Type of engagement to list: `notes`, `tasks`, `calls`, `emails`, or `meetings`.
- `limit` (`number`, optional): Number of engagements to return per page (max 100).
- `after` (`string`, optional): Cursor from previous response to fetch next page.

### `hubspot_owners_list`

List all HubSpot owners (users). Use this to find owner IDs for assigning contacts, deals, tickets, and other CRM records.

Parameters:

- `email` (`string`, optional): Filter owners by email address.
- `limit` (`number`, optional): Number of owners to return per page (max 500).
- `after` (`string`, optional): Pagination cursor from previous response.

### `hubspot_associations_batch_create`

Create associations between two HubSpot CRM object types in a single batch API call using the v4 associations API.

Parameters:

- `from_object_type` (`string`, required): Source object type: `contacts`, `companies`, `deals`, `tickets`, `line_items`, `products`.
- `to_object_type` (`string`, required): Target object type: `contacts`, `companies`, `deals`, `tickets`, `line_items`, `products`.
- `inputs` (`string`, required): JSON array of association objects in HubSpot v4 format. Each item has `_from` (with `id`), `to` (with `id`), and `types` (array with `associationCategory` and `associationTypeId`). Common type IDs: `279`=contact→company, `4`=contact→deal, `15`=contact→ticket, `3`=deal→contact, `5`=deal→company, `16`=ticket→contact. Example: `[{"_from":{"id":"101"},"to":{"id":"201"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":279}]}]`

### `hubspot_associations_batch_archive`

Remove associations between two HubSpot CRM object types in a single batch API call using the v4 associations API.

Parameters:

- `from_object_type` (`string`, required): Source object type: `contacts`, `companies`, `deals`, `tickets`, `line_items`, `products`.
- `to_object_type` (`string`, required): Target object type: `contacts`, `companies`, `deals`, `tickets`, `line_items`, `products`.
- `inputs` (`string`, required): JSON array of association pairs to remove. Each item has `_from` (with `id`) and `to` (with `id`). Example: `[{"_from":{"id":"101"},"to":{"id":"201"}}]`

### `hubspot_association_create`

Create a default association between two HubSpot CRM objects. For example, associate a contact with a deal, or a company with a ticket.

Parameters:

- `from_object_type` (`string`, required): Type of the source object (e.g. `contacts`, `companies`, `deals`, `tickets`).
- `from_object_id` (`string`, required): HubSpot ID of the source record.
- `to_object_type` (`string`, required): Type of the target object (e.g. `contacts`, `deals`).
- `to_object_id` (`string`, required): HubSpot ID of the target record.

### `hubspot_campaigns_list`

List all HubSpot marketing campaigns with pagination support.

Parameters:

- `limit` (`number`, optional): Number of campaigns to return per page (default: 20).
- `after` (`string`, optional): Pagination cursor from previous response.

### `hubspot_campaign_get`

Retrieve details of a specific HubSpot marketing campaign by campaign ID.

Parameters:

- `campaign_id` (`string`, required): The unique identifier of the campaign in HubSpot.

### `hubspot_forms_list`

List all HubSpot marketing forms. Returns form IDs, names, and field definitions.

Parameters:

- `formTypes` (`string`, optional): Comma-separated list of form types to filter by (e.g. `hubspot`, `captured`, `flow`).
- `limit` (`number`, optional): Number of forms to return per page (max 50).
- `after` (`string`, optional): Pagination cursor from previous response.

### `hubspot_form_submissions_get`

Retrieve all submissions for a specific HubSpot form. Returns submitted field values and submission timestamps.

Parameters:

- `form_id` (`string`, required): The unique identifier of the HubSpot form. Get it from `hubspot_forms_list`.
- `limit` (`number`, optional): Number of submissions to return per page (default: 20).
- `after` (`string`, optional): Pagination offset token for the next page.

### `hubspot_product_create`

Create a new product in the HubSpot product library.

Parameters:

- `name` (`string`, required): The product name as it will appear in HubSpot.
- `description` (`string`, optional): A description of the product or service.
- `hs_sku` (`string`, optional): Unique product SKU or identifier.
- `price` (`string`, optional): Unit price of the product (e.g. `999.00`).

### `hubspot_products_list`

Retrieve a list of products from the HubSpot product library.

Parameters:

- `properties` (`string`, optional): Comma-separated list of product properties to include (e.g. `name,price,description`).
- `limit` (`number`, optional): Number of products to return per page (max 100).
- `after` (`string`, optional): Pagination cursor from previous response.

### `hubspot_line_items_batch_create`

Create multiple line items in HubSpot CRM in a single batch API call. Pass a JSON array of line item objects — each with a `properties` map and an optional `associations` array.

Parameters:

- `inputs` (`string`, required): JSON array of line item objects to create. Each item has a `properties` object and an optional `associations` array to link to a deal. Example: `[{"properties":{"name":"Enterprise License","quantity":"1","price":"999.00"},"associations":[{"to":{"id":"DEAL_ID"},"types":[{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":20}]}]}]`

### `hubspot_line_items_batch_update`

Update multiple line items in HubSpot CRM in a single batch API call. Pass a JSON array of objects — each with an `id` and a `properties` map.

Parameters:

- `inputs` (`string`, required): JSON array of line item update objects. Each item has an `id` (HubSpot record ID) and a `properties` object with fields to update. Example: `[{"id":"12345","properties":{"quantity":"5","price":"799.00"}}]`

### `hubspot_line_items_batch_read`

Read multiple line item records from HubSpot CRM in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of line item record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["name","quantity","price"]`). Returns default properties if omitted.

### `hubspot_line_items_batch_archive`

Archive multiple line items in HubSpot CRM in a single batch API call. Archived line items are removed from their associated deals.

Parameters:

- `inputs` (`string`, required): JSON array of line item record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_line_item_create`

Create a new line item in HubSpot. Line items represent individual products or services in a deal.

Parameters:

- `name` (`string`, required): The name of the product or service for this line item.
- `hs_product_id` (`string`, optional): Link this line item to a product in the HubSpot product library.
- `price` (`string`, optional): The price per unit for this line item.
- `quantity` (`string`, optional): Number of units for this line item.
- `deal_id` (`string`, optional): The HubSpot deal ID to associate this line item with.

### `hubspot_products_batch_read`

Read multiple product records from the HubSpot product library in a single batch API call. Pass a JSON array of record IDs.

Parameters:

- `inputs` (`string`, required): JSON array of product record IDs to fetch. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`
- `properties` (`string`, optional): JSON array of property names to return (e.g. `["name","price","hs_sku"]`). Returns default properties if omitted.

### `hubspot_products_batch_archive`

Archive multiple products from the HubSpot product library in a single batch API call.

Parameters:

- `inputs` (`string`, required): JSON array of product record IDs to archive. Each item has an `id` field. Example: `[{"id":"12345"},{"id":"67890"}]`

### `hubspot_quote_create`

Create a new quote in HubSpot for a deal.

Parameters:

- `hs_title` (`string`, required): The display title for the quote.
- `hs_language` (`string`, required): Language of the quote as an ISO 639-1 code (e.g. `en`, `de`, `fr`). Required by HubSpot.
- `deal_id` (`string`, optional): The HubSpot deal ID to link this quote to.
- `hs_expiration_date` (`string`, optional): Expiration date of the quote in `YYYY-MM-DD` format.
- `hs_status` (`string`, optional): Status of the quote: `DRAFT`, `PENDING_APPROVAL`, `APPROVED`, or `REJECTED`.

### `hubspot_quote_get`

Retrieve a specific HubSpot quote by its ID.

Parameters:

- `quote_id` (`string`, required): The HubSpot ID of the quote.
- `properties` (`string`, optional): Comma-separated list of quote properties to include (e.g. `hs_title,hs_status,hs_expiration_date`).

### `hubspot_schemas_list`

List all custom object schemas defined in HubSpot. Returns object type IDs, labels, and property definitions needed to work with custom objects.

Parameters:

- `archived` (`boolean`, optional): Set to `true` to include archived custom object schemas.

### `hubspot_custom_object_record_create`

Create a new record for a HubSpot custom object type.

Parameters:

- `object_type_id` (`string`, required): The custom object type ID (e.g. `2-1234567`). Get it from `hubspot_schemas_list`.
- `properties` (`object`, required): Key-value pairs for the new record (e.g. `{"name": "Example Record"}`). Use `hubspot_schemas_list` to discover valid property names.

### `hubspot_custom_object_record_get`

Retrieve a specific record of a HubSpot custom object by object type ID and record ID.

Parameters:

- `object_type_id` (`string`, required): The custom object type ID (e.g. `2-1234567`).
- `record_id` (`string`, required): The HubSpot ID of the specific record.
- `properties` (`string`, optional): Comma-separated list of properties to return.

### `hubspot_custom_object_record_update`

Update an existing record of a HubSpot custom object by object type ID and record ID. Use hubspot_schemas_list to discover available object type IDs and their properties.

Parameters:

- `object_type_id` (`string`, required): The custom object type ID (e.g. `2-1234567`). Get it from `hubspot_schemas_list`.
- `record_id` (`string`, required): The HubSpot ID of the record to update. Get it from `hubspot_custom_object_records_search`.
- `properties` (`object`, required): JSON object of property names and updated values (e.g. `{"name": "Updated Name", "status": "active"}`). Use `hubspot_schemas_list` to discover valid property names.

### `hubspot_custom_object_records_search`

Search records of a HubSpot custom object by object type ID. Use `hubspot_schemas_list` to find the objectTypeId for your custom object.

Parameters:

- `object_type_id` (`string`, required): The custom object type ID (e.g. `2-1234567`).
- `query` (`string`, optional): Full-text search term across record properties.
- `filterGroups` (`string`, optional): JSON string containing filter groups for advanced filtering.
- `properties` (`string`, optional): Comma-separated list of properties to include.
- `limit` (`number`, optional): Number of results per page (max 100).
- `after` (`string`, optional): Pagination offset from previous response.

### `hubspot_object_properties_list`

Retrieve all properties defined for a HubSpot CRM object type (contacts, companies, deals, tickets, etc.).

Parameters:

- `object_type` (`string`, required): CRM object type to list properties for (e.g. `contacts`, `companies`, `deals`, `tickets`, `products`, or a custom object type ID).
- `archived` (`boolean`, optional): Set to `true` to include archived properties.


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
