@revfleet/hscli 0.9.7 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -0
- package/README.md +117 -10
- package/SECURITY.md +14 -3
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth/index.d.ts +14 -0
- package/dist/commands/auth/index.js +208 -39
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/crm/describe.js +3 -3
- package/dist/commands/crm/describe.js.map +1 -1
- package/dist/commands/crm/index.js +2 -0
- package/dist/commands/crm/index.js.map +1 -1
- package/dist/commands/crm/record-layouts.d.ts +3 -0
- package/dist/commands/crm/record-layouts.js +246 -0
- package/dist/commands/crm/record-layouts.js.map +1 -0
- package/dist/commands/doctor/index.js +5 -5
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/guide/index.js +1 -1
- package/dist/commands/guide/index.js.map +1 -1
- package/dist/commands/internal/index.js +20 -6
- package/dist/commands/internal/index.js.map +1 -1
- package/dist/commands/internal-session.d.ts +4 -0
- package/dist/commands/internal-session.js +27 -0
- package/dist/commands/internal-session.js.map +1 -1
- package/dist/commands/lists/index.js +18 -0
- package/dist/commands/lists/index.js.map +1 -1
- package/dist/commands/marketing/index.js +5 -5
- package/dist/commands/marketing/index.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -1
- package/dist/commands/mcp.js +49 -5
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/settings/index.js +20 -0
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/commands/ui/index.js +2 -2
- package/dist/commands/ui/index.js.map +1 -1
- package/dist/commands/workflows/index.js +2 -0
- package/dist/commands/workflows/index.js.map +1 -1
- package/dist/commands/workflows/internal.d.ts +3 -0
- package/dist/commands/workflows/internal.js +332 -0
- package/dist/commands/workflows/internal.js.map +1 -0
- package/dist/core/auth.d.ts +18 -2
- package/dist/core/auth.js +96 -3
- package/dist/core/auth.js.map +1 -1
- package/dist/core/capabilities.d.ts +8 -0
- package/dist/core/capabilities.js +31 -3
- package/dist/core/capabilities.js.map +1 -1
- package/dist/core/http.d.ts +6 -0
- package/dist/core/http.js +14 -3
- package/dist/core/http.js.map +1 -1
- package/dist/core/output.js +20 -4
- package/dist/core/output.js.map +1 -1
- package/dist/core/permissions.js +15 -1
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/schema-cache.js +6 -2
- package/dist/core/schema-cache.js.map +1 -1
- package/dist/core/vault.js +10 -5
- package/dist/core/vault.js.map +1 -1
- package/dist/mcp/compat-hubspot.d.ts +5 -14
- package/dist/mcp/compat-hubspot.js +17 -14
- package/dist/mcp/compat-hubspot.js.map +1 -1
- package/dist/mcp/diagnostics.d.ts +157 -0
- package/dist/mcp/diagnostics.js +199 -0
- package/dist/mcp/diagnostics.js.map +1 -0
- package/dist/mcp/ecosystem.d.ts +107 -0
- package/dist/mcp/ecosystem.js +127 -0
- package/dist/mcp/ecosystem.js.map +1 -0
- package/dist/mcp/ext-tools.d.ts +4 -3
- package/dist/mcp/ext-tools.js +20 -8
- package/dist/mcp/ext-tools.js.map +1 -1
- package/dist/mcp/profiles.d.ts +9 -0
- package/dist/mcp/profiles.js +38 -4
- package/dist/mcp/profiles.js.map +1 -1
- package/dist/mcp/server.d.ts +118 -1
- package/dist/mcp/server.js +64 -7
- package/dist/mcp/server.js.map +1 -1
- package/docs/CAPABILITY_LIBRARY.md +1 -1
- package/docs/COMMAND_TREE.md +8 -4
- package/docs/COMPARISON.md +14 -6
- package/docs/COOKBOOK.md +51 -4
- package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +59 -0
- package/docs/INTERNAL-ENDPOINTS.md +13 -0
- package/docs/INTERNAL_ENDPOINTS.md +22 -4
- package/docs/MCP.md +48 -6
- package/docs/MCP_TOOL_CATALOG.md +188 -186
- package/docs/OPERATIONAL_PLAYBOOKS.md +9 -8
- package/docs/PORTAL_SETUP.md +2 -2
- package/package.json +1 -1
package/docs/MCP_TOOL_CATALOG.md
CHANGED
|
@@ -2,191 +2,193 @@
|
|
|
2
2
|
|
|
3
3
|
Generated from the runtime registration schemas. Do not edit manually.
|
|
4
4
|
|
|
5
|
-
- Minimal:
|
|
6
|
-
- CRM:
|
|
7
|
-
- Migration:
|
|
8
|
-
- Full:
|
|
5
|
+
- Minimal: 31 tools
|
|
6
|
+
- CRM: 138 tools
|
|
7
|
+
- Migration: 181 tools
|
|
8
|
+
- Full: 182 tools
|
|
9
9
|
|
|
10
|
-
| Tool | Domain | Risk | Surfaces | Description |
|
|
11
|
-
|
|
12
|
-
| `cms_redirects_create` | cms | write | migration, full | Create a CMS URL redirect (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
13
|
-
| `cms_redirects_delete` | cms | delete | migration, full | Delete a CMS URL redirect (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
14
|
-
| `cms_redirects_list` | cms | read | migration, full | List CMS URL redirects. Not available via HubSpot Remote MCP. |
|
|
15
|
-
| `conversations_inboxes_list` | conversations | read | migration, full | List conversation inboxes. Not available via HubSpot Remote MCP. |
|
|
16
|
-
| `conversations_messages_send` | conversations | write | migration, full | Send a message into a conversation thread (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
17
|
-
| `conversations_threads_list` | conversations | read | migration, full | List conversation threads. Not available via HubSpot Remote MCP. |
|
|
18
|
-
| `crm_associations_create` | crm | write | crm, migration, full | Create default association (dry-run by default unless force=true). Supports standard types, engagements, and custom object type IDs. |
|
|
19
|
-
| `crm_associations_list` | crm | read | minimal, crm, migration, full | List associations between CRM objects (supports standard types, engagements, and custom object type IDs like 2-199622513) |
|
|
20
|
-
| `crm_associations_remove` | crm | delete | crm, migration, full | Remove default association (dry-run by default unless force=true). Supports standard types, engagements, and custom object type IDs. |
|
|
21
|
-
| `crm_calls_batch_archive` | crm | delete | crm, migration, full | Batch archive calls (dry-run by default unless force=true) |
|
|
22
|
-
| `crm_calls_batch_read` | crm | read | crm, migration, full | Batch read calls |
|
|
23
|
-
| `crm_calls_batch_upsert` | crm | write | crm, migration, full | Batch upsert calls (dry-run by default unless force=true) |
|
|
24
|
-
| `crm_calls_create` | crm | write | crm, migration, full | Create call (dry-run by default unless force=true) |
|
|
25
|
-
| `crm_calls_delete` | crm | delete | crm, migration, full | Delete/archive call by ID (dry-run by default unless force=true) |
|
|
26
|
-
| `crm_calls_get` | crm | read | crm, migration, full | Get one call by ID |
|
|
27
|
-
| `crm_calls_list` | crm | read | crm, migration, full | List calls |
|
|
28
|
-
| `crm_calls_merge` | crm | write | crm, migration, full | Merge calls records (endpoint support varies by object) |
|
|
29
|
-
| `crm_calls_search` | crm | read | crm, migration, full | Search calls |
|
|
30
|
-
| `crm_calls_update` | crm | write | crm, migration, full | Update call (dry-run by default unless force=true) |
|
|
31
|
-
| `crm_companies_batch_archive` | crm | delete | crm, migration, full | Batch archive companies (dry-run by default unless force=true) |
|
|
32
|
-
| `crm_companies_batch_read` | crm | read | minimal, crm, migration, full | Batch read companies |
|
|
33
|
-
| `crm_companies_batch_upsert` | crm | write | crm, migration, full | Batch upsert companies (dry-run by default unless force=true) |
|
|
34
|
-
| `crm_companies_create` | crm | write | crm, migration, full | Create companie (dry-run by default unless force=true) |
|
|
35
|
-
| `crm_companies_delete` | crm | delete | crm, migration, full | Delete/archive companie by ID (dry-run by default unless force=true) |
|
|
36
|
-
| `crm_companies_get` | crm | read | minimal, crm, migration, full | Get one companie by ID |
|
|
37
|
-
| `crm_companies_list` | crm | read | minimal, crm, migration, full | List companies |
|
|
38
|
-
| `crm_companies_merge` | crm | write | crm, migration, full | Merge companies records (endpoint support varies by object) |
|
|
39
|
-
| `crm_companies_search` | crm | read | minimal, crm, migration, full | Search companies |
|
|
40
|
-
| `crm_companies_update` | crm | write | crm, migration, full | Update companie (dry-run by default unless force=true) |
|
|
41
|
-
| `crm_contacts_batch_archive` | crm | delete | crm, migration, full | Batch archive contacts (dry-run by default unless force=true) |
|
|
42
|
-
| `crm_contacts_batch_read` | crm | read | minimal, crm, migration, full | Batch read contacts |
|
|
43
|
-
| `crm_contacts_batch_upsert` | crm | write | crm, migration, full | Batch upsert contacts (dry-run by default unless force=true) |
|
|
44
|
-
| `crm_contacts_create` | crm | write | crm, migration, full | Create contact (dry-run by default unless force=true) |
|
|
45
|
-
| `crm_contacts_delete` | crm | delete | crm, migration, full | Delete/archive contact by ID (dry-run by default unless force=true) |
|
|
46
|
-
| `crm_contacts_get` | crm | read | minimal, crm, migration, full | Get one contact by ID |
|
|
47
|
-
| `crm_contacts_list` | crm | read | minimal, crm, migration, full | List contacts |
|
|
48
|
-
| `crm_contacts_merge` | crm | write | crm, migration, full | Merge contacts records (endpoint support varies by object) |
|
|
49
|
-
| `crm_contacts_search` | crm | read | minimal, crm, migration, full | Search contacts |
|
|
50
|
-
| `crm_contacts_update` | crm | write | crm, migration, full | Update contact (dry-run by default unless force=true) |
|
|
51
|
-
| `crm_custom_records_create` | crm | write | crm, migration, full | Create custom object record (dry-run by default unless force=true) |
|
|
52
|
-
| `crm_custom_records_delete` | crm | delete | crm, migration, full | Delete custom object record (dry-run by default unless force=true) |
|
|
53
|
-
| `crm_custom_records_get` | crm | read | crm, migration, full | Get custom object record by objectType and id |
|
|
54
|
-
| `crm_custom_records_list` | crm | read | crm, migration, full | List custom object records by objectType |
|
|
55
|
-
| `crm_custom_records_search` | crm | read | crm, migration, full | Search custom object records |
|
|
56
|
-
| `crm_custom_records_update` | crm | write | crm, migration, full | Update custom object record (dry-run by default unless force=true) |
|
|
57
|
-
| `crm_custom_schemas_create` | crm | write | crm, migration, full | Create custom object schema (dry-run by default unless force=true) |
|
|
58
|
-
| `crm_custom_schemas_get` | crm | read | crm, migration, full | Get custom object schema by objectType |
|
|
59
|
-
| `crm_custom_schemas_list` | crm | read | crm, migration, full | List custom object schemas |
|
|
60
|
-
| `crm_custom_schemas_update` | crm | write | crm, migration, full | Update custom object schema (dry-run by default unless force=true) |
|
|
61
|
-
| `crm_deals_batch_archive` | crm | delete | crm, migration, full | Batch archive deals (dry-run by default unless force=true) |
|
|
62
|
-
| `crm_deals_batch_read` | crm | read | minimal, crm, migration, full | Batch read deals |
|
|
63
|
-
| `crm_deals_batch_upsert` | crm | write | crm, migration, full | Batch upsert deals (dry-run by default unless force=true) |
|
|
64
|
-
| `crm_deals_create` | crm | write | crm, migration, full | Create deal (dry-run by default unless force=true) |
|
|
65
|
-
| `crm_deals_delete` | crm | delete | crm, migration, full | Delete/archive deal by ID (dry-run by default unless force=true) |
|
|
66
|
-
| `crm_deals_get` | crm | read | minimal, crm, migration, full | Get one deal by ID |
|
|
67
|
-
| `crm_deals_list` | crm | read | minimal, crm, migration, full | List deals |
|
|
68
|
-
| `crm_deals_merge` | crm | write | crm, migration, full | Merge deals records (endpoint support varies by object) |
|
|
69
|
-
| `crm_deals_search` | crm | read | minimal, crm, migration, full | Search deals |
|
|
70
|
-
| `crm_deals_update` | crm | write | crm, migration, full | Update deal (dry-run by default unless force=true) |
|
|
71
|
-
| `crm_emails_batch_archive` | crm | delete | crm, migration, full | Batch archive emails (dry-run by default unless force=true) |
|
|
72
|
-
| `crm_emails_batch_read` | crm | read | crm, migration, full | Batch read emails |
|
|
73
|
-
| `crm_emails_batch_upsert` | crm | write | crm, migration, full | Batch upsert emails (dry-run by default unless force=true) |
|
|
74
|
-
| `crm_emails_create` | crm | write | crm, migration, full | Create email (dry-run by default unless force=true) |
|
|
75
|
-
| `crm_emails_delete` | crm | delete | crm, migration, full | Delete/archive email by ID (dry-run by default unless force=true) |
|
|
76
|
-
| `crm_emails_get` | crm | read | crm, migration, full | Get one email by ID |
|
|
77
|
-
| `crm_emails_list` | crm | read | crm, migration, full | List emails |
|
|
78
|
-
| `crm_emails_merge` | crm | write | crm, migration, full | Merge emails records (endpoint support varies by object) |
|
|
79
|
-
| `crm_emails_search` | crm | read | crm, migration, full | Search emails |
|
|
80
|
-
| `crm_emails_update` | crm | write | crm, migration, full | Update email (dry-run by default unless force=true) |
|
|
81
|
-
| `crm_exports_create` | crm | write | crm, migration, full | Create a CRM export (dry-run by default unless force=true) |
|
|
82
|
-
| `crm_exports_get` | crm | read | crm, migration, full | Get a CRM export by ID |
|
|
83
|
-
| `crm_exports_list` | crm | read | crm, migration, full | List CRM exports with pagination |
|
|
84
|
-
| `crm_exports_status` | crm | read | crm, migration, full | Get the status of a CRM export |
|
|
85
|
-
| `crm_imports_create` | crm | write | crm, migration, full | Create import (dry-run by default unless force=true) |
|
|
86
|
-
| `crm_imports_errors` | crm | read | crm, migration, full | Get import errors |
|
|
87
|
-
| `crm_imports_get` | crm | read | crm, migration, full | Get import by ID |
|
|
88
|
-
| `crm_imports_list` | crm | read | crm, migration, full | List import jobs |
|
|
89
|
-
| `crm_lists_create` | crm | write | crm, migration, full | Create a CRM list (dry-run by default unless force=true) |
|
|
90
|
-
| `crm_lists_delete` | crm | delete | crm, migration, full | Delete a CRM list (dry-run by default unless force=true) |
|
|
91
|
-
| `crm_lists_get` | crm | read | crm, migration, full | Get a CRM list by ID |
|
|
92
|
-
| `crm_lists_list` | crm | read | crm, migration, full | List CRM lists with pagination |
|
|
93
|
-
| `crm_lists_memberships` | crm | read | crm, migration, full | Get memberships of a CRM list |
|
|
94
|
-
| `crm_lists_update` | crm | write | crm, migration, full | Update a CRM list (dry-run by default unless force=true) |
|
|
95
|
-
| `crm_meetings_batch_archive` | crm | delete | crm, migration, full | Batch archive meetings (dry-run by default unless force=true) |
|
|
96
|
-
| `crm_meetings_batch_read` | crm | read | crm, migration, full | Batch read meetings |
|
|
97
|
-
| `crm_meetings_batch_upsert` | crm | write | crm, migration, full | Batch upsert meetings (dry-run by default unless force=true) |
|
|
98
|
-
| `crm_meetings_create` | crm | write | crm, migration, full | Create meeting (dry-run by default unless force=true) |
|
|
99
|
-
| `crm_meetings_delete` | crm | delete | crm, migration, full | Delete/archive meeting by ID (dry-run by default unless force=true) |
|
|
100
|
-
| `crm_meetings_get` | crm | read | crm, migration, full | Get one meeting by ID |
|
|
101
|
-
| `crm_meetings_list` | crm | read | crm, migration, full | List meetings |
|
|
102
|
-
| `crm_meetings_merge` | crm | write | crm, migration, full | Merge meetings records (endpoint support varies by object) |
|
|
103
|
-
| `crm_meetings_search` | crm | read | crm, migration, full | Search meetings |
|
|
104
|
-
| `crm_meetings_update` | crm | write | crm, migration, full | Update meeting (dry-run by default unless force=true) |
|
|
105
|
-
| `crm_notes_batch_archive` | crm | delete | crm, migration, full | Batch archive notes (dry-run by default unless force=true) |
|
|
106
|
-
| `crm_notes_batch_read` | crm | read | crm, migration, full | Batch read notes |
|
|
107
|
-
| `crm_notes_batch_upsert` | crm | write | crm, migration, full | Batch upsert notes (dry-run by default unless force=true) |
|
|
108
|
-
| `crm_notes_create` | crm | write | crm, migration, full | Create note (dry-run by default unless force=true) |
|
|
109
|
-
| `crm_notes_delete` | crm | delete | crm, migration, full | Delete/archive note by ID (dry-run by default unless force=true) |
|
|
110
|
-
| `crm_notes_get` | crm | read | crm, migration, full | Get one note by ID |
|
|
111
|
-
| `crm_notes_list` | crm | read | crm, migration, full | List notes |
|
|
112
|
-
| `crm_notes_merge` | crm | write | crm, migration, full | Merge notes records (endpoint support varies by object) |
|
|
113
|
-
| `crm_notes_search` | crm | read | crm, migration, full | Search notes |
|
|
114
|
-
| `crm_notes_update` | crm | write | crm, migration, full | Update note (dry-run by default unless force=true) |
|
|
115
|
-
| `crm_owners_list` | crm | read | minimal, crm, migration, full | List HubSpot owners |
|
|
116
|
-
| `crm_pipelines_get` | crm | read | minimal, crm, migration, full | Get one pipeline |
|
|
117
|
-
| `crm_pipelines_list` | crm | read | minimal, crm, migration, full | List pipelines for object type |
|
|
118
|
-
| `crm_pipelines_stages` | crm | read | minimal, crm, migration, full | List stages for a pipeline |
|
|
119
|
-
| `crm_properties_batch_create` | crm | write | crm, migration, full | Batch-create properties for a standard object or custom object type ID (dry-run by default unless force=true) |
|
|
120
|
-
| `crm_properties_create` | crm | write | crm, migration, full | Create property (dry-run by default unless force=true) |
|
|
121
|
-
| `crm_properties_get` | crm | read | minimal, crm, migration, full | Get one property definition |
|
|
122
|
-
| `crm_properties_list` | crm | read | minimal, crm, migration, full | List properties for an object type |
|
|
123
|
-
| `crm_properties_update` | crm | write | crm, migration, full | Update property (dry-run by default unless force=true) |
|
|
124
|
-
| `crm_property_groups_create` | crm | write | crm, migration, full | Create a property group (dry-run by default unless force=true) |
|
|
125
|
-
| `crm_property_groups_list` | crm | read | crm, migration, full | List property groups for an object type |
|
|
126
|
-
| `crm_property_groups_update` | crm | write | crm, migration, full | Update a property group (dry-run by default unless force=true) |
|
|
127
|
-
| `crm_tasks_batch_archive` | crm | delete | crm, migration, full | Batch archive tasks (dry-run by default unless force=true) |
|
|
128
|
-
| `crm_tasks_batch_read` | crm | read | crm, migration, full | Batch read tasks |
|
|
129
|
-
| `crm_tasks_batch_upsert` | crm | write | crm, migration, full | Batch upsert tasks (dry-run by default unless force=true) |
|
|
130
|
-
| `crm_tasks_create` | crm | write | crm, migration, full | Create task (dry-run by default unless force=true) |
|
|
131
|
-
| `crm_tasks_delete` | crm | delete | crm, migration, full | Delete/archive task by ID (dry-run by default unless force=true) |
|
|
132
|
-
| `crm_tasks_get` | crm | read | crm, migration, full | Get one task by ID |
|
|
133
|
-
| `crm_tasks_list` | crm | read | crm, migration, full | List tasks |
|
|
134
|
-
| `crm_tasks_merge` | crm | write | crm, migration, full | Merge tasks records (endpoint support varies by object) |
|
|
135
|
-
| `crm_tasks_search` | crm | read | crm, migration, full | Search tasks |
|
|
136
|
-
| `crm_tasks_update` | crm | write | crm, migration, full | Update task (dry-run by default unless force=true) |
|
|
137
|
-
| `crm_tickets_batch_archive` | crm | delete | crm, migration, full | Batch archive tickets (dry-run by default unless force=true) |
|
|
138
|
-
| `crm_tickets_batch_read` | crm | read | minimal, crm, migration, full | Batch read tickets |
|
|
139
|
-
| `crm_tickets_batch_upsert` | crm | write | crm, migration, full | Batch upsert tickets (dry-run by default unless force=true) |
|
|
140
|
-
| `crm_tickets_create` | crm | write | crm, migration, full | Create ticket (dry-run by default unless force=true) |
|
|
141
|
-
| `crm_tickets_delete` | crm | delete | crm, migration, full | Delete/archive ticket by ID (dry-run by default unless force=true) |
|
|
142
|
-
| `crm_tickets_get` | crm | read | minimal, crm, migration, full | Get one ticket by ID |
|
|
143
|
-
| `crm_tickets_list` | crm | read | minimal, crm, migration, full | List tickets |
|
|
144
|
-
| `crm_tickets_merge` | crm | write | crm, migration, full | Merge tickets records (endpoint support varies by object) |
|
|
145
|
-
| `crm_tickets_search` | crm | read | minimal, crm, migration, full | Search tickets |
|
|
146
|
-
| `crm_tickets_update` | crm | write | crm, migration, full | Update ticket (dry-run by default unless force=true) |
|
|
147
|
-
| `files_delete` | files | delete | migration, full | Permanently delete a file (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
148
|
-
| `files_get` | files | read | migration, full | Get metadata for a single file by ID. Not available via HubSpot Remote MCP. |
|
|
149
|
-
| `files_list` | files | read | migration, full | List uploaded files. Not available via HubSpot Remote MCP. |
|
|
150
|
-
| `files_signed_url` | files | read | migration, full | Generate a time-limited signed URL for a private file. Not available via HubSpot Remote MCP. |
|
|
151
|
-
| `forms_create` | forms | write | migration, full | Create a marketing form. Legacy forms/v2 payloads are translated to v3 automatically. Dry-run by default unless force=true. |
|
|
152
|
-
| `forms_get` | forms | read | migration, full | Get one form by ID. Not available via HubSpot Remote MCP. |
|
|
153
|
-
| `forms_list` | forms | read | migration, full | List marketing forms. Not available via HubSpot Remote MCP. |
|
|
154
|
-
| `forms_submissions` | forms | read | migration, full | List submissions for a form. Not available via HubSpot Remote MCP. |
|
|
155
|
-
| `forms_submit` | forms | write | migration, full | Programmatically submit a form (server-side submission endpoint). Dry-run by default unless force=true. |
|
|
156
|
-
| `forms_update` | forms | write | migration, full | Update a marketing form. Legacy forms/v2 payloads are translated to v3 automatically. Dry-run by default unless force=true. |
|
|
157
|
-
| `get_campaign_analytics` | compat | read | migration, full | Get campaign analytics (aggregated metrics) for one or more campaigns. HubSpot-compat. |
|
|
158
|
-
| `get_campaign_asset_metrics` | compat | read | migration, full | Get metrics for specific CRM objects associated with a campaign. HubSpot-compat. |
|
|
159
|
-
| `get_campaign_asset_types` | compat | read | migration, full | List available campaign asset types (emails, blog posts, ads, etc.). HubSpot-compat. |
|
|
160
|
-
| `get_campaign_contacts_by_type` | compat | read | migration, full | Paginated contact IDs for a campaign filtered by attribution type (e.g. 'INFLUENCED'). HubSpot-compat. |
|
|
161
|
-
| `get_crm_objects` | compat | read | minimal, crm, migration, full | Batch read CRM records by ID. HubSpot-compat: max 100 IDs per request. |
|
|
162
|
-
| `get_properties` | compat | read | minimal, crm, migration, full | Get full property definitions (types, enum options) for an object type. HubSpot-compat. |
|
|
163
|
-
| `get_user_details` | compat | read | minimal, crm, migration, full | Get the authenticated user's account info, portal details, and OAuth scopes. HubSpot-compat tool. |
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `
|
|
178
|
-
| `
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
| `
|
|
184
|
-
| `
|
|
185
|
-
| `
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
10
|
+
| Tool | Domain | Risk | Safety annotations | Output schema | Surfaces | Description |
|
|
11
|
+
|---|---|---|---|---|---|---|
|
|
12
|
+
| `cms_redirects_create` | cms | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Create a CMS URL redirect (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
13
|
+
| `cms_redirects_delete` | cms | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Delete a CMS URL redirect (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
14
|
+
| `cms_redirects_list` | cms | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List CMS URL redirects. Not available via HubSpot Remote MCP. |
|
|
15
|
+
| `conversations_inboxes_list` | conversations | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List conversation inboxes. Not available via HubSpot Remote MCP. |
|
|
16
|
+
| `conversations_messages_send` | conversations | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Send a message into a conversation thread (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
17
|
+
| `conversations_threads_list` | conversations | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List conversation threads. Not available via HubSpot Remote MCP. |
|
|
18
|
+
| `crm_associations_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create default association (dry-run by default unless force=true). Supports standard types, engagements, and custom object type IDs. |
|
|
19
|
+
| `crm_associations_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List associations between CRM objects (supports standard types, engagements, and custom object type IDs like 2-199622513) |
|
|
20
|
+
| `crm_associations_remove` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Remove default association (dry-run by default unless force=true). Supports standard types, engagements, and custom object type IDs. |
|
|
21
|
+
| `crm_calls_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive calls (dry-run by default unless force=true) |
|
|
22
|
+
| `crm_calls_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Batch read calls |
|
|
23
|
+
| `crm_calls_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert calls (dry-run by default unless force=true) |
|
|
24
|
+
| `crm_calls_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create call (dry-run by default unless force=true) |
|
|
25
|
+
| `crm_calls_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive call by ID (dry-run by default unless force=true) |
|
|
26
|
+
| `crm_calls_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get one call by ID |
|
|
27
|
+
| `crm_calls_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List calls |
|
|
28
|
+
| `crm_calls_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge calls records (endpoint support varies by object) |
|
|
29
|
+
| `crm_calls_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search calls |
|
|
30
|
+
| `crm_calls_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update call (dry-run by default unless force=true) |
|
|
31
|
+
| `crm_companies_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive companies (dry-run by default unless force=true) |
|
|
32
|
+
| `crm_companies_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Batch read companies |
|
|
33
|
+
| `crm_companies_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert companies (dry-run by default unless force=true) |
|
|
34
|
+
| `crm_companies_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create companie (dry-run by default unless force=true) |
|
|
35
|
+
| `crm_companies_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive companie by ID (dry-run by default unless force=true) |
|
|
36
|
+
| `crm_companies_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one companie by ID |
|
|
37
|
+
| `crm_companies_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List companies |
|
|
38
|
+
| `crm_companies_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge companies records (endpoint support varies by object) |
|
|
39
|
+
| `crm_companies_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Search companies |
|
|
40
|
+
| `crm_companies_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update companie (dry-run by default unless force=true) |
|
|
41
|
+
| `crm_contacts_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive contacts (dry-run by default unless force=true) |
|
|
42
|
+
| `crm_contacts_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Batch read contacts |
|
|
43
|
+
| `crm_contacts_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert contacts (dry-run by default unless force=true) |
|
|
44
|
+
| `crm_contacts_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create contact (dry-run by default unless force=true) |
|
|
45
|
+
| `crm_contacts_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive contact by ID (dry-run by default unless force=true) |
|
|
46
|
+
| `crm_contacts_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one contact by ID |
|
|
47
|
+
| `crm_contacts_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List contacts |
|
|
48
|
+
| `crm_contacts_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge contacts records (endpoint support varies by object) |
|
|
49
|
+
| `crm_contacts_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Search contacts |
|
|
50
|
+
| `crm_contacts_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update contact (dry-run by default unless force=true) |
|
|
51
|
+
| `crm_custom_records_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create custom object record (dry-run by default unless force=true) |
|
|
52
|
+
| `crm_custom_records_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete custom object record (dry-run by default unless force=true) |
|
|
53
|
+
| `crm_custom_records_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get custom object record by objectType and id |
|
|
54
|
+
| `crm_custom_records_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List custom object records by objectType |
|
|
55
|
+
| `crm_custom_records_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search custom object records |
|
|
56
|
+
| `crm_custom_records_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update custom object record (dry-run by default unless force=true) |
|
|
57
|
+
| `crm_custom_schemas_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create custom object schema (dry-run by default unless force=true) |
|
|
58
|
+
| `crm_custom_schemas_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get custom object schema by objectType |
|
|
59
|
+
| `crm_custom_schemas_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List custom object schemas |
|
|
60
|
+
| `crm_custom_schemas_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update custom object schema (dry-run by default unless force=true) |
|
|
61
|
+
| `crm_deals_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive deals (dry-run by default unless force=true) |
|
|
62
|
+
| `crm_deals_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Batch read deals |
|
|
63
|
+
| `crm_deals_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert deals (dry-run by default unless force=true) |
|
|
64
|
+
| `crm_deals_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create deal (dry-run by default unless force=true) |
|
|
65
|
+
| `crm_deals_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive deal by ID (dry-run by default unless force=true) |
|
|
66
|
+
| `crm_deals_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one deal by ID |
|
|
67
|
+
| `crm_deals_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List deals |
|
|
68
|
+
| `crm_deals_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge deals records (endpoint support varies by object) |
|
|
69
|
+
| `crm_deals_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Search deals |
|
|
70
|
+
| `crm_deals_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update deal (dry-run by default unless force=true) |
|
|
71
|
+
| `crm_emails_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive emails (dry-run by default unless force=true) |
|
|
72
|
+
| `crm_emails_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Batch read emails |
|
|
73
|
+
| `crm_emails_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert emails (dry-run by default unless force=true) |
|
|
74
|
+
| `crm_emails_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create email (dry-run by default unless force=true) |
|
|
75
|
+
| `crm_emails_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive email by ID (dry-run by default unless force=true) |
|
|
76
|
+
| `crm_emails_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get one email by ID |
|
|
77
|
+
| `crm_emails_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List emails |
|
|
78
|
+
| `crm_emails_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge emails records (endpoint support varies by object) |
|
|
79
|
+
| `crm_emails_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search emails |
|
|
80
|
+
| `crm_emails_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update email (dry-run by default unless force=true) |
|
|
81
|
+
| `crm_exports_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create a CRM export (dry-run by default unless force=true) |
|
|
82
|
+
| `crm_exports_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get a CRM export by ID |
|
|
83
|
+
| `crm_exports_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List CRM exports with pagination |
|
|
84
|
+
| `crm_exports_status` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get the status of a CRM export |
|
|
85
|
+
| `crm_imports_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create import (dry-run by default unless force=true) |
|
|
86
|
+
| `crm_imports_errors` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get import errors |
|
|
87
|
+
| `crm_imports_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get import by ID |
|
|
88
|
+
| `crm_imports_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List import jobs |
|
|
89
|
+
| `crm_lists_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create a CRM list (dry-run by default unless force=true) |
|
|
90
|
+
| `crm_lists_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete a CRM list (dry-run by default unless force=true) |
|
|
91
|
+
| `crm_lists_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get a CRM list by ID |
|
|
92
|
+
| `crm_lists_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List CRM lists with pagination |
|
|
93
|
+
| `crm_lists_memberships` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get memberships of a CRM list |
|
|
94
|
+
| `crm_lists_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update a CRM list (dry-run by default unless force=true) |
|
|
95
|
+
| `crm_meetings_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive meetings (dry-run by default unless force=true) |
|
|
96
|
+
| `crm_meetings_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Batch read meetings |
|
|
97
|
+
| `crm_meetings_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert meetings (dry-run by default unless force=true) |
|
|
98
|
+
| `crm_meetings_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create meeting (dry-run by default unless force=true) |
|
|
99
|
+
| `crm_meetings_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive meeting by ID (dry-run by default unless force=true) |
|
|
100
|
+
| `crm_meetings_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get one meeting by ID |
|
|
101
|
+
| `crm_meetings_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List meetings |
|
|
102
|
+
| `crm_meetings_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge meetings records (endpoint support varies by object) |
|
|
103
|
+
| `crm_meetings_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search meetings |
|
|
104
|
+
| `crm_meetings_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update meeting (dry-run by default unless force=true) |
|
|
105
|
+
| `crm_notes_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive notes (dry-run by default unless force=true) |
|
|
106
|
+
| `crm_notes_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Batch read notes |
|
|
107
|
+
| `crm_notes_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert notes (dry-run by default unless force=true) |
|
|
108
|
+
| `crm_notes_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create note (dry-run by default unless force=true) |
|
|
109
|
+
| `crm_notes_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive note by ID (dry-run by default unless force=true) |
|
|
110
|
+
| `crm_notes_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get one note by ID |
|
|
111
|
+
| `crm_notes_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List notes |
|
|
112
|
+
| `crm_notes_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge notes records (endpoint support varies by object) |
|
|
113
|
+
| `crm_notes_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search notes |
|
|
114
|
+
| `crm_notes_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update note (dry-run by default unless force=true) |
|
|
115
|
+
| `crm_owners_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List HubSpot owners |
|
|
116
|
+
| `crm_pipelines_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one pipeline |
|
|
117
|
+
| `crm_pipelines_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List pipelines for object type |
|
|
118
|
+
| `crm_pipelines_stages` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List stages for a pipeline |
|
|
119
|
+
| `crm_properties_batch_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch-create properties for a standard object or custom object type ID (dry-run by default unless force=true) |
|
|
120
|
+
| `crm_properties_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create property (dry-run by default unless force=true) |
|
|
121
|
+
| `crm_properties_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one property definition |
|
|
122
|
+
| `crm_properties_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List properties for an object type |
|
|
123
|
+
| `crm_properties_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update property (dry-run by default unless force=true) |
|
|
124
|
+
| `crm_property_groups_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create a property group (dry-run by default unless force=true) |
|
|
125
|
+
| `crm_property_groups_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List property groups for an object type |
|
|
126
|
+
| `crm_property_groups_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update a property group (dry-run by default unless force=true) |
|
|
127
|
+
| `crm_tasks_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive tasks (dry-run by default unless force=true) |
|
|
128
|
+
| `crm_tasks_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Batch read tasks |
|
|
129
|
+
| `crm_tasks_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert tasks (dry-run by default unless force=true) |
|
|
130
|
+
| `crm_tasks_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create task (dry-run by default unless force=true) |
|
|
131
|
+
| `crm_tasks_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive task by ID (dry-run by default unless force=true) |
|
|
132
|
+
| `crm_tasks_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Get one task by ID |
|
|
133
|
+
| `crm_tasks_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | List tasks |
|
|
134
|
+
| `crm_tasks_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge tasks records (endpoint support varies by object) |
|
|
135
|
+
| `crm_tasks_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | crm, migration, full | Search tasks |
|
|
136
|
+
| `crm_tasks_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update task (dry-run by default unless force=true) |
|
|
137
|
+
| `crm_tickets_batch_archive` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch archive tickets (dry-run by default unless force=true) |
|
|
138
|
+
| `crm_tickets_batch_read` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Batch read tickets |
|
|
139
|
+
| `crm_tickets_batch_upsert` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Batch upsert tickets (dry-run by default unless force=true) |
|
|
140
|
+
| `crm_tickets_create` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Create ticket (dry-run by default unless force=true) |
|
|
141
|
+
| `crm_tickets_delete` | crm | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Delete/archive ticket by ID (dry-run by default unless force=true) |
|
|
142
|
+
| `crm_tickets_get` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Get one ticket by ID |
|
|
143
|
+
| `crm_tickets_list` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | List tickets |
|
|
144
|
+
| `crm_tickets_merge` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Merge tickets records (endpoint support varies by object) |
|
|
145
|
+
| `crm_tickets_search` | crm | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | minimal, crm, migration, full | Search tickets |
|
|
146
|
+
| `crm_tickets_update` | crm | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | crm, migration, full | Update ticket (dry-run by default unless force=true) |
|
|
147
|
+
| `files_delete` | files | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Permanently delete a file (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
148
|
+
| `files_get` | files | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get metadata for a single file by ID. Not available via HubSpot Remote MCP. |
|
|
149
|
+
| `files_list` | files | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List uploaded files. Not available via HubSpot Remote MCP. |
|
|
150
|
+
| `files_signed_url` | files | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Generate a time-limited signed URL for a private file. Not available via HubSpot Remote MCP. |
|
|
151
|
+
| `forms_create` | forms | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Create a marketing form. Legacy forms/v2 payloads are translated to v3 automatically. Dry-run by default unless force=true. |
|
|
152
|
+
| `forms_get` | forms | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get one form by ID. Not available via HubSpot Remote MCP. |
|
|
153
|
+
| `forms_list` | forms | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List marketing forms. Not available via HubSpot Remote MCP. |
|
|
154
|
+
| `forms_submissions` | forms | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List submissions for a form. Not available via HubSpot Remote MCP. |
|
|
155
|
+
| `forms_submit` | forms | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Programmatically submit a form (server-side submission endpoint). Dry-run by default unless force=true. |
|
|
156
|
+
| `forms_update` | forms | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Update a marketing form. Legacy forms/v2 payloads are translated to v3 automatically. Dry-run by default unless force=true. |
|
|
157
|
+
| `get_campaign_analytics` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | migration, full | Get campaign analytics (aggregated metrics) for one or more campaigns. HubSpot-compat. |
|
|
158
|
+
| `get_campaign_asset_metrics` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | migration, full | Get metrics for specific CRM objects associated with a campaign. HubSpot-compat. |
|
|
159
|
+
| `get_campaign_asset_types` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | migration, full | List available campaign asset types (emails, blog posts, ads, etc.). HubSpot-compat. |
|
|
160
|
+
| `get_campaign_contacts_by_type` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | migration, full | Paginated contact IDs for a campaign filtered by attribution type (e.g. 'INFLUENCED'). HubSpot-compat. |
|
|
161
|
+
| `get_crm_objects` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Batch read CRM records by ID. HubSpot-compat: max 100 IDs per request. |
|
|
162
|
+
| `get_properties` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Get full property definitions (types, enum options) for an object type. HubSpot-compat. |
|
|
163
|
+
| `get_user_details` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Get the authenticated user's account info, portal details, and OAuth scopes. HubSpot-compat tool. |
|
|
164
|
+
| `hscli_mcp_doctor` | hscli | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Inspect local MCP profile isolation, portal pinning, policy, and cached capability state without exposing credentials |
|
|
165
|
+
| `hscli_mcp_manifest` | hscli | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Describe the hscli MCP protocol, transport, tool surface, and safety metadata without accessing HubSpot |
|
|
166
|
+
| `hub_api_request` | hub | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | full | Raw HubSpot API request with safety controls |
|
|
167
|
+
| `hubdb_publish` | hubdb | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Publish a HubDB table's draft state to live (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
168
|
+
| `hubdb_row_create` | hubdb | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Create a row in a HubDB draft table (dry-run by default unless force=true). Call hubdb_publish to publish. Not available via HubSpot Remote MCP. |
|
|
169
|
+
| `hubdb_row_update` | hubdb | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Update a HubDB row in the draft table (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
170
|
+
| `hubdb_rows_list` | hubdb | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List rows in a HubDB table. Not available via HubSpot Remote MCP. |
|
|
171
|
+
| `hubdb_tables_list` | hubdb | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List HubDB tables. Not available via HubSpot Remote MCP. |
|
|
172
|
+
| `hubspot_module_compose` | modules | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Compose a widget body for a HubSpot drag-and-drop module using given field values. Validates the values against the module's fields.json schema before returning — rejects unknown fields and type mismatches. The returned widget is ready to drop into an email or CMS page's content.widgets[widgetId], with the schema + metadata HubSpot's renderer expects. Use this instead of hand-shaping widget bodies. |
|
|
173
|
+
| `hubspot_module_describe` | modules | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Return the full field schema for a HubSpot drag-and-drop module (the same schema a user sees when clicking a module in the editor). Fields include name, label, type (text, richtext, number, boolean, color, choice, group, image, link, ...), required flag, default, choices, and nested children for groups. Call this before hubspot_module_compose to know what fields to pass. |
|
|
174
|
+
| `hubspot_module_list` | modules | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Enumerate @hubspot/* built-in drag-and-drop modules available on the caller's portal. Each entry reports whether fields.json resolves (i.e. whether the module can be used in widgets). Useful for discovery — call hubspot_module_describe on any available entry to see its field schema. |
|
|
175
|
+
| `manage_crm_objects` | compat | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | Yes | crm, migration, full | Create, update, or DELETE CRM records. HubSpot-compat surface extended with 'delete' — policy-file + change-ticket still enforced server-side. Bulk max 100 records per call. |
|
|
176
|
+
| `marketing_emails_get` | marketing | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get one marketing email by ID through hscli's public-API adapter. |
|
|
177
|
+
| `marketing_emails_list` | marketing | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List marketing emails through hscli's public-API adapter. |
|
|
178
|
+
| `marketing_emails_statistics` | marketing | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get aggregate statistics for a marketing email campaign through the legacy public email API. |
|
|
179
|
+
| `reporting_dashboards_get` | reporting | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get an analytics report/dashboard by ID |
|
|
180
|
+
| `reporting_dashboards_list` | reporting | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List analytics reports/dashboards with pagination |
|
|
181
|
+
| `sales_sequences_enrollments` | sales | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get enrollments for a sales sequence |
|
|
182
|
+
| `sales_sequences_get` | sales | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get a sales sequence by ID |
|
|
183
|
+
| `sales_sequences_list` | sales | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List sales sequences with pagination |
|
|
184
|
+
| `search_crm_objects` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Search CRM records by filter groups, text query, sorts, and pagination. HubSpot-compat: accepts the same filterGroups/query/sorts/properties/limit/after shape as HubSpot Remote MCP. |
|
|
185
|
+
| `search_owners` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Find CRM owners by email or ID, or list all. HubSpot-compat: max 100 results. |
|
|
186
|
+
| `search_properties` | compat | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | Yes | minimal, crm, migration, full | Keyword-search property definitions for an object type. HubSpot-compat: max 5 keywords. |
|
|
187
|
+
| `webhooks_create_subscription` | webhooks | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Create a webhook subscription (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
188
|
+
| `webhooks_delete_subscription` | webhooks | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Delete a webhook subscription (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
189
|
+
| `webhooks_list_subscriptions` | webhooks | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List webhook subscriptions for a HubSpot app. Not available via HubSpot Remote MCP. |
|
|
190
|
+
| `workflows_enroll` | workflows | write | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Enroll a contact into a legacy v3 workflow (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
191
|
+
| `workflows_get` | workflows | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | Get one workflow by flowId (v4). Not available via HubSpot Remote MCP. |
|
|
192
|
+
| `workflows_list` | workflows | read | readOnly=true; destructive=false; idempotent=true; openWorld=true | No | migration, full | List workflows (v4). Not available via HubSpot Remote MCP. |
|
|
193
|
+
| `workflows_unenroll` | workflows | delete | readOnly=false; destructive=true; idempotent=false; openWorld=true | No | migration, full | Remove a contact from a legacy v3 workflow (dry-run by default unless force=true). Not available via HubSpot Remote MCP. |
|
|
192
194
|
|
|
@@ -30,17 +30,18 @@ hscli auth token-info --profile <profile>
|
|
|
30
30
|
2. **Rotate credentials**: generate a new private app token with minimum necessary scopes
|
|
31
31
|
3. **If vault was encrypted**: re-encrypt with a new passphrase
|
|
32
32
|
```bash
|
|
33
|
-
export HSCLI_VAULT_PASSPHRASE="
|
|
34
|
-
hscli auth decrypt
|
|
35
|
-
hscli auth login --
|
|
36
|
-
|
|
33
|
+
export HSCLI_VAULT_PASSPHRASE="$OLD_HSCLI_VAULT_PASSPHRASE"
|
|
34
|
+
hscli auth decrypt
|
|
35
|
+
hscli auth login --auth-type private-app --profile <profile>
|
|
36
|
+
export HSCLI_VAULT_PASSPHRASE="$NEW_HSCLI_VAULT_PASSPHRASE"
|
|
37
|
+
hscli auth encrypt
|
|
37
38
|
```
|
|
38
39
|
4. **Audit recent actions** via HubSpot audit log (Settings > Account > Audit Logs)
|
|
39
40
|
|
|
40
41
|
### Recovery
|
|
41
42
|
```bash
|
|
42
43
|
# Login with new token
|
|
43
|
-
hscli auth login --
|
|
44
|
+
hscli auth login --auth-type private-app --profile production
|
|
44
45
|
|
|
45
46
|
# Verify connectivity
|
|
46
47
|
hscli crm contacts list --limit 1 --profile production
|
|
@@ -133,8 +134,8 @@ hscli auth encrypt
|
|
|
133
134
|
# Remove encrypted vault
|
|
134
135
|
rm ~/.revfleet/auth.enc
|
|
135
136
|
# Re-authenticate with each profile
|
|
136
|
-
hscli auth login --
|
|
137
|
-
hscli auth login --
|
|
137
|
+
hscli auth login --auth-type private-app --profile default
|
|
138
|
+
hscli auth login --auth-type private-app --profile staging
|
|
138
139
|
# Re-encrypt
|
|
139
140
|
export HSCLI_VAULT_PASSPHRASE="new-passphrase"
|
|
140
141
|
hscli auth encrypt
|
|
@@ -234,7 +235,7 @@ hscli auth profile-show --profile default
|
|
|
234
235
|
### Resolution
|
|
235
236
|
```bash
|
|
236
237
|
# Re-login — hublet auto-detected from token prefix
|
|
237
|
-
hscli auth login --
|
|
238
|
+
hscli auth login --auth-type private-app
|
|
238
239
|
|
|
239
240
|
# Verify routing
|
|
240
241
|
hscli doctor hublet-check
|
package/docs/PORTAL_SETUP.md
CHANGED
|
@@ -225,8 +225,8 @@ hscli crm owners list --email "user@yourcompany.com"
|
|
|
225
225
|
# Build hscli (first time only)
|
|
226
226
|
cd hscli-main && npm install && npm run build
|
|
227
227
|
|
|
228
|
-
# Authenticate (
|
|
229
|
-
|
|
228
|
+
# Authenticate (hidden prompt; token never enters shell history)
|
|
229
|
+
hscli auth login --profile live --hublet eu1
|
|
230
230
|
|
|
231
231
|
# Verify
|
|
232
232
|
hscli auth whoami
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revfleet/hscli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "HubSpot operations and migration control plane for humans and agents, with deterministic runbooks, policy guardrails, and auditable evidence.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|