Skip to content

Commit 97c0d07

Browse files
waleedlatif1claude
authored andcommitted
feat(hubspot): add 27 CRM tools and fix OAuth scope mismatch (#3765)
* feat(hubspot): add 27 CRM tools and fix OAuth scope mismatch * lint * fix(hubspot): switch marketing events to CRM Objects API and add HubSpotCrmObject base type * chore(docs): fix import ordering and formatting lint errors * feat(hubspot): wire all 27 new tools into block definition * fix(hubspot): address review comments - schema mismatch, pagination, trim, descriptions - Switch marketing event outputs to CRM envelope structure (id, properties, createdAt, updatedAt, archived) matching CRM Objects API - Fix list_lists pagination: add offset param, map offset-based response to paging structure - Add .trim() to contactId/companyId in pre-existing get/update tools - Fix default limit descriptions (100 → 10) in list_contacts/list_companies - Fix operator examples (CONTAINS → CONTAINS_TOKEN) in search_contacts/search_companies - Remove unused params arg in get_users transformResponse Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(hubspot): revert to Marketing Events API and fix Lists pagination per API docs Marketing Events: - Revert from /crm/v3/objects/marketing_events back to /marketing/v3/marketing-events - The Marketing Events API does NOT require appId for GET /marketing-events/{objectId} - appId is only needed for the /events/{externalEventId} endpoint (which we don't use) - Restore flat response schema (objectId, eventName, etc. at top level, not CRM envelope) Lists: - POST /crm/v3/lists/search uses offset-based pagination (not cursor-based) - Response shape: { lists, hasMore, offset, total } — not { results, paging } - Map offset → paging.next.after for consistent block interface - Fix default count: 20 (not 25), max 500 - GET /crm/v3/lists/{listId} wraps response in { list: { ... } } Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(hubspot): final audit fixes verified against API docs - Revert list_contacts/list_companies default limit back to 100 (confirmed by API docs) - Add idProperty param to get_appointment.ts (was missing, inconsistent with update_appointment) - Remove get_carts from idProperty block condition (carts don't support idProperty) - Add get_lists to after block condition (pagination was inaccessible from UI) - Add after pagination param to get_users.ts (was missing, users beyond first page unreachable) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(hubspot): return paging in get_users and add to block after condition - Add paging output to get_users transformResponse and outputs - Add get_users to block after subBlock condition so cursor is accessible from UI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(hubspot): align total fallback with type definitions in search tools Use `?? 0` instead of `?? null` for search tools where the type declares `total: number`. Also declare `total` in list_lists metadata output schema. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent e466f46 commit 97c0d07

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3892
-37
lines changed

apps/docs/content/docs/en/tools/hubspot.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ Retrieve all deals from HubSpot account with pagination support
499499

500500
| Parameter | Type | Required | Description |
501501
| --------- | ---- | -------- | ----------- |
502-
| `limit` | string | No | Maximum number of results per page \(max 100, default 100\) |
502+
| `limit` | string | No | Maximum number of results per page \(max 100, default 10\) |
503503
| `after` | string | No | Pagination cursor for next page of results \(from previous response\) |
504504
| `properties` | string | No | Comma-separated list of HubSpot property names to return \(e.g., "dealname,amount,dealstage"\) |
505505
| `associations` | string | No | Comma-separated list of object types to retrieve associated IDs for \(e.g., "contacts,companies"\) |

0 commit comments

Comments
 (0)