← Guides
cli

CLI, MCP, or API: Choosing How to Connect ZoomInfo to Your Stack

ZoomInfo exposes the same data three ways through one backend. The CLI runs in your shell, MCP puts the data inside an AI tool, and the API puts it inside code you write. What each one is, what the benchmark data says about cost and tokens, and how to choose.

Rowan BaileyRowan BaileySenior Director, Product··10 min read

The question shows up the first time someone hears the word MCP: does this replace the API we already planned to build? It does not, and there is a third option that gets skipped in the same conversation. ZoomInfo exposes the same records through a command-line tool, a hosted MCP server, and a REST API. All three hit one backend, respect the same entitlements, and draw on the same credit pool.

What separates them is who does the asking. The CLI is asked by a shell script. MCP is asked by a person talking to an AI tool. The API is asked by code you write and deploy. That difference drives everything else: setup time, output shape, token cost, and who on your team owns it.

The Short Version

Reach for the CLI when the work belongs in a terminal. Scripts, cron jobs, CI checks, and one-off pulls you want to pipe into jq. It is deterministic, and it is the cheapest way to move a large volume of records through an agent.

Reach for MCP when a person is in the loop and the answer depends on who's asking. Account research before a call, buying-committee mapping, segment sizing.

Reach for the API when you are building an application that needs its own retry logic, caching, and service-account credentials.

Most teams run more than one. A rep works in Claude while RevOps scripts against the CLI and engineering builds on the API, all against the same data.

Where Copilot Fits

Before comparing the three, separate them from ZoomInfo Copilot, which is where the confusion usually starts. Copilot is the AI experience built into the ZoomInfo platform. Nothing to connect and nothing to configure. The three paths below reach that same data from outside the platform, and a customer running Copilot today can add any of them without changing their existing setup.

What MCP Actually Is

MCP stands for Model Context Protocol. Anthropic created it and published it as an open standard, and it is not a ZoomInfo product name. Any vendor can run an MCP server, and any AI client can connect to one. Slack, Zoom, and hundreds of other tools already do.

The protocol solves a wiring problem. Before it existed, connecting an AI model to five systems meant five custom integrations, each written to a different spec. MCP replaces that with one interface: the client connects, asks the server what it can do, and the server answers with a list of tools it exposes. That last part is the real line between MCP and a REST API. With an API, a developer reads the docs and builds to a fixed spec. With MCP, the model reads the tool list at the start of every session and picks what to call based on the question in front of it.

When ZoomInfo adds a tool, it shows up in that list automatically. Nobody redeploys anything.

What the GTM CLI Is

The GTM CLI is a single binary, gtm, that puts the same data behind a command. It searches and enriches companies and contacts, pulls intent signals, scoops, and news, runs agentic research, and reads your GTM context.

shell
brew install zoominfo/gtm-ai/gtm-ai-cli
gtm auth login

Sign-in is OAuth in your browser, with no client ID or secret to paste. Install to first result runs about a minute, which makes the CLI the fastest way to confirm access before committing to a larger build. On Windows, or anywhere you run Node, npm install -g @zoominfo/gtm-ai-cli does the same job.

It connects to the same hosted endpoint as the MCP server, so the data, the credits, and the sign-in match what your AI tools already see. What changes is where the work runs and what comes back. Results stream out as JSON, JSONL, CSV, YAML, or a table. Every command returns a proper exit code, so it drops into a cron job or a CI step with no interactive prompts.

Here is a session end to end.

gtm cli · zsh

$ gtm auth login

browser sign-in complete · token saved to ~/.config/gtm-ai/

$ gtm companies search --industry software --metro "CA - San Francisco" -f table

42 companies · id, name, revenue, employeeCount

search is free · no credits consumed

$ gtm contacts search --management-level "C Level Exec" --required email -f jsonl > leads.jsonl

118 contacts written to leads.jsonl

$ gtm contacts enrich --email henry@zoominfo.com --fields phone jobTitle email

1 record enriched · 1 bulk credit

already under management? no credit charged

$ gtm companies search --industry software -f json | jq '.data[].attributes.name'

piped straight into jq, a CSV, or a cron job

no model in the loop|same command, same shape, every time

No model sits in the loop. The same command returns the same shape every time, which is the property scripts need and conversations don't. Full detail in the CLI docs and the getting started guide.

The Token Argument for the CLI

This is where the CLI earns a place on the shortlist. The numbers come from GTM Bench v1, which ran the same agent against the same ten B2B research tasks through five different retrieval tools.

Work tokens per retrieval path

10 GTM research tasks · Claude Opus 4.8 · GTM Bench v1

Lower is better. The CLI ran the same tasks on roughly a third of MCP’s tokens and 4% of the web baseline’s. MCP finished fastest on the clock and posted the highest verified-email coverage, at 94% against the CLI’s 91%.

Two conclusions are worth separating.

