Gong

Live

OAUTH 2.0

MEETING INTELLIGENCE

AI

200 Gong calls and nobody has time to replay them. Your agent surfaces the exact objections, competitor mentions, and champion signals per deal, scoped to the rep who owns it.

  • Acts as the rep. Deal-level access and forecast attribution stay intact.
  • Credentials stay vaulted. AES-256, resolved at request time, never in context.
  • Scoped before every call. Rep permissions enforced. 90-day audit trail.
Gong
agent · Acme Q3
Run
Which deals over $50K had competitor mentions this month?
S
gong_calls_list
85ms
Deal intelligence agent
4 deals flagged. Acme ($84K): pricing objection heard twice. Globex ($62K): procurement pushback on net-60.
Sources: 4 calls, 2 reps, Oct 1 to Oct 28
gongmcp
4 calls
18:29
Message Claude...

Tools your deal intelligence agent reaches for on Gong, scoped per user.

CALL ANY TOOL
List a rep's calls, fetch a single call, pull a transcript, push an Engage flow. Same toolkit, every framework, no auth plumbing to maintain.
gong_call_get
Get call
Retrieve basic data for a single Gong call by its ID: title, timing, direction, parties, and system/media info. For richer data (trackers, topics, CRM associations, interaction stats) with filtering across many calls at once, use Get Calls (Extensive) instead.
Parameters
Name
Type
Required
Description
id
string
Required
Gong's unique numeric identifier for the call (up to 20 digits).
gong_call_outcomes_list
List call outcomes
gong_call_users_access_add
Add call users access
gong_call_users_access_get
Get call users access
gong_calls_create
Create calls
gong_calls_get
Get calls
gong_calls_list
List calls
gong_coaching_get
Get coaching
gong_crm_objects_list
List crm objects
gong_crm_schema_fields_list
List crm schema fields
gong_data_privacy_email_erase
Data privacy email erase
gong_data_privacy_email_lookup
Data privacy email lookup
gong_engage_digital_interactions_create
Create engage digital interactions
gong_engage_flow_content_override
Engage flow content override
gong_engage_flows_list
List engage flows
gong_engage_prospects_assign_cool_off_override
Engage prospects assign cool off override
gong_engage_prospects_bulk_assign_status
Engage prospects bulk assign status
gong_engage_prospects_unassign_by_instance
Engage prospects unassign by instance
gong_engage_task_complete
Complete engage task
gong_engage_tasks_list
List engage tasks
gong_engage_users_list
List engage users
gong_library_folder_content_get
Get library folder content
gong_library_folders_list
List library folders
gong_logs_list
List logs
gong_meeting_delete
Delete meeting
gong_meetings_integration_status
Meetings integration status
gong_stats_activity_aggregate_by_period
Stats activity aggregate by period
gong_stats_interaction
Stats interaction
gong_trackers_list
List trackers
gong_user_settings_history_get
Get user settings history

For more tools, view docs.

Build your Agent
Drop the toolkit in, point it at the rep, and your agent can read Gong calls, transcripts, and coaching data from the first run.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { DynamicStructuredTool } from "@langchain/core/tools";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
import { z } from "zod";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["gong"], toolNames: ["gong_calls_list", "gong_call_transcript_get", "gong_users_list"] },
pageSize: 100,
});

const lcTools = tools.map((t) => new DynamicStructuredTool({
name: t.tool.definition.name,
description: t.tool.definition.description,
schema: z.object({}).passthrough(),
func: async (args) => {
const { data } = await sk.tools.executeTool({
toolName: t.tool.definition.name,
identifier: "user_123",
params: args,
});
return JSON.stringify(data);
},
}));

const agent = createReactAgent({ llm, tools: lcTools });
import { ScalekitClient } from "@scalekit-sdk/node";
import OpenAI from "openai";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["gong"], toolNames: ["gong_calls_list", "gong_calls_get", "gong_transcript_get"] },
pageSize: 100,
});

// shape tools as OpenAI function definitions
const llmTools = tools.map((t) => ({
type: "function" as const,
function: {
name: t.tool.definition.name,
description: t.tool.definition.description,
parameters: t.tool.definition.input_schema,
},
}));

const resp = await openai.responses.create({
model: "gpt-4o", input: prompt, tools: llmTools,
});
import { ScalekitClient } from "@scalekit-sdk/node";
import Anthropic from "@anthropic-ai/sdk";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["gong"], toolNames: ["gong_calls_list", "gong_call_get", "gong_users_list"] },
pageSize: 100,
});

