Google ADK

GTM Tools’ Google Agent Development Kit (ADK) integration

Getting started

Google Agent Development Kit (ADK) is an open-source framework for building AI agents. Connecting it to the GTM Tools MCP server gives your agent the whole GTM data surface through natural language: detect buying signals on a domain, resolve a company’s LinkedIn page, search employees with boolean title filters, verify professional emails, and read or write on Reddit.

Use cases

  • Qualify accounts before spending on them: run detect_signal across a target list and let the agent decide which companies are worth researching.
  • Build a prospect list end to end: domain → LinkedIn company → filtered employee search → SMTP-verified email, in one agent turn.
  • Monitor accounts on a schedule: ADK agents run headless, so a nightly run can sweep signals and surface only what changed.

Prerequisites

  1. A GTM Tools API key, from get_api_key or gtm-tools admin login. See Get an API key.
  2. ADK installed: pip install google-adk (Python) or npm install @google/adk (TypeScript).

Setup

ADK talks to GTM Tools through its MCP tool interface. Point McpToolset at the hosted Streamable HTTP endpoint and pass the key as a bearer header:

1import os
2
3from google.adk.agents import Agent
4from google.adk.tools.mcp_tool import McpToolset, StreamableHTTPConnectionParams
5
6root_agent = Agent(
7 model="gemini-2.5-pro",
8 name="gtm_agent",
9 instruction=(
10 "Help the user qualify accounts and find decision-makers. "
11 "Always run detect_signal before spending tokens on LinkedIn tools."
12 ),
13 tools=[
14 McpToolset(
15 connection_params=StreamableHTTPConnectionParams(
16 url="https://api.gtm-tools.sh/mcp",
17 headers={
18 "Authorization": f"Bearer {os.environ['GTM_TOOLS_API_KEY']}"
19 },
20 timeout=30,
21 sse_read_timeout=300,
22 ),
23 )
24 ],
25)

StreamableHTTPConnectionParams.timeout defaults to 5 seconds in the Python SDK. Several GTM Tools calls legitimately run longer, since get_email performs SMTP probes and list_linkedin_company_employees triggers an upstream search, so raise timeout and sse_read_timeout. A cancelled call still costs tokens, since the charge lands before the tool runs.

In TypeScript, set headers through transportOptions.requestInit.headers. The older top-level header field is deprecated and is ignored entirely when transportOptions is present.

Available tools

McpToolset discovers the tool catalog from the server at connection time, so there is no fixed inventory to copy into your code. The server exposes 63 tools: 8 billing, 19 LinkedIn, 21 Reddit, 1 email, 13 signals, and 1 geocoding.

See the MCP tool catalogue for names and parameter shapes, and Pricing for the token cost of each. get_token_balance returns the live cost table at runtime.

Narrow the tool set

Feeding all 63 tools to the model wastes context and invites wrong picks, so narrow to the workflow you are building:

1McpToolset(
2 connection_params=StreamableHTTPConnectionParams(url="https://api.gtm-tools.sh/mcp", headers=...),
3 tool_filter=[
4 "detect_signal",
5 "get_linkedin_company_url",
6 "list_linkedin_company_employees",
7 "get_email",
8 ],
9)

tool_filter accepts a list of names or a predicate. The TypeScript constructor takes it as the second positional argument: new MCPToolset(connectionParams, ["detect_signal", "get_email"]).