hubspot-batch-update-objects
Batch update multiple HubSpot CRM objects of the same type in a single API call. Use this tool to modify existing object properties efficiently, ensuring accurate and streamlined data updates.
Instructions
π‘οΈ Guardrails:
1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM.
π― Purpose:
1. Updates multiple existing HubSpot objects of the same objectType in a single API call.
2. Use this tool when the user wants to update one or more existing CRM objects.
3. If you are unsure about the property type to update, identify existing properties of the object and ask the user.
π Prerequisites:
1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already.
2. Use the hubspot-list-objects tool to sample existing objects for the object type.
3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | Yes | Array of objects to update (maximum 100 per batch) | |
| objectType | Yes | The type of HubSpot object to update. Valid values include: appointments, companies, contacts, courses, deals, leads, line_items, listings, marketing_events, meetings, orders, postal_mail, products, quotes, services, subscriptions, tickets, users. For custom objects, use the hubspot-get-schemas tool to get the objectType. |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"inputs": {
"description": "Array of objects to update (maximum 100 per batch)",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "ID of the object to update",
"type": "string"
},
"idProperty": {
"description": "Optional unique property name to use as the ID",
"type": "string"
},
"objectWriteTraceId": {
"description": "Optional trace ID for debugging purposes",
"type": "string"
},
"properties": {
"additionalProperties": {
"type": "string"
},
"description": "Object properties as key-value pairs",
"type": "object"
}
},
"required": [
"id",
"properties"
],
"type": "object"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"objectType": {
"description": "The type of HubSpot object to update. Valid values include: appointments, companies, contacts, courses, deals, leads, line_items, listings, marketing_events, meetings, orders, postal_mail, products, quotes, services, subscriptions, tickets, users. For custom objects, use the hubspot-get-schemas tool to get the objectType.",
"type": "string"
}
},
"required": [
"objectType",
"inputs"
],
"type": "object"
}
Implementation Reference
- The process method implements the tool's core logic: it sends a batch update request to HubSpot's CRM v3 API (/objects/{objectType}/batch/update) using the provided inputs and handles the response or errors.async process(args) { try { const response = await this.client.post(`/crm/v3/objects/${args.objectType}/batch/update`, { body: { inputs: args.inputs, }, }); return { content: [ { type: 'text', text: JSON.stringify({ status: response.status, results: response.results.map(result => ({ id: result.id, properties: result.properties, createdAt: result.createdAt, updatedAt: result.updatedAt, archived: result.archived, archivedAt: result.archivedAt, })), requestedAt: response.requestedAt, startedAt: response.startedAt, completedAt: response.completedAt, }, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error batch updating HubSpot objects: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
- Zod schemas defining the input structure for the tool: individual object updates and the batch parameters including objectType and array of inputs (1-100).const PropertiesSchema = z.record(z.string(), z.string()); const ObjectUpdateInputSchema = z.object({ id: z.string().describe('ID of the object to update'), properties: PropertiesSchema.describe('Object properties as key-value pairs'), idProperty: z.string().optional().describe('Optional unique property name to use as the ID'), objectWriteTraceId: z.string().optional().describe('Optional trace ID for debugging purposes'), }); const BatchUpdateObjectsSchema = z.object({ objectType: z .string() .describe(`The type of HubSpot object to update. Valid values include: ${HUBSPOT_OBJECT_TYPES.join(', ')}. For custom objects, use the hubspot-get-schemas tool to get the objectType.`), inputs: z .array(ObjectUpdateInputSchema) .min(1) .max(100) .describe('Array of objects to update (maximum 100 per batch)'), });
- dist/tools/objects/batchUpdateObjectsTool.js:23-47 (registration)The ToolDefinition object registers the tool with its name 'hubspot-batch-update-objects', detailed description, input schema converted to JSON schema, and annotations. This is passed to the BaseTool superclass.const ToolDefinition = { name: 'hubspot-batch-update-objects', description: ` π‘οΈ Guardrails: 1. Data Modification Warning: This tool modifies HubSpot data. Only use when the user has explicitly requested to update their CRM. π― Purpose: 1. Updates multiple existing HubSpot objects of the same objectType in a single API call. 2. Use this tool when the user wants to update one or more existing CRM objects. 3. If you are unsure about the property type to update, identify existing properties of the object and ask the user. π Prerequisites: 1. Use the hubspot-get-user-details tool to get the OwnerId and UserId if you don't have that already. 2. Use the hubspot-list-objects tool to sample existing objects for the object type. 3. If hubspot-list-objects tool's response isn't helpful, use hubspot-list-properties tool. `, inputSchema: zodToJsonSchema(BatchUpdateObjectsSchema), annotations: { title: 'Update Multiple CRM Objects', readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true, }, };