Agent Onboarding

Everything you need to onboard your AI agent to GTM Tools

If you’re developing with AI, GTM Tools offers several resources to improve your experience.

Get an API key

Your agent can sign up programmatically through get_api_key. No console access needed — a 6-digit code is sent to the email you provide; calling the same endpoint again with the code returns the bearer token.

$# 1. Request a verification code
$curl -X POST https://api.gtm-tools.sh/api/v0/get_api_key \
> -H "Content-Type: application/json" \
> -d '{"email": "you@yourcompany.com"}'
$
$# 2. Re-call with the code from your inbox
$curl -X POST https://api.gtm-tools.sh/api/v0/get_api_key \
> -H "Content-Type: application/json" \
> -d '{"email": "you@yourcompany.com", "code": "123456"}'
$# → { "api_key": "sk_..." }

New accounts receive 100 free tokens (1=100tokens,paidtopupsstartat1 = 100 tokens, paid top-ups start at 5). Live token costs per tool are returned by get_token_balance.

auto-discovery via auth.md

GTM Tools implements the auth.md spec so an autonomous agent that hits a 401 can register itself without a human signup form. The 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.gtm-tools.sh/.well-known/oauth-protected-resource"; following that hop leads to the auth.md narrative with copy-paste curl examples.

Two registration shapes are supported:

ShapeWhenOutcome
{"type":"anonymous"}No user contextNew isolated workspace + sk_ key returned immediately. 100 free tokens; free tools work out of the box.
{"type":"identity_assertion", "assertion_type":"verified_email", "assertion":"user@example.com"}Agent acts on behalf of a known user6-digit code emailed to the user; agent submits it via /agent/identity/claim, polls /oauth/token with grant_type=urn:workos:agent-auth:grant-type:claim, receives the sk_ key bound to the user’s workspace.
Anonymous registration in one call
$curl -s -X POST https://api.gtm-tools.sh/agent/identity \
> -H "Content-Type: application/json" \
> -d '{"type":"anonymous"}'
$# → { "access_token":"sk_...", "token_type":"bearer", "expires_in":31536000, "scope":"api", "organization_id":"org_..." }

Revoke at any time:

$curl -X POST https://api.gtm-tools.sh/oauth/revoke \
> -H "Content-Type: application/x-www-form-urlencoded" \
> -d 'token=sk_...'

ID-JAG (urn:ietf:params:oauth:token-type:id-jag) is not yet accepted — no agent provider mints them in production. We’ll enable it when an issuer ships.

GTM Tools MCP Server

MCP (Model Context Protocol) is an open protocol that standardizes how applications provide context to LLMs. The GTM Tools MCP server gives your AI agent tools to find LinkedIn profiles, engage on Reddit, verify professional emails, detect buying signals, and manage your wallet — all through a single Streamable HTTP endpoint.

Setup

Point any MCP-compatible client at the endpoint:

https://api.gtm-tools.sh/mcp

On first connect, the server runs the OAuth flow via /.well-known/oauth-protected-resource and the client opens a browser to authenticate. Clients that prefer static keys can authenticate with Authorization: Bearer <api-key> instead.

The fastest path is the mcp add CLI — it patches Claude Desktop, Cursor, or Windsurf configs in place:

$npx gtm-tools@latest mcp add --client claude-desktop
$# Append `--with-api-key sk_...` to skip OAuth and embed a key.

For a manual config, point a gtm-tools MCP entry at the URL above. The full set of supported clients (Claude Desktop, Cursor, Windsurf, Codex, Goose, OpenClaw, Hermes Agent, NanoClaw, Raycast, VS Code, Cline, …) is on the Connect page.

Available MCP Tools

Admin

ToolTokensDescription
ping0Health check
get_api_key0Get an API key (sends a verification code to email)
get_token_balance0Get your token balance and per-tool costs
buy_tokens0Buy tokens via Stripe (1=100tokens,min1 = 100 tokens, min 5)
set_auto_reload0Set auto-reload to top up the saved card when balance is low
list_invoices0List purchase and charge history

LinkedIn

ToolTokensDescription
list_connected_linkedin_accounts0List connected LinkedIn accounts
get_linkedin_company_url2Get a company’s LinkedIn URL from a domain
get_linkedin_profile_url5Get a person’s LinkedIn URL from name + domain
get_linkedin_company1Get a LinkedIn company
get_linkedin_profile2Get a LinkedIn profile
get_linkedin_post2Get a LinkedIn post
get_linkedin_job2Get a LinkedIn job listing
list_user_posts5List a user’s recent LinkedIn posts
list_linkedin_jobs5List a company’s open LinkedIn jobs
list_linkedin_company_posts2List a company’s recent LinkedIn posts
list_linkedin_post_reactions5List reactions on a LinkedIn post
list_linkedin_post_comments5List comments on a LinkedIn post
list_linkedin_saved_posts10List a user’s saved LinkedIn posts
list_linkedin_company_employees30List a company’s employees (with optional boolean title filters)
list_linkedin_company_employees_posts80List recent posts from a company’s employees
list_linkedin_conversations5List recent LinkedIn conversations on a connected account
send_linkedin_message5Send a LinkedIn direct message
send_linkedin_invitation5Send a LinkedIn connection request

Reddit

