@revfleet/hscli 0.8.7 → 0.8.10

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +204 -0
  2. package/CONTRIBUTING.md +120 -0
  3. package/README.md +14 -6
  4. package/brand/readme-hero.svg +25 -0
  5. package/dist/cli.js +10 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/account/index.js +5 -6
  8. package/dist/commands/account/index.js.map +1 -1
  9. package/dist/commands/api/index.js +43 -3
  10. package/dist/commands/api/index.js.map +1 -1
  11. package/dist/commands/auth/index.js +32 -6
  12. package/dist/commands/auth/index.js.map +1 -1
  13. package/dist/commands/cms/hubdb.js +31 -0
  14. package/dist/commands/cms/hubdb.js.map +1 -1
  15. package/dist/commands/cms/index.js +27 -0
  16. package/dist/commands/cms/index.js.map +1 -1
  17. package/dist/commands/cms/source-code.js +21 -0
  18. package/dist/commands/cms/source-code.js.map +1 -1
  19. package/dist/commands/communication-preferences/index.js +11 -12
  20. package/dist/commands/communication-preferences/index.js.map +1 -1
  21. package/dist/commands/crm/shared.d.ts +1 -0
  22. package/dist/commands/crm/shared.js +3 -4
  23. package/dist/commands/crm/shared.js.map +1 -1
  24. package/dist/commands/events/index.js +7 -8
  25. package/dist/commands/events/index.js.map +1 -1
  26. package/dist/commands/marketing/index.js +3 -4
  27. package/dist/commands/marketing/index.js.map +1 -1
  28. package/dist/commands/settings/index.js +12 -13
  29. package/dist/commands/settings/index.js.map +1 -1
  30. package/dist/core/http.d.ts +27 -0
  31. package/dist/core/http.js +87 -18
  32. package/dist/core/http.js.map +1 -1
  33. package/dist/core/plugins.d.ts +5 -2
  34. package/dist/core/plugins.js +18 -1
  35. package/dist/core/plugins.js.map +1 -1
  36. package/dist/core/telemetry-context.d.ts +13 -0
  37. package/dist/core/telemetry-context.js +30 -0
  38. package/dist/core/telemetry-context.js.map +1 -0
  39. package/dist/mcp/hubspot-modules.d.ts +30 -0
  40. package/dist/mcp/hubspot-modules.js +305 -0
  41. package/dist/mcp/hubspot-modules.js.map +1 -0
  42. package/dist/mcp/server.d.ts +2 -0
  43. package/dist/mcp/server.js +30 -26
  44. package/dist/mcp/server.js.map +1 -1
  45. package/docs/ARCHITECTURE.md +39 -0
  46. package/docs/CAPABILITY_LIBRARY.md +638 -0
  47. package/docs/CMS_SETUP.md +349 -0
  48. package/docs/COMMAND_COMPATIBILITY.md +24 -0
  49. package/docs/COMMAND_TREE.md +183 -0
  50. package/docs/COMMERCE_SETUP.md +400 -0
  51. package/docs/COMPARISON.md +146 -0
  52. package/docs/COOKBOOK.md +800 -0
  53. package/docs/INTEGRATIONS_NOTIFICATIONS_SETUP.md +352 -0
  54. package/docs/MARKETING_SETUP.md +503 -0
  55. package/docs/MCP.md +171 -0
  56. package/docs/OPERATIONAL_PLAYBOOKS.md +322 -0
  57. package/docs/OPERATIONS_SETUP.md +362 -0
  58. package/docs/PLUGIN_GUIDE.md +158 -0
  59. package/docs/POLICY_EXAMPLE.json +57 -0
  60. package/docs/PORTAL_SETUP.md +683 -0
  61. package/docs/PUBLISHING.md +154 -0
  62. package/docs/RELEASE_GOVERNANCE.md +34 -0
  63. package/docs/REPORTING_SETUP.md +310 -0
  64. package/docs/ROADMAP-DATE-BASED-API.md +103 -0
  65. package/docs/ROADMAP_PHASE1_TO_3.md +96 -0
  66. package/docs/SAFETY_MODEL.md +37 -0
  67. package/docs/SALES_SETUP.md +369 -0
  68. package/docs/SERVICE_SETUP.md +403 -0
  69. package/docs/TESTING_PLAN.md +89 -0
  70. package/docs/TIERS.md +320 -0
  71. package/docs/TUTORIALS/audit-portal-writes.md +150 -0
  72. package/docs/TUTORIALS/secure-agent-writes.md +177 -0
  73. package/docs/TUTORIALS/trace-replay-repro.md +147 -0
  74. package/docs/WHY_HOW_WHAT.md +81 -0
  75. package/package.json +7 -2
