@zoominfo/gtm-ai-cli 1.0.0 → 1.1.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.
Files changed (3) hide show
  1. package/README.md +89 -44
  2. package/dist/index.js +29 -29
  3. package/package.json +21 -7
package/README.md CHANGED
@@ -1,41 +1,86 @@
1
1
  # GTM AI CLI
2
2
 
3
- A command-line interface for the [ZoomInfo](https://www.zoominfo.com/) GTM AI MCP server. Search and enrich companies and contacts, surface intent signals and news, manage GTM context, and pipe results through your shell as JSON, JSONL, CSV, YAML, or a table.
4
-
5
- > **Status:** working end-to-end against `mcp.zoominfo.com`. The OAuth client name is currently `GTM AI CLI` — pending the ZI MCP team adding it to the DCR vendor allowlist. Until that lands, the first `gtm auth login` returns `"Vendor with name GTM AI CLI was not found in approved vendors"`. See `src/oauth.ts:17` for the handshake.
3
+ A command-line interface for searching [ZoomInfo](https://www.zoominfo.com/) go-to-market (GTM) data.
4
+ Search and enrich companies and contacts, surface intent signals and news, manage GTM context, and pipe results
5
+ through your shell as JSON, JSONL, CSV, YAML, or a table.
6
6
 
7
7
  ## Installation
8
8
 
9
- ### From source (Node 18+)
9
+ ### Homebrew (macOS and Linux)
10
10
 
11
- ```bash
12
- git clone https://github.com/zoominfo/gtm-ai-cli.git
13
- cd gtm-ai-cli
14
- npm install
15
- npm run build:ts
16
- npm link # makes `gtm` available globally
11
+ The easiest way to install the GTM CLI on MacOS or Linux is using [Homebrew](https://brew.sh/).
12
+
13
+ ```shell
14
+ brew install zoominfo/gtm-ai/gtm-ai-cli
17
15
  ```
18
16
 
19
- ### Homebrew (coming soon)
17
+ > **Heads-up:** the unrelated [Git Time Metric](https://github.com/git-time-metric/gtm) project also ships a `gtm` binary via Homebrew — always install with the tap-qualified name above, not a bare `brew install gtm`.
18
+
19
+ To upgrade to the latest version, run
20
+
21
+ ```shell
22
+ brew upgrade gtm-ai-cli
23
+ ```
24
+
25
+ ### NPM
26
+
27
+ For Windows users or users unable to use Homebrew, you can also install the GTM CLI through NPM
28
+ or any other node package installer (yarn, bun, etc.)
29
+
30
+ Ensure that you install it as a **global** package
31
+
32
+ ```shell
33
+ npm install -g @zoominfo/gtm-ai-cli
34
+ ```
20
35
 
21
- ```bash
22
- # planned once binary releases are signed and published
23
- brew install zoominfo/gtm-ai-cli/gtm-ai-cli
36
+ This installs the canonical `gtm` command plus a `zoominfo` alias — every command works identically under either name (e.g. `zoominfo companies search`). These docs use `gtm` throughout.
37
+
38
+ ### Download a Prebuilt Binary
39
+
40
+ Download the latest binary from the [releases](https://github.com/Zoominfo/gtm-ai-cli/releases) page for your platform.
41
+ The platforms supported by this tool are:
42
+ * macOS w/ Apple Silicon (arm64)
43
+ * macOS w/ Intel processor (x64)
44
+ * Linux
45
+ * Windows
46
+
47
+ Make the downloaded package executable and place it on your PATH
48
+
49
+ **macOS and Linux**
50
+ ```shell
51
+ chmod +x gtm-macos-arm64
52
+ mv gtm-macos-arm64 /usr/local/bin/gtm
53
+ xattr -d com.apple.quarantine /usr/local/bin/gtm #only required on macOS
54
+ ```
55
+
56
+ **Windows**
57
+ ```powershell
58
+ Move-Item .\gtm-windows-x64.exe "$env:USERPROFILE\bin\gtm.exe"
59
+ ```
60
+
61
+ ### From source (Node 18+)
62
+
63
+ ```shell
64
+ git clone https://github.com/Zoominfo/gtm-ai-cli.git
65
+ cd gtm-ai-cli
66
+ npm install
67
+ npm run build
68
+ npm link # makes `gtm` (and its alias `zoominfo`) available globally
24
69
  ```
25
70
 
26
71
  ## Authentication
27
72
 
28
73
  OAuth 2.0 + PKCE via your browser. Tokens are saved to `~/.config/gtm-ai/` at mode `0600`.
29
74
 
30
- ```bash
75
+ ```shell
31
76
  gtm auth login # opens browser to authorize, saves token
32
- gtm auth whoami # show login status + token expiry
77
+ gtm auth whoami # show login status
33
78
  gtm auth logout # revoke token and remove saved credentials
34
79
  ```
35
80
 
36
81
  If you ever need a clean slate (e.g. to re-trigger DCR), remove the saved client:
37
82
 
38
- ```bash
83
+ ```shell
39
84
  rm ~/.config/gtm-ai/client_id ~/.config/gtm-ai/credentials
40
85
  gtm auth login
41
86
  ```
@@ -52,7 +97,7 @@ Every subcommand accepts `-f, --format`. The `table` and `csv` formats auto-flat
52
97
  | `yaml` | Human-readable diffs of deeply nested responses. |
53
98
  | `table` | ASCII bordered table. Best for terminal browsing of small responses. |
54
99
 
55
- ```bash
100
+ ```shell
56
101
  gtm companies search --industry software -f table
57
102
  gtm contacts search --management-level "C Level Exec" -f jsonl > c-level-contacts.jsonl
58
103
  gtm-context get -f yaml
@@ -65,7 +110,7 @@ dotted paths to project from each record, applied before formatting. Handy for n
65
110
  quick scans without `jq`. (Distinct from the enrich commands' `--fields`, which selects which
66
111
  fields ZoomInfo returns server-side.)
67
112
 
68
- ```bash
113
+ ```shell
69
114
  gtm companies search --industry software --page-size 5 --select id,name,revenue -f table
70
115
  gtm companies search --industry software --select name,company.id -f csv > orgs.csv
71
116
  ```
@@ -78,7 +123,7 @@ gtm companies search --industry software --select name,company.id -f csv > orgs.
78
123
 
79
124
  ZoomInfo's search endpoints reject unknown industry/metro/topic strings with 422. **Always look up the canonical ID first**, then pass it to the search filters.
80
125
 
81
- ```bash
126
+ ```shell
82
127
  # Industries containing "software"
83
128
  gtm lookup --field industries --fuzzy software -f table
84
129
 
@@ -104,7 +149,7 @@ Valid `--field` names: `industries`, `metro-regions`, `states`, `countries`, `co
104
149
 
105
150
  **Search.** Requires at least one filter.
106
151
 
107
- ```bash
152
+ ```shell
108
153
  # By name
109
154
  gtm companies search --name "ZoomInfo"
110
155
 
@@ -126,7 +171,7 @@ gtm companies search --naics "541511,541512"
126
171
 
127
172
  **Enrich.** Provide any identifier:
128
173
 
129
- ```bash
174
+ ```shell
130
175
  gtm companies enrich --id 344589814
131
176
  gtm companies enrich --domain stripe.com
132
177
  gtm companies enrich --name "Stripe"
@@ -143,7 +188,7 @@ gtm companies enrich --file companies.json
143
188
 
144
189
  **Similar companies** (machine-learning ranked list of look-alikes):
145
190
 
146
- ```bash
191
+ ```shell
147
192
  gtm companies similar --id 344589814
148
193
  gtm companies similar --name "Stripe"
149
194
  ```
@@ -154,7 +199,7 @@ gtm companies similar --name "Stripe"
154
199
 
155
200
  **Search.** Requires at least one filter.
156
201
 
157
- ```bash
202
+ ```shell
158
203
  # By name
159
204
  gtm contacts search --first-name Henry --last-name Schuck
160
205
 
@@ -174,7 +219,7 @@ gtm contacts search --management-level "VP Level Exec" --department Sales --accu
174
219
 
175
220
  **Enrich.** Provide any valid identifier combination — `personId` (most accurate), `email`, `phone`, or `firstName + lastName + (company OR companyId)`:
176
221
 
177
- ```bash
222
+ ```shell
178
223
  gtm contacts enrich --id 1260398587
179
224
  gtm contacts enrich --email henry@zoominfo.com
180
225
  gtm contacts enrich --phone 555-303-1234
@@ -191,14 +236,14 @@ gtm contacts enrich --file contacts.json
191
236
 
192
237
  **Similar contacts** (find people who look like a reference person; optionally constrain to a target company):
193
238
 
194
- ```bash
239
+ ```shell
195
240
  gtm contacts similar --person-id 1260398587
196
241
  gtm contacts similar --person-id 1260398587 --company-id 239305146 # similar contacts within Salesforce
197
242
  ```
198
243
 
199
244
  **Recommended contacts** at a target company, based on your interaction history:
200
245
 
201
- ```bash
246
+ ```shell
202
247
  gtm contacts recommended --company-id 344589814 --use-case PROSPECTING
203
248
  gtm contacts recommended --company-id 344589814 --use-case DEAL_ACCELERATION
204
249
  gtm contacts recommended --company-id 344589814 --use-case RENEWAL_AND_GROWTH
@@ -210,7 +255,7 @@ gtm contacts recommended --company-id 344589814 --use-case RENEWAL_AND_GROWTH
210
255
 
211
256
  Every request needs `--topics` (1-50). Look up exact topic names first.
212
257
 
213
- ```bash
258
+ ```shell
214
259
  gtm lookup --field intent-topics --fuzzy "data warehouse"
215
260
 
216
261
  # Companies showing high intent for Cloud Applications + Java
@@ -227,7 +272,7 @@ gtm intent search --topics "AI Agents" --audience-strength-min B --audience-stre
227
272
 
228
273
  **Enrich** — pull intent signals for a specific company:
229
274
 
230
- ```bash
275
+ ```shell
231
276
  gtm intent enrich --company-id 344589814 --topics "Cloud Applications" "Java"
232
277
  gtm intent enrich --name "ZoomInfo" --topics "AI Agents" --signal-score-min 70
233
278
  gtm intent enrich --website https://www.stripe.com --topics "Payments"
@@ -239,7 +284,7 @@ gtm intent enrich --website https://www.stripe.com --topics "Payments"
239
284
 
240
285
  Scoops capture earnings, funding, M&A, leadership moves, layoffs, product launches, awards, partnerships, and more. Search requires at least one filter.
241
286
 
242
- ```bash
287
+ ```shell
243
288
  # Funding announcements at SF software companies in May 2026
244
289
  gtm scoops search --scoop-types Funding --industry software --metro "MA - Boston" \
245
290
  --published-start 2026-05-01 --published-end 2026-05-31
@@ -256,7 +301,7 @@ gtm scoops search --scoop-types "Product Launch" --description "artificial intel
256
301
 
257
302
  **Enrich** — get scoops for a specific company:
258
303
 
259
- ```bash
304
+ ```shell
260
305
  gtm scoops enrich --company-id 344589814 --scoop-types "New Hire" Promotion
261
306
  gtm scoops enrich --name "Stripe" --published-start 2026-01-01
262
307
  ```
@@ -267,7 +312,7 @@ gtm scoops enrich --name "Stripe" --published-start 2026-01-01
267
312
 
268
313
  `enrich_news` is currently the only news tool. Requires `--company-id`.
269
314
 
270
- ```bash
315
+ ```shell
271
316
  # Recent funding/financial news for ZoomInfo
272
317
  gtm news enrich --company-id 344589814 --categories FINANCIAL_RESULTS FUNDING
273
318
 
@@ -286,7 +331,7 @@ Valid `--categories`: `FINANCIAL_RESULTS`, `FUNDING`, `GENERAL_NEWS`, `GENERAL_P
286
331
 
287
332
  This is the context that shapes how every other ZoomInfo tool interprets your queries — your offerings, ICPs, buyer personas, competitors, strategic priorities. Zero credits consumed.
288
333
 
289
- ```bash
334
+ ```shell
290
335
  # Compressed view (~1k tokens)
291
336
  gtm-context get
292
337
 
@@ -304,7 +349,7 @@ gtm-context update --query "Create buyer personas from these interviews" --sourc
304
349
 
305
350
  ### `gtm feedback` — submit feedback to ZoomInfo
306
351
 
307
- ```bash
352
+ ```shell
308
353
  gtm feedback submit --category DATA_QUALITY --message "Henry Schuck's company should be ZoomInfo Technologies, not ZoomInfo"
309
354
  gtm feedback submit --category FEATURE_REQUEST --message "Want a --csv-headers flag to control column order"
310
355
  ```
@@ -319,7 +364,7 @@ Natural-language research that blends ZoomInfo market data with your CRM and con
319
364
  history. Frame the goal in `--query` (the tool decides what to retrieve) rather than passing
320
365
  keywords. Get the ZoomInfo IDs from `gtm companies search` / `gtm contacts search`.
321
366
 
322
- ```bash
367
+ ```shell
323
368
  # Company/account research
324
369
  gtm research account --company-id 344589814 \
325
370
  --query "Prepping for a renewal call — relationship status, recent news, and open risks"
@@ -335,7 +380,7 @@ gtm research contact --contact-id 1260398587 \
335
380
 
336
381
  Use this when you need a tool that doesn't have a curated wrapper yet.
337
382
 
338
- ```bash
383
+ ```shell
339
384
  # What tools does the MCP server expose?
340
385
  gtm raw list-tools -f table
341
386
 
@@ -350,7 +395,7 @@ gtm raw call search_intent --args '{"topics":["Cloud Applications"],"signalScore
350
395
 
351
396
  ### Pipe to `jq` for field extraction
352
397
 
353
- ```bash
398
+ ```shell
354
399
  # Just the company names from a search
355
400
  gtm companies search --industry software --metro "CA - San Francisco" | jq '.data[].attributes.name'
356
401
 
@@ -363,7 +408,7 @@ gtm intent search --topics "Cloud Applications" --signal-score-min 80 | jq '.dat
363
408
 
364
409
  ### Two-step: search companies, enrich top results
365
410
 
366
- ```bash
411
+ ```shell
367
412
  # Get top 3 company IDs, then enrich each with full details
368
413
  gtm companies search --industry software --metro "CA - San Francisco" --page-size 3 -f json \
369
414
  | jq -r '.data[].id' \
@@ -372,13 +417,13 @@ gtm companies search --industry software --metro "CA - San Francisco" --page-siz
372
417
 
373
418
  ### Export contacts to CSV
374
419
 
375
- ```bash
420
+ ```shell
376
421
  gtm contacts search --management-level "VP Level Exec" --department Sales --company-id 344589814 -f csv > vp-sales.csv
377
422
  ```
378
423
 
379
424
  ### Find lookalike companies, then enrich them
380
425
 
381
- ```bash
426
+ ```shell
382
427
  gtm companies similar --id 344589814 -f json \
383
428
  | jq -r '.data[0:10][].id' \
384
429
  | xargs -I{} gtm companies enrich --id {} --fields name domain employeeCount revenue industries
@@ -388,7 +433,7 @@ gtm companies similar --id 344589814 -f json \
388
433
 
389
434
  ## Development
390
435
 
391
- ```bash
436
+ ```shell
392
437
  npm install
393
438
  npm run typecheck # tsc --noEmit
394
439
  npm test # unit tests (Vitest, mocked)
@@ -402,14 +447,14 @@ The live suite (`src/live/`) drives the built CLI against the real MCP server, c
402
447
  read-only command end-to-end (it skips when you're not logged in). Run it against the compiled
403
448
  output and opt into the mutating tier explicitly:
404
449
 
405
- ```bash
450
+ ```shell
406
451
  GTM_CLI_CMD="node dist/js/index.js" npm run test:live # read-only (default)
407
452
  GTM_LIVE_WRITES=1 GTM_CLI_CMD="node dist/js/index.js" npm run test:live # + feedback / gtm-context update
408
453
  ```
409
454
 
410
455
  Build standalone single-file binaries (requires [Bun](https://bun.sh)):
411
456
 
412
- ```bash
457
+ ```shell
413
458
  npm run build # → dist/gtm (current platform)
414
459
  npm run build:all # cross-compile macOS arm64/x64, Linux x64, Windows x64
415
460
  ```
@@ -424,4 +469,4 @@ https://raw.githubusercontent.com/zoominfo/gtm-ai-cli/main/.claude/skills/gtm-ai
424
469
 
425
470
  ## License
426
471
 
427
- TBD — pending ZoomInfo legal review.
472
+ MIT