Provider REST API
SalesConnect Claude to Gong
Read recorded calls, their transcripts and their participants from Gong's revenue intelligence platform. Toolspoke puts 9 of its actions behind one MCP endpoint that Claude, Cursor, and Codex all speak.
- Connection
- Provider REST API
- Authentication
- Access key and secret
- Actions exposed
- 9
- Cost per call (typical)
- 1 credit
- Adapter
- Maintained by Toolspoke
Connected in three steps
- 1
Install Gong
Open the marketplace in your workspace, add Gong to the project your agents work in, and it appears on the gateway immediately.
- 2
Connect the credential
Authenticate with access key and secret. Where to get one, and what it has to be able to reach, is the next section.
- 3
Point your agent at the gateway
Give your client one address, https://toolspoke.com/mcp. Claude Code takes it as a command, Claude and Claude Desktop add it as a custom connector, and Cursor, Codex and VS Code each read it from a config file of their own.
.mcp.json{
"mcpServers": {
"toolspoke": {
"type": "http",
"url": "https://toolspoke.com/mcp"
}
}
}One block covers every tool you have installed. Gong shows up in the client as soon as your policy allows it, and so does everything else you install later.
Where the address goes, per client
- Claude Code
Run it in your project, then /mcp to sign in
claude mcp add --transport http toolspoke https://toolspoke.com/mcp- Claude and Claude Desktop
Settings, then Connectors, then Add custom connector
https://toolspoke.com/mcp- Cursor
~/.cursor/mcp.json, or .cursor/mcp.json for one project
{ "mcpServers": { "toolspoke": { "url": "https://toolspoke.com/mcp" } } }- Codex
~/.codex/config.toml
[mcp_servers.toolspoke] url = "https://toolspoke.com/mcp"- VS Code
.vscode/mcp.json, or the MCP: Add Server command
{ "servers": { "toolspoke": { "type": "http", "url": "https://toolspoke.com/mcp" } } }
What Gong asks for
Access key and secret. You provide it once, when you install the connector. Toolspoke encrypts it at rest and decrypts it only for the length of a single call, and the gateway attaches it to the outbound request itself, so it is never part of the arguments an agent sends.
- Access key and secretRequired
- Paste it in exactly that form: the Access Key, then a colon, then the Access Key Secret, with no spaces. Create the pair in Gong under Company Settings → Ecosystem → API, and grant it at least api:calls:read:basic, api:calls:read:extensive, api:calls:read:transcript, api:users:read, api:workspaces:read, api:settings:trackers:read and api:stats:user-actions:detailed. The same page shows your base URL - this connector calls api.gong.io, so a tenant shown a us-NNNNN.api.gong.io address cannot use it.
- accesskey:accesskeysecret
What Claude can do in Gong
9 actions, each one declared and named by the connector rather than discovered at runtime. A workspace policy grants a person all of them, a hand-picked selection, everything on the read side, everything on the write side, or none.
- Reads
- 9Reads
- Writes
- 0Writes
- Destructive
- 0Destructive
Reads
9Fetches data and changes nothing.
list_callsList the calls recorded in a date range, with their ids, titles, times, durations and the Gong URL for each. This is the index: it is how you find the call ids that get_call_transcripts and get_call_details need. Both ends of the range are required - send them as ISO 8601 with an offset or a Z, e.g. "2026-08-01T00:00:00Z" - and the range is matched against each call's start time, with the upper bound exclusive. Ask for a narrow window; a busy Gong account records hundreds of calls a week.
get_call_detailsReturn everything Gong holds about specific calls short of the transcript itself: who was on them and in what role, the agenda structure, the topics discussed and how long each ran, the keyword trackers that fired, and - where the account's plan includes Gong's AI features - the brief, the outline, the key points and the call outcome. Takes call ids, from list_calls or search_calls. Every content flag is off unless you ask for it, so ask for what you will read: `include_content_brief` and `include_content_key_points` are the cheapest way to know what a call was about without pulling the transcript, and `include_media` returns audio and video URLs that need an extra scope and expire after eight hours. `context: "Extended"` adds the CRM records Gong matched the call to.
get_call_transcriptsReturn the transcripts of specific calls - the verbatim record of what each person said, split into sentences with a speaker id and start and end offsets in milliseconds. This is what the connector exists for, and it is the most sensitive thing it can return: a transcript is a real conversation with a customer who agreed to be recorded by Gong, so the payload is never written to the audit log. Give call ids from list_calls or search_calls, at most 100 at a time. Speaker ids match the party ids get_call_details returns, so call that alongside this when you need to know who was speaking rather than only what was said.
search_callsFind calls by date range, workspace or host rather than by id, and return a light record for each - who was on it and what it was about, without the topic and tracker detail get_call_details pulls. Use it when the question starts from a person or a period ("what did this rep run last week") rather than from a call you already have. Both ends of the range are required. It reaches the same endpoint as get_call_details and differs only in what it filters on and how much it asks for, which is why the two are separate operations: one takes call ids and returns everything, this one takes a window and returns enough to choose from.
list_usersList the Gong users in this account - the customer's own salespeople and managers, with their ids, names, email addresses, titles and which workspace each belongs to. A Gong user id is what search_calls filters hosts by and what get_daily_activity reports on. These are the caller's own colleagues rather than anybody they sell to, so the response stays in the audit log.
get_userFetch one Gong user by id - their name, email address, title, manager, workspace and settings. Use it to resolve a user id that appeared in a call record or an activity statistic into a colleague's name. Like list_users, this is the account's own staff directory.
list_workspacesList the workspaces in this Gong account, with their ids and names. A workspace is how a Gong account is divided - by region, by product line, by team - and its id is the filter every call operation here accepts. It takes no parameters and returns no call and no person, which is why it is the connection check: it proves the access key and secret are the right pair without reading anything about anybody.
list_trackersList the keyword trackers the account has configured - the words and phrases Gong watches for in every call, such as a competitor's name or a pricing objection. This is the reference list behind the tracker counts get_call_details returns: without it a tracker id in a call record is a number with no meaning. Account configuration, not anybody's data.
get_daily_activityReturn day-by-day activity for the account's users: for each user and each day, the calls they ran and the emails they sent, listed individually. Bound it with plain dates rather than timestamps - `from_date` and `to_date` are calendar dates in the account's own time zone, which is different from every other operation here, and `to_date` is exclusive and may not be in the future. Narrow it to particular people with user_ids from list_users. The response is withheld from the audit log because it enumerates individual calls and emails, and a call title is usually a customer's name.
What it will not do
Enforced by the gateway rather than left to convention, which is why each of these can be stated flatly.
- It cannot call anything else
- The 9 actions above are the whole of it. A call to any other name is refused before it reaches Gong rather than forwarded on, and connecting your account does not add to the list: it is fixed by the connector, not discovered at run time.
- It only reads
- Every action here reads. Nothing this connector can do changes anything in Gong.
- It reaches no further than your credential
- Toolspoke holds no access to Gong of its own. Every call carries the credential you stored and nothing besides, so whatever that credential cannot reach, this connector cannot reach either.
- It never hears from Gong
- Nothing is pushed to it. There is no webhook, no subscription and no polling, so this connector cannot notice by itself that something changed in Gong. An agent has to ask.
- It does not smooth over provider limits
- Toolspoke does not retry, queue or back off around Gong's own rate limits. A call that Gong refuses comes back to the agent as a failed call.
Before you connect it
What can Claude do in Gong?
9 named actions: 9 that only read. They include list_calls, get_call_details and get_call_transcripts. Nothing outside that list is reachable: the connector declares each operation by name rather than proxying whatever an agent asks for.
What credentials does the Gong connector need?
Access key and secret. The connector asks for access key and secret. Values are encrypted at rest and attached to the outbound request by the gateway, so they are never part of the arguments an agent sends and never reach the audit log.
Does the Gong connector work with Cursor and Codex, or only Claude?
Any client that speaks MCP, and every one of them gets the same 9 actions. There is a single address, https://toolspoke.com/mcp. Claude Code adds it with claude mcp add --transport http, Claude and Claude Desktop take it as a custom connector in settings, Cursor reads it from .cursor/mcp.json, Codex from ~/.codex/config.toml, and VS Code from .vscode/mcp.json. Each of them signs in to the gateway itself, so there is no key to paste.
What does the Gong connector not do?
The 9 actions above are the whole of it. A call to any other name is refused before it reaches Gong rather than forwarded on, and connecting your account does not add to the list: it is fixed by the connector, not discovered at run time. Every action here reads. Nothing this connector can do changes anything in Gong. Toolspoke holds no access to Gong of its own. Every call carries the credential you stored and nothing besides, so whatever that credential cannot reach, this connector cannot reach either. Nothing is pushed to it. There is no webhook, no subscription and no polling, so this connector cannot notice by itself that something changed in Gong. An agent has to ask. Toolspoke does not retry, queue or back off around Gong's own rate limits. A call that Gong refuses comes back to the agent as a failed call.
Can I limit which actions an agent can call?
Yes, in two places. The project switches Gong's actions on and off one at a time, for everyone in the project at once, and the screen groups them by read, write and destructive so turning off everything that deletes is one click. An individual agent key can then be narrowed further, to particular toolkits in a project and to particular actions in a toolkit. Whatever it was granted, a key never reaches a project its owner cannot.
What gets recorded when an agent calls Gong?
Every attempt, with the agent that made it and the person that agent belongs to, the full request payload, the response payload, the status, the duration, and the credits spent. Values whose key names a secret are masked out before the record is shown to anyone. An operation the connector marks as not retained never has its response body written at all, so the gateway keeps no second copy of what was read.