@@ -0,0 +1,349 @@
1
+ # CMS Setup Guide
2
+
3
+ > See also: [PORTAL_SETUP.md](PORTAL_SETUP.md) · [MARKETING_SETUP.md](MARKETING_SETUP.md) · [COMMAND_TREE.md](COMMAND_TREE.md)
4
+
5
+ Complete configuration guide for HubSpot CMS Hub settings. Covers domains, templates, blog, pages, file management, and developer tools.
6
+
7
+ **Prerequisites:**
8
+ - Portal authenticated (`hscli auth whoami`)
9
+ - Private App scopes: `content`, `cms.domains.read/write`
10
+ - Domain DNS access (see [PORTAL_SETUP.md](./PORTAL_SETUP.md))
11
+
12
+ ---
13
+
14
+ ## 1. Domains & URLs
15
+
16
+ **Where:** Settings > Content > Domains & URLs
17
+
18
+ ### 1.1 Domain Configuration
19
+
20
+ | Setting | What to configure | Why it matters |
21
+ |---------|-------------------|----------------|
22
+ | Primary domain | Main website domain (e.g., `www.yourcompany.com`) | Primary content hosting |
23
+ | Redirect domains | Non-www → www (or vice versa) | Prevent duplicate content |
24
+ | Landing page domain | Separate subdomain (e.g., `go.yourcompany.com`) | Campaign landing pages |
25
+ | Blog domain | Subdomain or path (e.g., `blog.yourcompany.com` or `/blog`) | Blog content hosting |
26
+ | Knowledge base domain | Subdomain (e.g., `help.yourcompany.com`) | Customer self-service |
27
+ | Email domain | For email web version links | Consistent branding |
28
+ | SSL certificate | Auto-provisioned by HubSpot | HTTPS security (automatic) |
29
+
30
+ ### 1.2 URL Mappings
31
+
32
+ | Setting | What to configure | Why it matters |
33
+ |---------|-------------------|----------------|
34
+ | URL redirects | Old URL → new URL (301/302) | SEO preservation, prevent broken links |
35
+ | Trailing slash | Consistent trailing slash policy | SEO and canonical URL consistency |
36
+ | Lowercase URLs | Force lowercase | Prevent duplicate content |
37
+ | Language slug | `/en/`, `/fr/` path prefix for multi-language | Internationalized URLs |
38
+
39
+ > **API:** URL redirects can be managed via the URL Redirects API.
40
+
41
+ **hscli:**
42
+ ```bash
43
+ # List domains
44
+ hscli cms domains list
45
+
46
+ # List URL redirects
47
+ hscli cms url-redirects list --limit 20
48
+
49
+ # Create a URL redirect
50
+ hscli cms url-redirects create --data '{
51
+ "routePrefix": "/old-page",
52
+ "destination": "/new-page",
53
+ "redirectStyle": 301
54
+ }' --force
55
+ ```
56
+
57
+ ---
58
+
59
+ ## 2. Templates & Themes
60
+
61
+ **Where:** Design Manager (Marketing > Files and Templates > Design Tools)
62
+
63
+ ### 2.1 Theme Configuration
64
+
65
+ | Setting | What to configure | Why it matters |
66
+ |---------|-------------------|----------------|
67
+ | Active theme | Select or install theme | Base design for all pages |
68
+ | Theme settings | Colors, fonts, spacing, layout | Global brand consistency |
69
+ | Global header | Navigation, logo, CTA button | Consistent site navigation |
70
+ | Global footer | Links, social icons, legal text | Consistent footer across pages |
71
+ | Favicon | Small icon for browser tabs | Brand recognition |
72
+
73
+ ### 2.2 Template Types
74
+
75
+ | Template type | Purpose | Example |
76
+ |---------------|---------|---------|
77
+ | Website page | Standard pages | About, Contact, Pricing |
78
+ | Landing page | Campaign pages (no nav) | Offer pages, event registration |
79
+ | Blog listing | Blog index page | Blog home |
80
+ | Blog post | Individual blog posts | Article layout |
81
+ | System page | Error, password, subscription | 404 page, email preference center |
82
+ | Email | Marketing emails | Newsletter template |
83
+
84
+ ### 2.3 Custom Modules
85
+
86
+ | Element | Configuration | Purpose |
87
+ |---------|--------------|---------|
88
+ | Custom modules | Reusable content blocks in Design Manager | Consistent components across pages |
89
+ | Module fields | Configurable options (text, image, color, link) | Content editors can customize without code |
90
+ | Global modules | Shared across all pages/templates | Update once, apply everywhere (header, footer) |
91
+ | Module groups | Organize related modules | Clean design manager |
92
+
93
+ ---
94
+
95
+ ## 3. Blog
96
+
97
+ **Where:** Marketing > Blog | Settings > Content > Blog
98
+
99
+ ### 3.1 Blog Settings
100
+
101
+ | Setting | What to configure | Why it matters |
102
+ |---------|-------------------|----------------|
103
+ | Blog name | Blog title (e.g., "Company Blog") | Appears in RSS, SEO |
104
+ | Blog root URL | Path (e.g., `/blog`) | SEO-friendly URL structure |
105
+ | Posts per page | Number of posts on listing page (10–20) | Page load and UX |
106
+ | Comment settings | Allow/moderate/disable comments | Community engagement |
107
+ | Social sharing | Enable share buttons | Content distribution |
108
+ | Subscription | Allow email subscription to blog | Audience building |
109
+ | Notification email | Email sent to subscribers for new posts | Content distribution |
110
+ | RSS feed | Auto-generated RSS | Syndication |
111
+ | Author pages | Enable/disable author listing pages | SEO and attribution |
112
+ | Tag pages | Enable/disable tag listing pages | Content organization |
113
+
114
+ ### 3.2 Blog SEO Defaults
115
+
116
+ | Setting | What to configure | Why it matters |
117
+ |---------|-------------------|----------------|
118
+ | Meta title format | `{post_title} | {blog_name}` | SEO consistency |
119
+ | Meta description | Auto or manual per post | Search engine display |
120
+ | Canonical URL | Auto-set to post URL | Prevent duplicate content |
121
+ | Featured image | Required for social sharing | Social media cards |
122
+ | Structured data | Article schema (auto by HubSpot) | Rich search results |
123
+
124
+ **hscli:**
125
+ ```bash
126
+ # List blog posts
127
+ hscli cms blog-posts list --limit 20
128
+
129
+ # Get blog post details
130
+ hscli cms blog-posts get <blogPostId>
131
+
132
+ # Create a blog post
133
+ hscli cms blog-posts create --data '{
134
+ "name": "How to Get Started",
135
+ "slug": "how-to-get-started",
136
+ "contentGroupId": "<blogId>",
137
+ "postBody": "<p>Your content here</p>",
138
+ "metaDescription": "Learn how to get started with our platform."
139
+ }' --force
140
+ ```
141
+
142
+ ---
143
+
144
+ ## 4. Website Pages
145
+
146
+ **Where:** Marketing > Website Pages | Settings > Content > Pages
147
+
148
+ ### 4.1 Page Settings
149
+
150
+ | Setting | What to configure | Why it matters |
151
+ |---------|-------------------|----------------|
152
+ | Default template | Template for new pages | Consistency |
153
+ | Page title suffix | Appended to all page titles (e.g., `| Company Name`) | SEO branding |
154
+ | Robots.txt | Custom robots.txt rules | Search engine crawling control |
155
+ | Sitemap | Auto-generated sitemap | Search engine discovery |
156
+ | 404 page | Custom 404 error page | User experience |
157
+ | Password protection | Protect pages behind password | Gated content |
158
+ | IP restrictions | Restrict access by IP (staging/internal) | Pre-launch security |
159
+
160
+ ### 4.2 Page Optimization
161
+
162
+ | Feature | Configuration | Purpose |
163
+ |---------|--------------|---------|
164
+ | SEO recommendations | Per-page SEO audit | Improve search ranking |
165
+ | A/B testing | Test page variations | Optimize conversions |
166
+ | Smart content | Personalized content per segment | Targeted messaging |
167
+ | CTAs | Call-to-action buttons with tracking | Conversion tracking |
168
+ | Lazy loading | Auto-enabled for images | Page speed |
169
+ | Minification | Auto CSS/JS minification | Page speed |
170
+
171
+ **hscli:**
172
+ ```bash
173
+ # List website pages
174
+ hscli cms pages list --limit 20
175
+
176
+ # Get page details
177
+ hscli cms pages get <pageId>
178
+ ```
179
+
180
+ ---
181
+
182
+ ## 5. File Manager
183
+
184
+ **Where:** Marketing > Files and Templates > Files
185
+
186
+ ### 5.1 File Organization
187
+
188
+ | Setting | What to configure | Why it matters |
189
+ |---------|-------------------|----------------|
190
+ | Folder structure | Organize by type (images, documents, videos) | Easy asset discovery |
191
+ | File naming | Consistent naming convention | SEO and organization |
192
+ | Image optimization | Auto-resize/compress on upload | Page performance |
193
+ | CDN delivery | Automatic via HubSpot CDN | Fast global delivery |
194
+ | File visibility | Public or private (requires auth) | Access control |
195
+
196
+ ### 5.2 File Types
197
+
198
+ | Category | Supported formats | Max size |
199
+ |----------|-------------------|----------|
200
+ | Images | JPG, PNG, GIF, SVG, WebP | 20 MB |
201
+ | Documents | PDF, DOC, DOCX, XLS, PPT | 300 MB |
202
+ | Videos | MP4, MOV, AVI (hosted) | 1 GB (CMS Hub) |
203
+ | Audio | MP3, WAV | 300 MB |
204
+ | Code | JS, CSS | 300 MB |
205
+
206
+ **hscli:**
207
+ ```bash
208
+ # List files
209
+ hscli cms files list --limit 20
210
+
211
+ # Upload a file
212
+ hscli cms files upload --file ./logo.png --folder-path /images/branding
213
+
214
+ # Get file details
215
+ hscli cms files get <fileId>
216
+ ```
217
+
218
+ ---
219
+
220
+ ## 6. Multi-Language Content
221
+
222
+ **Where:** Settings > Content > Language Settings
223
+
224
+ ### 6.1 Language Configuration
225
+
226
+ | Setting | What to configure | Why it matters |
227
+ |---------|-------------------|----------------|
228
+ | Primary language | Main content language | Default for all content |
229
+ | Additional languages | Languages to support | Multi-language variations |
230
+ | Language switcher | Show language selector on pages | User can switch language |
231
+ | URL format | Subdirectory (`/fr/`) or subdomain (`fr.example.com`) | SEO for international |
232
+ | Hreflang tags | Auto-generated by HubSpot | Search engine language targeting |
233
+ | Translation workflow | Who translates + approval process | Quality control |
234
+
235
+ ---
236
+
237
+ ## 7. Developer Tools
238
+
239
+ **Where:** Design Manager + Developer File System
240
+
241
+ ### 7.1 HubSpot CLI (Developer)
242
+
243
+ | Tool | Command | Purpose |
244
+ |------|---------|---------|
245
+ | Fetch theme | `hs fetch <account> <src> <dest>` | Download theme files locally |
246
+ | Upload | `hs upload <src> <dest>` | Push local changes to HubSpot |
247
+ | Watch | `hs watch <src> <dest>` | Auto-upload on file change |
248
+ | Create | `hs create <type>` | Scaffold modules, templates |
249
+ | Sandbox | `hs sandbox create` | Create development sandbox |
250
+
251
+ ### 7.2 HubL (Templating Language)
252
+
253
+ | Feature | Example | Purpose |
254
+ |---------|---------|---------|
255
+ | Variables | `{{ content.name }}` | Dynamic content |
256
+ | Filters | `{{ name\|title }}` | Format output |
257
+ | Tags | `{% if condition %}` | Logic in templates |
258
+ | Modules | `{% module "cta" %}` | Reusable components |
259
+ | Functions | `{{ blog_recent_posts() }}` | Data access |
260
+
261
+ ### 7.3 Serverless Functions
262
+
263
+ | Setting | What to configure | Why it matters |
264
+ |---------|-------------------|----------------|
265
+ | Function file | `<name>.functions/serverless.json` | Define endpoints |
266
+ | Routes | API paths your function responds to | Custom API endpoints |
267
+ | Secrets | Environment variables (API keys, etc.) | Secure configuration |
268
+ | Runtime | Node.js 18 | Execution environment |
269
+ | Rate limits | 600 requests/minute per account | Capacity planning |
270
+
271
+ ---
272
+
273
+ ## 8. Content Staging
274
+
275
+ **Where:** Content > Content Staging (CMS Hub Professional+)
276
+
277
+ | Setting | What to configure | Why it matters |
278
+ |---------|-------------------|----------------|
279
+ | Staging sandbox | Clone production pages for redesign | Safe testing environment |
280
+ | Staged pages | Select pages to redesign | Control scope of changes |
281
+ | Preview | Review staged changes before publish | Quality assurance |
282
+ | Publish | Push staged changes live | Go-live process |
283
+
284
+ ---
285
+
286
+ ## Setup Checklist
287
+
288
+ ### Domains
289
+ ```
290
+ [ ] Primary domain connected and SSL verified
291
+ [ ] Redirect domain configured (www ↔ non-www)
292
+ [ ] Landing page subdomain configured (if separate)
293
+ [ ] Blog path/subdomain configured
294
+ [ ] URL redirect rules created for any migrated content
295
+ ```
296
+
297
+ ### Templates & Themes
298
+ ```
299
+ [ ] Theme selected/installed
300
+ [ ] Theme settings configured (colors, fonts, spacing)
301
+ [ ] Global header configured (logo, navigation)
302
+ [ ] Global footer configured (links, social, legal)
303
+ [ ] Favicon uploaded
304
+ [ ] Custom modules created for reusable components
305
+ ```
306
+
307
+ ### Blog
308
+ ```
309
+ [ ] Blog settings configured (name, URL, posts per page)
310
+ [ ] Comment settings set
311
+ [ ] Social sharing enabled
312
+ [ ] Blog subscription email configured
313
+ [ ] SEO defaults set (title format, meta)
314
+ [ ] At least one blog post published
315
+ ```
316
+
317
+ ### Website Pages
318
+ ```
319
+ [ ] Default page template selected
320
+ [ ] Page title suffix configured
321
+ [ ] Custom 404 page created
322
+ [ ] Robots.txt reviewed
323
+ [ ] Sitemap verified
324
+ [ ] Key pages created (Home, About, Contact, Pricing)
325
+ ```
326
+
327
+ ### File Manager
328
+ ```
329
+ [ ] Folder structure created
330
+ [ ] Brand assets uploaded (logo, images, icons)
331
+ [ ] File naming convention established
332
+ ```
333
+
334
+ ### Multi-Language (if applicable)
335
+ ```
336
+ [ ] Primary language set
337
+ [ ] Additional languages added
338
+ [ ] URL format chosen (subdirectory or subdomain)
339
+ [ ] Language switcher enabled
340
+ [ ] Translation workflow established
341
+ ```
342
+
343
+ ### Developer Tools
344
+ ```
345
+ [ ] HubSpot CLI installed (`npm install -g @hubspot/cli`)
346
+ [ ] CLI authenticated with portal
347
+ [ ] Local development workflow established
348
+ [ ] Sandbox created for testing (if applicable)
349
+ ```
@@ -0,0 +1,24 @@
1
+ # Command compatibility
2
+
3
+ > See also: [COMMAND_TREE.md](COMMAND_TREE.md) · [SAFETY_MODEL.md](SAFETY_MODEL.md) · [RELEASE_GOVERNANCE.md](RELEASE_GOVERNANCE.md)
4
+
5
+ ## Stability Promise
6
+ - Existing command names and argument shapes are considered stable in minor/patch versions.
7
+ - New command groups may be added in minor versions.
8
+ - Breaking changes require a major version.
9
+
10
+ ## Sensitive Surfaces
11
+ - `crm <object> delete`
12
+ - `crm <object> merge`
13
+ - `crm <object> batch-upsert`
14
+ - `api request` with write methods
15
+
16
+ These are guarded by:
17
+ - `--force`
18
+ - optional policy file (`--policy-file`)
19
+ - optional change ticket (`--change-ticket`) when policy requires it
20
+
21
+ ## Migration Guidance
22
+ - Prefer `--json` for automation to avoid brittle text parsing.
23
+ - For new domains, prefer dedicated command groups over raw `api request` when available.
24
+ - Use `auth profiles` and `auth profile-show` before migrations to validate active profile context.
@@ -0,0 +1,183 @@
1
+ # COMMAND_TREE
2
+
3
+ > Updated: 2026-04-17 for 0.3.0
4
+ > See also: [COMMAND_COMPATIBILITY.md](COMMAND_COMPATIBILITY.md) · [ARCHITECTURE.md](ARCHITECTURE.md) · [MCP.md](MCP.md)
5
+
6
+ High-level map of every hscli command. For detailed args and examples per command, run `hscli <domain> <cmd> --help`.
7
+
8
+ ## Global flags (apply to every command)
9
+
10
+ - `--profile <name>` — Auth profile (default: `default`)
11
+ - `--json` / `--format <table|csv|yaml|json>` — Output format
12
+ - `--dry-run` — Simulate without mutating
13
+ - `--force` — Required for live writes / deletes
14
+ - `--policy-file <path>` — Load write/delete policy
15
+ - `--change-ticket <id>` — Change-ticket enforcement (when policy demands it)
16
+ - `--strict-capabilities` — Fail fast on unsupported endpoints
17
+ - `--telemetry-file <path>` — JSONL request audit trail
18
+ - `--verbose` — Print request/response details
19
+
20
+ ## Auth
21
+
22
+ - `hscli auth login --token-stdin` | `--token <token>`
23
+ - `hscli auth logout [--profile <name>]`
24
+ - `hscli auth profiles` — list profiles
25
+ - `hscli auth profile-show [--profile <name>]`
26
+ - `hscli auth token-info`
27
+ - `hscli auth oauth-url --client-id <id> --redirect-uri <uri> --scope <scopes>`
28
+ - `hscli auth oauth-exchange --client-id <id> --client-secret <secret> --redirect-uri <uri> --code <code>`
29
+ - `hscli auth vault-encrypt` | `vault-decrypt` | `vault-rotate` — encrypted token vault
30
+
31
+ ## Doctor
32
+
33
+ - `hscli doctor capabilities [--refresh]` — probe portal tier + scopes
34
+ - `hscli doctor permissions` — introspect current token scopes
35
+
36
+ ## CRM (22 sub-command files)
37
+
38
+ Objects:
39
+ - `hscli crm contacts|companies|deals|tickets list|get|search|create|update|delete [...]`
40
+ - `hscli crm quotes|products|line-items|goals list|get|search|create|update|delete [...]`
41
+ - `hscli crm payments|invoices|subscriptions list|get [...]` — commerce
42
+ - `hscli crm custom-objects schemas list|get|create|update|delete`
43
+ - `hscli crm custom-objects records list|get|search|create|update|delete`
44
+ - `hscli crm engagements (notes|calls|tasks|emails|meetings) list|get|create|update|delete`
45
+
46
+ Properties + pipelines + associations:
47
+ - `hscli crm properties list|get|create|update|delete` + `hscli crm properties groups list|create|update|delete`
48
+ - `hscli crm pipelines list|get|create|update|delete` + `hscli crm pipelines stages create|update|delete`
49
+ - `hscli crm associations list|get|create|delete`
50
+ - `hscli crm owners list|get`
51
+
52
+ Imports + sync + introspection:
53
+ - `hscli crm imports list|get|create`
54
+ - `hscli crm sync pull --object <type>` — incremental sync
55
+ - `hscli crm describe <object> [--refresh-cache] [--offline]` — schema introspection
56
+ - `hscli crm validate <object> --data '<payload>' [--offline]` — client-side validation
57
+
58
+ ## Marketing (9 files)
59
+
60
+ - `hscli marketing emails list|get|create|update|delete`
61
+ - `hscli marketing emails stats <emailId>` — **per-email engagement metrics**
62
+ - `hscli marketing campaigns list|get|create|update|delete`
63
+ - `hscli marketing ads accounts|campaigns list|get`
64
+ - `hscli marketing social accounts|posts list|get`
65
+ - `hscli marketing seo recommendations|topics list|get`
66
+ - `hscli marketing landing-pages list|get|create|update|delete`
67
+ - `hscli marketing transactional send|smtp-tokens`
68
+ - `hscli marketing subscriptions list|get` — subscription types
69
+ - `hscli marketing events list|get|create|update|delete`
70
+ - `hscli marketing behavioral-events list|get|create|update`
71
+
72
+ ## Sales (4 files)
73
+
74
+ - `hscli sales sequences list|get|enrollments`
75
+ - `hscli sales meetings list|get|create|update`
76
+ - `hscli sales calling list|get`
77
+ - `hscli sales goals list|get`
78
+
79
+ ## Service (4 files)
80
+
81
+ - `hscli service conversations list|get|send-message`
82
+ - `hscli service feedback list|get`
83
+ - `hscli service chatflows list|get|create|update|delete`
84
+ - `hscli service knowledge-base articles list|get|create|update|delete`
85
+ - `hscli service pipelines list|get|create|update`
86
+
87
+ ## CMS
88
+
89
+ - `hscli cms hubdb tables list|get|rows list|create|update|delete`
90
+ - `hscli cms redirects list|get|create|update|delete`
91
+ - `hscli cms landing-pages list|get`
92
+ - `hscli cms domains list|get`
93
+
94
+ ## Lists (standalone top-level)
95
+
96
+ - `hscli lists list|get|create|update|delete`
97
+ - `hscli lists search --query <term>`
98
+ - `hscli lists add-members --list-id <id> --object-ids <ids>`
99
+ - `hscli lists remove-members --list-id <id> --object-ids <ids>`
100
+
101
+ ## Reporting
102
+
103
+ - `hscli reporting dashboards list|get`
104
+ - `hscli reporting reports list|get`
105
+
106
+ ## Exports
107
+
108
+ - `hscli exports create --data '<payload>'`
109
+ - `hscli exports list|get|status <id>`
110
+
111
+ ## Settings
112
+
113
+ - `hscli settings users list|get|create|update|delete` + `roles list`
114
+ - `hscli settings teams list`
115
+ - `hscli settings business-units list`
116
+ - `hscli settings currencies list`
117
+ - `hscli settings gdpr delete-contact <id>`
118
+ - `hscli settings audit-logs list [--filters]`
119
+
120
+ ## Account
121
+
122
+ - `hscli account info`
123
+ - `hscli account audit-logs list [--filters]`
124
+ - `hscli account private-apps` — **list private apps installed (integration audit)**
125
+ - `hscli account api-usage` — daily API usage totals
126
+
127
+ ## Communication preferences
128
+
129
+ - `hscli communication-preferences status|definitions|update`
130
+
131
+ ## Conversations
132
+
133
+ - `hscli conversations list|get|send-message`
134
+
135
+ ## Events
136
+
137
+ - `hscli events list|get|create`
138
+
139
+ ## Automation
140
+
141
+ - `hscli automation flows list|get` + `actions list|get`
142
+
143
+ ## Workflows
144
+
145
+ - `hscli workflows flows list|get` + `actions list|get` + `sequences list|get`
146
+
147
+ ## Files + Forms + Domains + Site-search + Timeline
148
+
149
+ - `hscli files list|get|upload|delete`
150
+ - `hscli forms list|get|submissions list|create`
151
+ - `hscli domains list|get`
152
+ - `hscli site-search list --type <type>`
153
+ - `hscli timeline events list|create`
154
+
155
+ ## Webhooks
156
+
157
+ - `hscli webhooks list --app-id <id>`
158
+ - `hscli webhooks subscribe --app-id <id> --data '<payload>'`
159
+ - `hscli webhooks delete --app-id <id> --subscription-id <id>`
160
+
161
+ ## Raw API
162
+
163
+ - `hscli api request --path <path> [--method GET|POST|PATCH|PUT|DELETE] [--data '<payload>']`
164
+ - Path is validated against the allowed API scopes — SSRF and traversal attempts are rejected at transport.
165
+
166
+ ## MCP server
167
+
168
+ - `hscli mcp` — start MCP server over stdio. ~125 tools across the full surface. Profile-isolated via `HSCLI_MCP_PROFILE`.
169
+
170
+ Full tool catalog and Claude Desktop / Cursor config in [MCP.md](MCP.md).
171
+
172
+ ## Seed (dev + testing)
173
+
174
+ - `hscli seed --all [--dry-run]` — seed a test portal with the 48-asset baseline
175
+
176
+ ## Notes
177
+
178
+ - All live writes require `--force` (or `--dry-run` to simulate).
179
+ - Write and batch requests include an `Idempotency-Key` header for replay safety.
180
+ - Transport tracks HubSpot rate-limit headers and throttles proactively.
181
+ - Policy checks apply to writes/deletes when `--policy-file` is provided.
182
+ - Capability cache is keyed by portal + token scopes; `--strict-capabilities` forces cached-state preflight.
183
+ - Schema cache (`crm describe` / `crm validate`) supports an `--offline` mode after first fetch.