gtm.dev
the gtm data layer · mcp-native · first-party

Your agent, wired into the graph.

150M people. 10M companies, embedded. Live buying signals. gtm.dev exposes the graph as typed tools an agent calls directly — resolve, search semantically, verify — and every point behind this page is a real company in vector space.

Start building

22 tools · one key · usage-priced · ✓ verified, or null — never a guess

01 · the graphfirst-party — we run the pipelines

Three planes of data. One graph underneath.

Not a resold database — a graph we scrape, resolve, enrich, and verify ourselves. Every plane joins on the same canonical org id, so your agent never joins on a company name again.

150,214,833people

Org charts, not contact lists. 48M people mapped into reporting structures — role level, teams, tenure — inside 150M+ professional profiles with titles scored for confidence. Ask for “VP+ in finance” and mean it.

org charts · professional profiles · title confidence
9,812,441companies · embedded

Firmographics plus vectors. Industry, size, geo, description — and 8M vector embeddings over the graph, so “API-first payroll for global teams” is a query, not a filter puzzle.

firmographics · 8M embeddings · lookalikes
13M+live signals

The “why now” plane. 412K advertisers ranked by impressions, 2.8M job posts, 3.5M funding histories, 4.4M tech detections, 1.9M trade-show exhibitor listings — each resolved to a company you can act on.

ads · hiring · funding · tech · events
02 · vector-nativehnsw vector index · 8M company embeddings

Search by meaning, not by filter.

Firmographic filters can’t say “feels like Stripe, but for logistics” — there’s no dropdown for that. Embeddings can. The whole company graph lives in vector space — the atlas you scrolled past is it — so your agent describes the ICP in plain language and gets a ranked neighborhood back.

Lookalikes fall out for free: seed one great customer, get its nearest neighbors by cosine — the expansion list every agent asks for eventually.

search_companiesplain-language ICP + any filter or signal → ranked companies
lookalikesseed company → nearest neighbors, scored
size_tamthe same query → a count + a reusable filter set
lookalikes(“rippling”) · cosine, hnsw · 8msdeel0.94gusto0.91justworks0.89papaya0.86remote0.85oyster0.83rippling
03 · signalsthe "why now" — the layer a contact db can't give you

Who’s spending. Who’s hiring. Who just raised. Who’s exhibiting.

A contact database tells you who exists. Signals tell you why now — active budget, active pain, active change — every one resolved to a real company.

search_companies
› search_companies({ query: "restaurant software", running_ads: true,
    ads_platforms: ["linkedin"] })
// ranked by meaning, filtered to companies with live ad budgets
Restaurant365108 linkedin ads17,000,000+ impr
PAR Technology16 linkedin ads4,300,000+ impr
Tillster26 linkedin ads3,290,000+ impr
Crunchtime35 linkedin ads3,170,000+ impr

Active budget is the loudest signal there is.

412K advertisers from the Meta, LinkedIn and Google ad libraries, resolved to real companies and ranked by impressions. If they're paying to reach a market, they have budget, urgency and a GTM motion.

public ad libraries · meta + linkedin + google · impressions per advertiser
04 · compositioneach tool’s output is the next tool’s input

Seven calls. Zero glue code.

Every GTM agent runs the same loop: find the trigger, resolve the account, qualify it, find the person, verify the channel, personalize. Today that loop crosses five vendors and a pile of glue code.

On gtm.dev it’s one server — every hop typed, every record carrying provenance. The trace on the right is the whole integration.

agent trace · one key
task: "Sales VPs at restaurant software companies hiring SDRs — verified emails, briefed"
→search_companies("restaurant sw" + SDRs)7.8s20 companies
→resolve_company("Owner.com")0.9sorg 18693608 · 0.97
→company_funding(owner.com)0.8s$182M · series D
→company_hiring(owner.com)0.9s56 openings · 40 titles
→find_people(sales, vp+)1.0s2 people
→enrich_person("linkedin.com/in/tina…")18.3s✓ email verified
→research_company(owner.com)10.9scited brief · 3 hooks
7 calls · 40.6s · every record verified, first-party, attributable
05 · verifiedprovenance on every record

Verified, or nothing.

We don’t resell a database. We operate the pipelines and expose the output — which means we can tell you where every field came from, and we’d rather return null than guess.