const llmTools = tools.map((t) => ({
name: t.tool.definition.name,
description: t.tool.definition.description,
input_schema: t.tool.definition.input_schema,
}));

const msg = await anthropic.messages.create({
model: "claude-sonnet-4-6", max_tokens: 1024,
tools: llmTools,
messages: [{ role: "user", content: prompt }],
});
import { Agent } from "@google/adk/agents";
import {
MCPToolset, StreamableHTTPConnectionParams,
} from "@google/adk/tools/mcp";

const toolset = new MCPToolset({
connectionParams: new StreamableHTTPConnectionParams({
url: "https://mcp.scalekit.com/gong",
headers: { Authorization: `Bearer ${userScopedToken}` },
}}),
}});

const agent = new Agent({
name: "agent", model: "gemini-2.0-flash",
tools: await toolset.getTools(),
}});
Try these prompts
These are the questions sales leaders ask Gong every week. Copy any prompt, paste into your agent, watch it route to the right tool with the rep's scope.
Action & follow-up
Copy the prompt
Copied
What call tasks and follow-ups are assigned to me this week?
Copy the prompt
Copied
What did we commit to Acme on our last call?
Copy the prompt
Copied
What are the open questions from yesterday's call?
Copy the prompt
Copied
Draft a follow-up email based on my last call with Stripe.
Search & recall
Copy the prompt
Copied
Find every call where pricing was discussed.
Copy the prompt
Copied
What did [person] say about the roadmap?
Copy the prompt
Copied
Summarise everything discussed about [feature] across all recorded calls.
Copy the prompt
Copied
List all my calls from last month.
Prep & intel
Copy the prompt
Copied
What context do I need before my next call with this account?
Copy the prompt
Copied
Who was on my last call with [company] and what was decided?
Copy the prompt
Copied
Get the full transcript from my most recent call with [account].
SEE HOW AUTH WORKS
Each rep authorises Gong once. Every agent call after that uses their token, runs a scope check, and lands in an exportable audit trail.
1
Authorize
Your user connects
Gong
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Gong
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Gong
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Gong
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Same per-user auth pattern across other deal intelligence agents and MCP connectors. Working code, live demos, fork what fits.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
GTM and RevOps Teams
Sales call prep agent
Reads tomorrow's calls from Google Calendar, mines past Granola notes and Attio history for context, and delivers each rep a prep brief in Slack, scoped to the calls that rep actually owns.
Test other agents
Same per-user auth pattern across other deal intelligence agents and MCP connectors. Working code, live demos, fork what fits.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
SALES
Sales call prep agent
Read tomorrow's calls from Google Calendar, mine Granola notes and Attio history, and deliver each rep a prep brief in Slack.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Bot calls break rep-level analytics
A shared Gong token looks fine in a demo. In production, every call retrieved looks like it came from a service account. Audit logs break. Per-rep scoping breaks. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared bot token
token = "sk_gong_shared_xxx"
audit → bot_service_account
rep_filter → broken

// scalekit · per-user
token = resolve(user_id)
audit → user_abc
scope → enforced ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Gong today. Chorus, Salesforce, HubSpot tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions

Does the agent access Gong as the user or as a shared key?
As the user. Each workspace member authorizes once and Scalekit resolves their credential at request time. Audit logs attribute every action to that user, not a shared service account.

Where is the Gong oauth 2.0 stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Tokens never appear in prompts, logs, or LLM context.

Can I limit what the agent is allowed to do in Gong?
Yes. Pass a tool name filter to listScopedTools so the deal intelligence agent only sees the subset you authorize. Pre-API-call scope checks block out-of-policy actions before the request reaches Gong.

What happens when a user revokes Gong access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.

Can the agent pull call transcripts for any rep?
Only for reps the authorizing user can already see in Gong. Manager-level access surfaces team transcripts. IC-level access stays scoped to that rep. Scalekit respects Gong's native permissions.

Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
"mcpServers": {
"gong": {
"url": "https://mcp.scalekit.com/gong",
"headers": { "Authorization": "Bearer $SCALEKIT_TOKEN" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.gong]
url = "https://mcp.scalekit.com/gong"
auth_env = "SCALEKIT_TOKEN"
Copilot Code REPL
# .vscode/mcp.json
{
"servers": {
"gong": {
"url": "https://mcp.scalekit.com/gong",
"type": "http"
}
}
}