ToolTokensDescription
list_connected_reddit_accounts0List connected Reddit accounts
search_reddit_posts2Search Reddit posts by keyword
list_subreddit_posts1List posts from a subreddit (hot/new/top/rising)
search_reddit_subreddits1Search subreddits by name or description
get_subreddit_about1Get a subreddit’s metadata + rules (compliance check)
get_reddit_post1Get a Reddit post and its full comment tree
get_reddit_user1Get a user’s karma, account age, and verified flags
list_reddit_user_posts1List a user’s recent posts and/or comments
create_reddit_comment5Reply to a Reddit post or comment
create_reddit_post5Submit a new post to a subreddit (text or link)
vote_reddit1Up/down-vote or clear a vote on a post or comment
send_reddit_message5DM a user via Reddit Chat (works for every account)
follow_reddit_post1Follow/unfollow a post for new-comment notifications
save_reddit_thing1Save (or unsave) to the engagement queue
list_reddit_saved1List saved posts and comments
list_reddit_inbox1Read DMs, comment replies, post replies, mentions
subscribe_reddit_subreddit1Bulk subscribe/unsubscribe
list_reddit_subscriptions1List subscribed subreddits
list_reddit_custom_feeds1List custom feeds (multireddits)
list_reddit_custom_feed_posts1List posts from a custom feed
create_reddit_custom_feed5Create a custom feed from a list of subreddits

Email

ToolTokensDescription
get_email5Get a person’s professional email (SMTP-verified)

Signals

ToolTokensDescription
detect_signal0Detect all signals for a company (charges per fired detector)
signal_socials_spike5Detect Instagram/TikTok follower spikes
signal_hiring_role5Detect hiring for roles matching a filter
signal_hiring_support5Detect CX/support hiring
signal_hiring_sales_rep5Detect SDR/BDR hiring
signal_hiring_sales_leadership5Detect sales leadership hiring
signal_hiring_sales_rep_repost5Detect reposted SDR roles (churn signal)
signal_trustpilot_negative_reviews5Detect negative Trustpilot reviews
signal_trustpilot_negative_support_reviews5Detect negative support-related Trustpilot reviews
signal_trustpilot_positive_reviews5Detect positive Trustpilot reviews
signal_technologies_identified5Detect a tech stack on a website
set_signals_order0Set signal execution order
get_signals_order0Get current signal execution order

Token costs are sourced from tools/tools.json and surfaced live by get_token_balance — agents should call that tool rather than hardcoding the table above.

GTM Tools Docs for Agents

You can give your agent current docs in three ways:

  1. Full documentation index

    A structured index of every doc page with descriptions:

    https://gtm-tools.sh/llms.txt
  2. Complete docs in one file

    Every doc page concatenated into a single file for full context:

    https://gtm-tools.sh/llms-full.txt
  3. Markdown versions of any page

    Every doc page is available as Markdown. Append .md to any page URL:

    https://gtm-tools.sh/quickstart.md

Add to your agent’s system prompt:

For GTM Tools usage, refer to: https://gtm-tools.sh/llms.txt

Quick start for agents

Get a key, qualify a target with signals, find decision-makers on LinkedIn, and verify their emails — end-to-end:

1const KEY = process.env.GTM_TOOLS_API_KEY!;
2const HEADERS = {
3 "Authorization": `Bearer ${KEY}`,
4 "Content-Type": "application/json",
5};
6
7async function call<T>(tool: string, body: unknown = {}): Promise<T> {
8 const res = await fetch(`https://api.gtm-tools.sh/api/v0/${tool}`, {
9 method: "POST",
10 headers: HEADERS,
11 body: JSON.stringify(body),
12 });
13 if (!res.ok) throw new Error(`${tool}: ${res.status} ${await res.text()}`);
14 return res.json();
15}
16
17// 1. Detect buying signals (free dispatch + 5 per detector that fires)
18const signals = await call<any>("detect_signal", { domain: "gymshark.com" });
19
20// 2. Find decision-makers (30 tokens)
21const employees = await call<any>("list_linkedin_company_employees", {
22 domain: "gymshark.com",
23 title_filters: "(VP OR Director OR Head) AND (CX OR Support) NOT intern",
24 limit: 10,
25});
26
27// 3. Verify professional emails (5 tokens each)
28for (const e of employees.results.slice(0, 3)) {
29 const { email, is_catch_all } = await call<any>("get_email", {
30 name: e.name,
31 domain: "gymshark.com",
32 });
33 console.log(e.name, "", email, is_catch_all ? "(catch-all)" : "");
34}

Browse a target’s recent activity

1// Recent posts from a company's employees (80 tokens)
2const posts = await call<any>("list_linkedin_company_employees_posts", {
3 company: "gymshark",
4 max_employees: 5,
5 days_back: 7,
6});

Connect more clients

The MCP endpoint works with any MCP-compatible runtime. The Connect page has copy-paste setup snippets for every supported client.

What Makes GTM Tools Different?

Traditional GTM platforms are seat-licensed UIs that bolt on a partial REST API. GTM Tools is built for agents:

FeatureGTM ToolsTraditional GTM platforms
Pricing modelPer-tool token meteringPer-seat licenses
Free trial100 tokens, no card14–30 day demo, often gated
Primary surfaceMCP + REST + CLIUI; partial REST
LinkedIn + email + signalsSingle bearer tokenMultiple vendors stitched together
Auto top-upset_auto_reload (card on file)Annual contract
Agent-friendly docsllms.txt, llms-full.txt, *.mdHTML-only

Next Steps