The first is about structured retrieval generally. A structured query returns compact records, where a web agent issues repeated searches, fetches large pages, and reads them. That gap runs roughly 24x in tokens and 4x in cost against the web baseline, and it applies to the CLI and MCP alike.

The second is specific to the CLI. Against MCP, it used about a third of the tokens for the same work. When an agent runs a task hundreds of times, or works a long list inside one context window, that ratio decides whether the job fits the budget at all.

The tradeoff runs the other way too, so be straight about it. MCP finished the same benchmark fastest, 32 minutes against the CLI's 53, and posted the highest verified-email coverage at 94 percent. GTM Bench v1 also measures coverage rather than correctness, so read it as a signal about fill rates and efficiency instead of a precision score. Here is the full set.

Retrieval pathWork tokensCostTotal timeVerified email coverage
ZoomInfo CLI460K$10.1253 min91%
ZoomInfo MCP1.48M$15.8032 min94%
Exa.ai3.38M$36.7555 min27%
Web search11.10M$43.88102 min22%

The full report has the methodology and per-task data.

How the Three Compare

GTM CLIMCPREST API
Who calls itA shell, a script, or a CI jobA person, in natural language, through an AI clientCode your team writes
Who picks the dataYou, in the commandThe model, from the tool list it reads each sessionThe developer, at the time they write the call
Setupbrew install, then gtm auth loginConnect your account in the AI tool's settingsRegister an app, implement OAuth, deploy
OutputJSON, JSONL, CSV, YAML, or a tableConversational, with the model choosing toolsDeterministic JSON against a fixed schema
DeterminismSame command, same shape, every timeVaries with how the model reasonsFixed
Token cost in an agentLowest of the threeRoughly 3x the CLI on GTM Bench v1Depends on your implementation
DirectionRead-onlyRead-onlyReads from ZoomInfo, writes into your systems
Time to first resultAbout a minuteMinutesA developer sprint
Who owns itRevOps and data teamsThe individual userEngineering

When Each One Is Right

The CLI fits people who already live in a terminal and want data they can pipe. It also fits agent workloads where token budget is the binding constraint, since a Claude Code or Codex session can shell out to gtm instead of pulling records through a conversation. That is the same pattern GTM Bench measured, and it is why the CLI arm came in cheapest.

MCP earns its place wherever the request is personal. "Research the accounts I'm meeting with this week" resolves against that rep's calendar. "Show me my renewals and what those accounts said on recent calls" resolves against their book of business. Each user authenticates with their own ZoomInfo login, so the server can answer questions containing the word my. See User Sign-In vs Service Account for how that model works, and the connector catalog for which clients connect today.

The API wins on volume and write access. A nightly job enriching new CRM records has no person in the loop and no reason to phrase anything in English. Neither does a scoring service that needs the same field, in the same shape, on every call. Three requirements point at it: data has to land in another system, volume exceeds interactive use, or the output feeds an application with its own retry and caching logic. See Building Audiences with the GTM Studio API for a worked example, and How to Build Your Own App for app registration.

What Each One Costs

All three draw on the same pool, so running more than one does not mean paying twice.

None of them carries a separate fee. MCP and the CLI are included with all ZoomInfo subscriptions. API access is included as well, gated by entitlement rather than by price: an admin assigns the DevPortal subscription that turns it on. What each consumes is your existing credit allocation: bulk data credits for enrichment, AI action credits for the research agents, and nothing at all for search, lookup, and find-similar. The Tools overview lists the credit type for every tool, free, bulk, or AI action.

📌

All three require bulk data credits

Recurring monthly credits do not work. That one gap causes most failed first connections. To see what an account holds, open Admin Portal → Usage → Data Credit Dashboard; if no bulk credits appear there, a ZoomInfo admin or your account team enables them. One more toggle matters. API Access, set per user under Admin Portal → Users → User Management, is what governs connectivity. See Credits & Billing for the full credit model and Security & Data for that toggle.

Records Under Management keeps the math honest across surfaces. Once a record is enriched anywhere in the platform, it stays under management for 12 months at the organization level, and no further credit is charged for it in that window. Enrich an account through the API on Monday, pull it up in Claude on Friday, and you paid once.

Check These Before You Connect

  • MCP needs an AI tool that supports it. The connector catalog lists what connects today, and some tools require a paid tier or admin approval first.
  • The CLI needs a shell and a package manager. Prebuilt binaries for every platform sit on the releases page if you would rather skip Homebrew and npm.
  • Everyone signs in individually. Admin-only seats have no data access by design and cannot connect through any path.
  • The CLI and MCP are read-only. Bulk exports, CRM write-back, and batch enrichment pipelines belong on the API.

Choosing

Answer one question and the decision mostly makes itself: where does the work happen?

Terminal and scripts go to the CLI. Agents and conversations go to MCP. Applications go to the API.

If the honest answer is more than one, run more than one. A rep gets ZoomInfo inside Claude this afternoon, RevOps has a scheduled pull running by Friday, and engineering scopes the pipeline for next quarter. None of them waits on the others, and every credit they consume lands in the same place.