@zoominfo/gtm-ai-cli 1.1.0 → 2.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.
- package/README.md +121 -27
- package/dist/index.js +98 -98
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# GTM AI CLI
|
|
2
2
|
|
|
3
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
|
|
5
|
-
through your shell as JSON, JSONL, CSV, YAML, or a table.
|
|
4
|
+
Search and enrich companies and contacts, surface intent / news / scoop signals, browse engagement history,
|
|
5
|
+
manage GTM context, and pipe results through your shell as JSON, JSONL, CSV, YAML, or a table.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -141,7 +141,7 @@ gtm lookup --field tech-products --vendor "HubSpot, Inc"
|
|
|
141
141
|
gtm lookup --field metro-regions --fuzzy "san francisco"
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
Valid `--field` names: `industries`, `metro-regions`, `states`, `countries`, `continents`, `management-levels`, `departments`, `job-functions`, `employee-count`, `revenue-ranges`, `company-types`, `company-rankings`, `intent-topics`, `scoop-topics`, `scoop-types`, `scoop-departments`, `news-categories`, `naics-codes`, `sic-codes`, `tech-vendors`, `tech-products`, `tech-categories`, `tech-skills`, `hashtags`, `buying-groups`, `board-members`, `years-of-experience`, `sub-unit-types`, `job-titles`.
|
|
144
|
+
Valid `--field` names: `industries`, `metro-regions`, `states`, `countries`, `continents`, `management-levels`, `departments`, `job-functions`, `employee-count`, `revenue-ranges`, `funding-round-types`, `company-types`, `company-rankings`, `intent-topics`, `scoop-topics`, `scoop-types`, `scoop-departments`, `news-categories`, `naics-codes`, `sic-codes`, `tech-vendors`, `tech-products`, `tech-categories`, `tech-skills`, `hashtags`, `buying-groups`, `board-members`, `years-of-experience`, `sub-unit-types`, `job-titles`.
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
|
|
@@ -162,8 +162,9 @@ gtm companies search --type public --country "United States" --revenue-min 10000
|
|
|
162
162
|
# Companies using a specific tech product (lookup product IDs first)
|
|
163
163
|
gtm companies search --tech "5f1d1d5c123" --metro "MA - Boston" --employees "250to499,500to999"
|
|
164
164
|
|
|
165
|
-
#
|
|
166
|
-
|
|
165
|
+
# US software companies whose most recent round was Series A or B
|
|
166
|
+
# (use --any-funding-round to match any round in their history instead)
|
|
167
|
+
gtm companies search --industry software --country "United States" --recent-funding-round "Series A,Series B"
|
|
167
168
|
|
|
168
169
|
# By NAICS / SIC codes
|
|
169
170
|
gtm companies search --naics "541511,541512"
|
|
@@ -183,6 +184,9 @@ gtm companies enrich --domain stripe.com --fields name description website reven
|
|
|
183
184
|
|
|
184
185
|
# Bulk: up to 10 companies via JSON file
|
|
185
186
|
# companies.json: [{ "domain": "stripe.com" }, { "companyId": "344589814" }]
|
|
187
|
+
# Each entry takes the MCP keys (companyId, companyName, companyWebsite, domain, companyTicker,
|
|
188
|
+
# ipAddress, companyCity, ...) or the flag names (id, name, website, ticker, ip).
|
|
189
|
+
# Unsupported keys are rejected.
|
|
186
190
|
gtm companies enrich --file companies.json
|
|
187
191
|
```
|
|
188
192
|
|
|
@@ -191,6 +195,9 @@ gtm companies enrich --file companies.json
|
|
|
191
195
|
```shell
|
|
192
196
|
gtm companies similar --id 344589814
|
|
193
197
|
gtm companies similar --name "Stripe"
|
|
198
|
+
|
|
199
|
+
# Narrow to look-alikes that share attributes with the reference company
|
|
200
|
+
gtm companies similar --id 344589814 --same-industry --same-country --page-size 50
|
|
194
201
|
```
|
|
195
202
|
|
|
196
203
|
---
|
|
@@ -215,8 +222,17 @@ gtm contacts search --management-level Manager --department "Engineering & Techn
|
|
|
215
222
|
|
|
216
223
|
# Sales leaders with accuracy score ≥ 90
|
|
217
224
|
gtm contacts search --management-level "VP Level Exec" --department Sales --accuracy-min 90
|
|
225
|
+
|
|
226
|
+
# People who WORK in metro Boston (not just companies headquartered there) — --location-type
|
|
227
|
+
# scopes the location filters to the person, the company HQ, or both
|
|
228
|
+
gtm contacts search --job-title "CFO" --metro "MA - Boston" --location-type Person
|
|
229
|
+
|
|
230
|
+
# Within 25 miles of a zip code
|
|
231
|
+
gtm contacts search --management-level "C Level Exec" --zip 02110 --zip-radius 25
|
|
218
232
|
```
|
|
219
233
|
|
|
234
|
+
`--location-type` accepts `Person`, `HQ`, `PersonOrHQ`, `PersonAndHQ`, or `PersonThenHQ` and requires at least one location filter (`--metro`, `--state`, `--country`, `--zip`). It's also available on `gtm intent search` and `gtm scoops search`.
|
|
235
|
+
|
|
220
236
|
**Enrich.** Provide any valid identifier combination — `personId` (most accurate), `email`, `phone`, or `firstName + lastName + (company OR companyId)`:
|
|
221
237
|
|
|
222
238
|
```shell
|
|
@@ -231,6 +247,9 @@ gtm contacts enrich --email jane@acme.com --fields phone jobTitle managementLeve
|
|
|
231
247
|
|
|
232
248
|
# Bulk: up to 10 contacts via JSON file
|
|
233
249
|
# contacts.json: [{ "email": "a@b.com" }, { "personId": "1260398587" }]
|
|
250
|
+
# Each entry takes the MCP keys (personId, email, phone, firstName, lastName, fullName,
|
|
251
|
+
# companyName, companyId, jobTitle, ...) or the flag names (id, company).
|
|
252
|
+
# Unsupported keys are rejected.
|
|
234
253
|
gtm contacts enrich --file contacts.json
|
|
235
254
|
```
|
|
236
255
|
|
|
@@ -270,13 +289,7 @@ gtm intent search --topics "Mobile Apps" --signal-score-min 80 \
|
|
|
270
289
|
gtm intent search --topics "AI Agents" --audience-strength-min B --audience-strength-max A
|
|
271
290
|
```
|
|
272
291
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
```shell
|
|
276
|
-
gtm intent enrich --company-id 344589814 --topics "Cloud Applications" "Java"
|
|
277
|
-
gtm intent enrich --name "ZoomInfo" --topics "AI Agents" --signal-score-min 70
|
|
278
|
-
gtm intent enrich --website https://www.stripe.com --topics "Payments"
|
|
279
|
-
```
|
|
292
|
+
For intent signals on a *specific* company, use [`gtm signals`](#gtm-signals--per-company-intent--news--scoops) with `--types INTENT`.
|
|
280
293
|
|
|
281
294
|
---
|
|
282
295
|
|
|
@@ -299,31 +312,31 @@ gtm scoops search --scoop-types Layoffs --employees "10000plus" --published-star
|
|
|
299
312
|
gtm scoops search --scoop-types "Product Launch" --description "artificial intelligence" --published-start 2026-04-01
|
|
300
313
|
```
|
|
301
314
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
```shell
|
|
305
|
-
gtm scoops enrich --company-id 344589814 --scoop-types "New Hire" Promotion
|
|
306
|
-
gtm scoops enrich --name "Stripe" --published-start 2026-01-01
|
|
307
|
-
```
|
|
315
|
+
For scoops on a *specific* company, use [`gtm signals`](#gtm-signals--per-company-intent--news--scoops) with `--types SCOOP`.
|
|
308
316
|
|
|
309
317
|
---
|
|
310
318
|
|
|
311
|
-
### `gtm
|
|
319
|
+
### `gtm signals` — per-company intent + news + scoops
|
|
312
320
|
|
|
313
|
-
|
|
321
|
+
One call returns the latest signals across all three categories for up to 10 companies — ideal for
|
|
322
|
+
a quick "what's happening at these accounts" sweep. Replaces the former `gtm intent enrich`,
|
|
323
|
+
`gtm scoops enrich`, and `gtm news enrich` commands (the MCP consolidated those tools into
|
|
324
|
+
`enrich_company_signals`).
|
|
314
325
|
|
|
315
326
|
```shell
|
|
316
|
-
#
|
|
317
|
-
gtm
|
|
327
|
+
# Everything recent for one company (intent + news + scoops, sorted by latest date)
|
|
328
|
+
gtm signals --company-ids 344589814
|
|
318
329
|
|
|
319
|
-
#
|
|
320
|
-
gtm
|
|
330
|
+
# Just the news
|
|
331
|
+
gtm signals --company-ids 344589814 --types NEWS
|
|
321
332
|
|
|
322
|
-
#
|
|
323
|
-
gtm
|
|
333
|
+
# Intent + scoops across a batch of target accounts
|
|
334
|
+
gtm signals --company-ids 344589814 239305146 5237537 --types INTENT SCOOP
|
|
324
335
|
```
|
|
325
336
|
|
|
326
|
-
|
|
337
|
+
The response is `{ results: [{ company, signals: [...] }] }` — each signal has `signalType`,
|
|
338
|
+
`date`, `summary`, and type-specific `details`. Charges data credits for companies not under
|
|
339
|
+
management (companies enriched within the prior 12 months don't incur additional charges).
|
|
327
340
|
|
|
328
341
|
---
|
|
329
342
|
|
|
@@ -376,6 +389,87 @@ gtm research contact --contact-id 1260398587 \
|
|
|
376
389
|
|
|
377
390
|
---
|
|
378
391
|
|
|
392
|
+
### `gtm engagements` — meetings, emails, and conversation intelligence
|
|
393
|
+
|
|
394
|
+
Requires your ZoomInfo org to have a calendar / email / meeting provider integration configured.
|
|
395
|
+
`list` is free (no data credits).
|
|
396
|
+
|
|
397
|
+
```shell
|
|
398
|
+
# Recent engagements (default window: last 7 days → 7 days ahead)
|
|
399
|
+
gtm engagements list --limit 10
|
|
400
|
+
|
|
401
|
+
# Meetings with a specific account, newest first
|
|
402
|
+
gtm engagements list --company-id 344589814 --type MEETINGS --sort -chronological
|
|
403
|
+
|
|
404
|
+
# A specific date window (ISO 8601, max 90 days)
|
|
405
|
+
gtm engagements list --start 2026-06-01T00:00:00Z --end 2026-08-01T00:00:00Z
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
**Ask** — natural-language questions over calls, meetings, and emails. Scope to exactly one of an
|
|
409
|
+
engagement, an account, or a contact:
|
|
410
|
+
|
|
411
|
+
```shell
|
|
412
|
+
# Account scope: synthesize across recent engagements
|
|
413
|
+
gtm engagements ask --company-id 344589814 --query "What concerns has this account raised recently? What did we promise them?"
|
|
414
|
+
|
|
415
|
+
# Contact scope
|
|
416
|
+
gtm engagements ask --contact-id 1260398587 --query "What has this person told us they care about?"
|
|
417
|
+
|
|
418
|
+
# Engagement scope: drill into one call/meeting/email (IDs come from `gtm engagements list` — quote them, some contain angle brackets)
|
|
419
|
+
gtm engagements ask --engagement-id "<abc123@mail.example.com>" --query "What were the main objections?"
|
|
420
|
+
|
|
421
|
+
# Include the raw transcript / email body (engagement scope only — can be very large)
|
|
422
|
+
gtm engagements ask --engagement-id "abc123" --query "Summarize this call" --include-content
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
### `gtm audiences` — GTM Studio audiences
|
|
428
|
+
|
|
429
|
+
Audiences are GTM Studio's list-building workbooks (rows of contacts or companies, plus custom
|
|
430
|
+
and AI-populated columns). The write subcommands drive a downstream AI agent, so they require
|
|
431
|
+
`--instruction` — a complete, self-contained description of what to do (the agent sees nothing
|
|
432
|
+
else from your session).
|
|
433
|
+
|
|
434
|
+
```shell
|
|
435
|
+
# Find an audience (the returned id is the audienceId for every other subcommand)
|
|
436
|
+
gtm audiences list --search "Q3 outbound" --type COMPANY
|
|
437
|
+
|
|
438
|
+
# Columns + a 10-row preview
|
|
439
|
+
gtm audiences get --id <audienceId> --preview 10
|
|
440
|
+
|
|
441
|
+
# Create — plain named audience
|
|
442
|
+
gtm audiences create --name "Q3 outbound targets" --type COMPANY \
|
|
443
|
+
--instruction "Create an audience for Q3 outbound targets: enterprise SaaS companies in North America."
|
|
444
|
+
|
|
445
|
+
# Create from ZoomInfo search criteria (pass the exact search params as JSON)
|
|
446
|
+
gtm audiences create --name "Boston CFOs" --type CONTACT \
|
|
447
|
+
--instruction "Build a lead list of CFOs at Boston-area companies." \
|
|
448
|
+
--search-query '{"jobTitleList":["CFO"],"metroRegion":"MA - Boston"}'
|
|
449
|
+
|
|
450
|
+
# Rename / annotate
|
|
451
|
+
gtm audiences update --id <audienceId> --name "Q4 outbound targets" \
|
|
452
|
+
--instruction "Rename the audience to Q4 outbound targets."
|
|
453
|
+
|
|
454
|
+
# Add columns / load rows from JSON files
|
|
455
|
+
gtm audiences columns --id <audienceId> --file ./columns.json
|
|
456
|
+
gtm audiences rows --id <audienceId> --file ./rows.json \
|
|
457
|
+
--instruction "Load these trade-show leads into the audience."
|
|
458
|
+
|
|
459
|
+
# Ask the analysis agent
|
|
460
|
+
gtm audiences analyze --id <audienceId> --query "Summarize this audience and show the top industries"
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
`--search-query` takes the exact params of the matching search (`search_companies` for `COMPANY`,
|
|
464
|
+
`search_contacts` for `CONTACT`) as a JSON object — run the search with `--debug` to see them.
|
|
465
|
+
`page`, `pageSize`, and `sort` are dropped, since they don't apply to audience creation.
|
|
466
|
+
|
|
467
|
+
`columns.json` is an array of `{ name, dataType, agentInstruction }` (add `columnId` to update);
|
|
468
|
+
`rows.json` is an array of `{ values: [{ columnId, value }] }` (add `rowId` to update, max 50 per
|
|
469
|
+
call). Column and row IDs come from `gtm audiences get`.
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
379
473
|
### `gtm raw` — universal escape hatch
|
|
380
474
|
|
|
381
475
|
Use this when you need a tool that doesn't have a curated wrapper yet.
|