first-party

We run the pipelines

The graph is built in-house, end to end. No vendor’s stale dump underneath, no license that vanishes. When a field is wrong, we can trace it to the run that produced it.

scrape→resolve→enrich→verify
live verification

Emails verified at call time

A waterfall of finding providers, then live verification — status and score on every address. enrich_person does the work when you call it, not in a batch last quarter.

cited research

Research with receipts

research_company and research_person read live web pages and quote the exact passage behind every claim. Each quote is checked against the page; a claim that doesn’t match is dropped and counted, not shown.

resolution

Messy input, canonical output

“Acme Labs”, acme.io, half a URL — the resolver’s trigram + description + LLM cascade lands on one canonical entity with a confidence score. Every other tool composes on it.

email_status: "not_found"
The null is the feature.

No address verified — so you get nothing, not a firstname.lastname guess that bounces and burns your sender. Catch-all domains get the same answer. Honesty is cheaper than a blocked domain.

06 · developersmcp-first · rest when you want it

Wired for agents, not dashboards.

Designed as tools an LLM calls — not an API bolted onto a UI product. Connect the MCP server, or hit the same tools over REST.

01
Typed in, structured out

JSON Schema on every input; structured, versioned outputs. Your agent never parses prose.

02
Disambiguation built in

Ambiguous input returns candidates with confidence — the resolution step agents otherwise get wrong.

03
One key, metered by the call

gtm_live_sk_… / gtm_test_sk_… — test mode is free and fake-data-safe.

speaks mcp toclaudecursoropenai agentslangchainn8nclay
{
  "mcpServers": {
    "gtm": {
      "url": "https://mcp.gtm.dev",
      "headers": { "authorization": "Bearer gtm_live_sk_…" }
    }
  }
}
// that's the whole integration — every tool appears in your agent
$ gtm tools --list · 22 tools · 5 groups
resolve & enrich
resolve_companymessy name → org id
enrich_companyfull firmographics
normalize_titletitle → seniority + function
resolve_geocity → region → country
people
enrich_personprofile + verified email
find_peopletitles × companies × geo
find companies
build_listdescription → table
lookalikesseed → neighbors
plan_targetingplain ICP → filters
search_companiesfilters · meaning · signals
size_tamfilters → count
research
research_companycited company brief
research_personcited public facts
signals
who_is_advertisingadvertisers by impressions
who_is_hiringrole × geo
find_fundedstage · recency
company_techdetected stack
company_ad_activityone company's ads
company_eventsshows exhibited · sponsored
company_fundingrounds · investors
company_hiringopen roles · intensity
who_uses_techtool → companies
07 · who builds on it · pricingusage-priced · no seats · no sales call
01 · in-house agents

Engineers building GTM agents

Founders and platform teams wiring an LLM to “find the right people at the right accounts.” You want primitives, not another SaaS login.

who_is_advertising → find_people → enrich_person

02 · revops / gtm eng

The Clay-and-n8n crowd

You already orchestrate workflows. Point them at MCP tools with verified data behind them instead of six enrichment columns that disagree.

build_list → find_people → enrich_person

03 · ai product teams

B2B data inside your product

A vertical CRM, an analytics tool, a sales copilot — embed enrichment and signals via API without becoming a data company yourself.

resolve_company → enrich_company → company_tech

RocketSDR

The flagship reference implementation: a full AI-SDR product — discovery, research, outreach — running entirely on these tools. If gtm.dev can power that, it can power yours.

RocketSDR — built on gtm.dev

Priced like infrastructure.

Usage-based credits, metered by what comes back: you pay per record returned, not per call. Resolution is nearly free because you’ll call it constantly; a verified email costs more because it does more. No seats, no platform fee.

Test mode is free forever. 1,000 live credits — 200 companies + 500 profiles — to start. No card, no call with sales. Full pricing →

you get backexamplescredits
canonical answerresolve_company · resolve_geo0.1 flat
person profilefind_people · enrich_person1 / profile
company recordsearch_companies · who_is_advertising2.5 / company
verified emailenrich_person+5 / email
researchresearch_company · research_person5 flat

Stop scraping.
Start calling tools.

Connect the MCP server and your agent has the graph in the next five minutes — 150M people, 10M companies embedded, and the signals that say why now.

Get an API key