Skip to main content
Glama

Gong MCP Server

npm version License: MIT

An MCP (Model Context Protocol) server that provides access to your Gong.io data. Query calls, transcripts, users, keyword trackers, and more directly from Claude or any MCP-compatible client.

Tools Quick Reference

Tool

Description

list_calls

List calls with date/workspace filtering

get_call

Get metadata for a specific call

get_call_summary

AI summary: key points, topics, action items

get_call_transcript

Full speaker-attributed transcript (paginated)

search_calls

Rich call search — participant, customer, tracker, scope, duration, title, and more

search_calls_by_account

Find calls involving a specific account/company by email domain

search_calls_by_opportunity

Find calls linked to specific CRM Opportunities

search_transcripts

Free-text keyword search across transcript sentences

get_trackers

List keyword trackers (competitors, topics, etc.)

list_workspaces

List workspaces and get IDs for use in other tools

list_library_folders

List public call library folders

get_library_folder_calls

Get calls saved in a specific library folder

get_user

Get a specific user's profile

search_users

Search/filter users by IDs or creation date

list_users

List all workspace users

Related MCP server: gong-mcp

Response Size & Context Limits

search_calls can return a lot of data. Under the hood it:

  • Auto-paginates up to ~5000 calls (50 API pages) per query

  • Applies client-side filters (participant, customer, tracker, duration, etc.) after pagination

  • Returns a rich per-call format (metadata + summary + topics + participants) by default

Guardrails built in:

  • If the formatted output would exceed MAX_MCP_OUTPUT_LENGTH (default 50000 chars, configurable via env var), the tool automatically falls back to a compact table with a warning. You still get every call ID and title — drill in with get_call_summary on specific ones.

  • include: ["outline"] is expensive (~80KB per call). Avoid it in multi-call searches.

  • Tracker data is filtered to only show trackers matching your trackers filter (or non-zero trackers if no filter) — no more walls of (0x) noise.

If your query hits the output cap, narrow it:

  1. Tighten fromDateTime / toDateTime

  2. Add scope: "External" or scope: "Internal"

  3. Add minDuration: 600 to skip short no-shows

  4. Add customerName or trackers filter

  5. Drop heavy include options like outline

Prerequisites

  • Node.js 18+ or Docker

  • Gong API credentials (Access Key and Secret)

  1. Log into Gong as an admin

  2. Go to Company SettingsEcosystemAPI

  3. Click Create API Key

  4. Save both the Access Key and Secret (the secret is only shown once)

Option 1: npx (no install required)

npx gongio-mcp

Option 2: Global npm install

npm install -g gongio-mcp
gongio-mcp

Option 3: From source

git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
npm install
npm run build
node dist/index.js

Option 4: Docker (build locally)

git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
docker build -t gongio-mcp .
docker run --rm -i \
  -e GONG_ACCESS_KEY=your-access-key \
  -e GONG_ACCESS_KEY_SECRET=your-secret-key \
  gongio-mcp

Set your Gong credentials as environment variables:

export GONG_ACCESS_KEY="your-access-key"
export GONG_ACCESS_KEY_SECRET="your-secret-key"

Or pass them inline:

GONG_ACCESS_KEY=your-key GONG_ACCESS_KEY_SECRET=your-secret npx gongio-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

Using npx:

{
  "mcpServers": {
    "gong": {
      "command": "npx",
      "args": ["gongio-mcp"],
      "env": {
        "GONG_ACCESS_KEY": "your-access-key",
        "GONG_ACCESS_KEY_SECRET": "your-secret-key"
      }
    }
  }
}

Using Docker:

{
  "mcpServers": {
    "gong": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-e", "GONG_ACCESS_KEY",
               "-e", "GONG_ACCESS_KEY_SECRET",
               "gongio-mcp"],
      "env": {
        "GONG_ACCESS_KEY": "your-access-key",
        "GONG_ACCESS_KEY_SECRET": "your-secret-key"
      }
    }
  }
}

Claude Code

Using npx:

claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- npx gongio-mcp

Using Docker (after docker build -t gongio-mcp .):

claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- docker run --rm -i -e GONG_ACCESS_KEY -e GONG_ACCESS_KEY_SECRET gongio-mcp

Available Tools

List calls with optional date range and workspace filters. Returns minimal call metadata (ID, title, date, duration).

Parameters:

Parameter

Required

Description

fromDateTime

No

Start date in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)

toDateTime

No

End date in ISO 8601 format (e.g., 2024-01-31T23:59:59Z)

workspaceId

No

Filter calls by workspace ID (use list_workspaces to find IDs)

cursor

No

Pagination cursor for next page

Get the URL, timing, direction, scope, system, and other metadata for one call. Faster than get_call_summary when you only need call metadata.

Parameters:

Parameter

Required

Description

callId

Yes

Gong call ID (numeric string)

Get an AI-generated summary including brief overview, key points, topics, action items, and detailed outline. This is the recommended way to understand a call — use get_call_transcript only if you need exact quotes.

Parameters:

Parameter

Required

Description

callId

Yes

Gong call ID (numeric string)

Get the raw transcript with speaker attribution. Transcripts are paginated (default 10KB) to prevent context overflow — use maxLength and offset to navigate.

Parameters:

Parameter

Required

Description

callId

Yes

Gong call ID (numeric string)

maxLength

No

Maximum characters to return (default: 10000, max: 100000)

offset

No

Character offset to start from for pagination (default: 0)

Search calls with advanced filters including participant lookup, customer name search, and rich content selection. Automatically paginates through all results and returns participant info, brief summary, and topics by default.

Parameters:

Date & workspace

Parameter

Description

fromDateTime

Start date in ISO 8601 format

toDateTime

End date in ISO 8601 format

workspaceId

Filter by workspace ID (use list_workspaces to find IDs)

callIds

Array of specific call IDs to retrieve

Host / participant

Parameter

Description

primaryUserIds

Host user IDs (server-side)

primaryUserEmails

Host emails (case-insensitive)

excludePrimaryUserIds

Exclude these host user IDs

participantUserIds

Any participant (host/attendee/invitee) user IDs

excludeParticipantUserIds

Exclude calls where any participant has these user IDs

participantEmails

Any participant emails (case-insensitive)

excludeParticipantEmails

Exclude calls where any participant has these emails

Content & customer

Parameter

Description

customerName

Fuzzy match against CRM account name, external email domains, and titles

titleContains

Substring match on call title (case-insensitive)

trackers

Calls where matching tracker(s) fired (count > 0). Workspace-specific — use get_trackers to discover

Metadata

Parameter

Description

scope

External, Internal, or Unknown

direction

Inbound, Outbound, Conference, or Unknown

system

Conferencing platform (e.g., Zoom) — case-insensitive substring

language

Language code (e.g., eng) — case-insensitive exact match

minDuration

Minimum duration in seconds

maxDuration

Maximum duration in seconds

Response shape

Parameter

Description

include

Additional data to return — see table below

include options:

Value

What it adds

Size

keyPoints

AI-extracted key points as bullets

~5KB/call

trackers

Keyword/smart tracker hits with counts

~3KB/call

highlights

AI-curated highlight clips grouped by theme

~3KB/call

speakers

Talk time per participant

~1KB/call

comments

Public comments left on the call

varies

context

CRM account/opportunity linkage (HubSpot, Salesforce)

~1KB/call

outline

Full section-by-section outline with items

~80KB/call (large)

media

Audio/video URLs (valid 8 hours)

~3KB/call

Defaults (always returned): participants, brief summary, and topics — ~3KB per call.

Filter behavior notes:

  • Filters combine with AND logic. primaryUserIds + participantUserIds compose: primary narrows server-side, participant post-filters.

  • customerName matches any of: CRM account Name field, external participant email domain, or call title (case-insensitive substring).

  • trackers names are workspace-specific — call get_trackers first to see what's configured. Match is case-insensitive substring (so "competitor" matches both "Competitors" and "Competitor Mentions").

  • When trackers filter is set, the relevant tracker content is auto-included and the output shows only the trackers you asked about. Without a filter, only non-zero trackers are shown.

  • An empty result returns "No calls found" rather than an error.

See Response Size & Context Limits for how large-result fallback works.

Find calls involving a specific account or company by matching the email domains of external participants. The Gong API does not natively support filtering by account name (a known gap) — this tool fetches calls in the date range and post-filters on parties[].emailAddress. Auto-paginates the underlying /v2/calls/extensive endpoint up to maxCalls.

Use this when:

  • A prospect has multiple email domains (acme.com, acme.io, regional TLDs) and you need them all

  • You need to join external enrichment data (e.g., "all prospects on Klaviyo" from BuiltWith / Clearbit / a vendor-stack graph) — resolve to a domain list upstream and pass it here

  • Domain-based matching is more reliable than CRM Account names that drift across systems

Parameters:

Parameter

Required

Description

domains

Yes

Email domains, e.g. ["acme.com", "acme.io"]. A call matches if any external participant has an email at one of these domains.

fromDateTime

No

Start date in ISO 8601 format

toDateTime

No

End date in ISO 8601 format

workspaceId

No

Filter by workspace ID

primaryUserIds

No

Pre-narrow by call host user IDs (faster, server-side)

matchCrmAccount

No

Also match where a CRM Account context object name contains a domain root (e.g. "acme" from "acme.com"). Requires CRM integration. Default false.

maxCalls

No

Max calls to fetch & filter (default: 500, max: 5000). Auto-paginates underlying API.

cursor

No

Pagination cursor (advanced)

Cost note: This is fetch-then-filter. A 90-day window with no other narrowing typically pages through 1–5 API calls. Combine with primaryUserIds to bound cost on long ranges.

Find calls linked to specific CRM Opportunities by ID or name substring. Requires Gong-CRM integration (Salesforce / HubSpot) — calls without CRM linkage will not match.

Use this when:

  • You want every call on a specific deal — opportunityIds: ["006xxxxx"] is the most precise option

  • Opportunity names are descriptive (e.g. "Acme Q4 Renewal") and you want fuzzy matching across renamed/duplicated opportunities

Parameters:

Parameter

Required

Description

opportunityIds

At least one of opportunityIds or opportunityNames is required

CRM Opportunity IDs (e.g., Salesforce 18-character IDs)

opportunityNames

At least one of opportunityIds or opportunityNames is required

Name substrings (case-insensitive) matched against the Name field of Opportunity context objects

fromDateTime

No

Start date in ISO 8601 format

toDateTime

No

End date in ISO 8601 format

workspaceId

No

Filter by workspace ID

primaryUserIds

No

Pre-narrow by call host user IDs

maxCalls

No

Max calls to fetch & filter (default: 500, max: 5000)

cursor

No

Pagination cursor (advanced)

Cost note: Uses the same fetch-then-filter pattern as search_calls_by_account. CRM context lookup adds no extra API calls — it rides on the same /v2/calls/extensive request with context: "Extended".

Free-text keyword search across call transcript sentences within a bounded date range. Two-phase: (1) /v2/calls/extensive narrows the call set by date + optional primaryUserIds / domains, (2) /v2/calls/transcript fetches transcripts for the narrowed set and returns sentence-level matches with speaker attribution and timestamps.

Prefer Gong Trackers for recurring terms. For competitor names, ESP/tech terms (Klaviyo, Braze, Iterable, Postscript, Attentive, Sendgrid, Customer.io, etc.), and other terms you'll search for repeatedly — set them up as Gong Trackers in the UI (one-time, ~30 minutes for ~20 terms). Then use get_trackers + search_calls + get_call_summary instead. Trackers are server-side, the cost is dramatically lower, and they surface counts and timestamps natively. Use search_transcripts for ad-hoc one-offs.

Cost guard: Date ranges greater than 30 days require additional narrowing via primaryUserIds or domains. A 6-month unbounded scan would burn API quota and is rejected at the schema level.

Parameters:

Parameter

Required

Description

keywords

Yes

Keywords to search for. Each must be at least 2 characters.

fromDateTime

Yes

Start of date window (ISO 8601).

toDateTime

Yes

End of date window (ISO 8601).

primaryUserIds

Required if window > 30 days and domains not set

Narrow to calls hosted by these users before scanning

domains

Required if window > 30 days and primaryUserIds not set

Narrow to calls with external parties from these domains before scanning

workspaceId

No

Filter by workspace ID

caseSensitive

No

Default false.

wholeWord

No

Default true"ai" will not match "said" or "again". Set false for substring matching.

maxCalls

No

Max calls to scan (default: 500).

maxMatchesPerCall

No

Max sentence matches returned per call (default: 10) — prevents context overflow on calls with many hits.

Returns: Sentence-level matches grouped by call, including speaker name and affiliation (when available), keyword matched, timestamp (mm:ss), and the sentence snippet.

List all keyword tracker definitions including tracked phrases, affiliation (whose speech is tracked), and filter queries. Explains tracker hits visible in get_call_summary output.

Parameters:

Parameter

Required

Description

workspaceId

No

Filter trackers by workspace ID (use list_workspaces to find IDs)

List all Gong workspaces with their IDs and names. Use these IDs as filters in list_calls, search_calls, get_trackers, and other tools. Most companies have 1–3 workspaces (e.g., by region or product line).

Parameters: None

Get a specific user's profile including name, email, title, phone, and settings. Useful for resolving user IDs returned from call data.

Parameters:

Parameter

Required

Description

userId

Yes

Gong user ID (numeric string)

Search and filter users by IDs or creation date. More flexible than list_users for resolving specific user IDs from call data in bulk.

Parameters:

Parameter

Required

Description

userIds

No

Array of specific user IDs to look up

createdFromDateTime

No

Filter users created after this datetime (ISO 8601)

createdToDateTime

No

Filter users created before this datetime (ISO 8601)

cursor

No

Pagination cursor

List all Gong users in your workspace. Returns name, email, and title for each user.

Parameters:

Parameter

Required

Description

cursor

No

Pagination cursor

includeAvatars

No

Whether to include user avatar URLs

List all public Gong call library folders for a workspace. Returns folder IDs and names used with get_library_folder_calls. Private and archived folders are not returned.

Parameters:

Parameter

Required

Description

workspaceId

Yes

Workspace ID to list folders for (use list_workspaces to find IDs)

Get all calls saved in a specific Gong library folder. Returns call IDs, titles, curator notes, and snippet timing for clips. Call IDs can be passed directly to get_call_summary or get_call_transcript.

Parameters:

Parameter

Required

Description

folderId

Yes

Library folder ID (numeric string, from list_library_folders)

Available Resources

Returns a markdown-formatted list of all users in your Gong workspace. Useful for resolving user IDs found in call data.

Parameters: None

Example Prompts

Once connected to Claude, you can ask:

  • "List my Gong calls from last week"

  • "Get the details for call 123456789"

  • "Show me a summary of call 123456789"

  • "Get the transcript for call 789012"

  • "What workspaces do we have in Gong?"

  • "What keywords is Gong tracking for competitors?"

  • "What call library folders do we have in Gong?"

  • "Show me the calls in the 'Best Discovery Calls' library folder"

  • "Who are all the users in our Gong workspace?"

  • "Search for calls hosted by Justin (user ID 232255198215877499) in July 2025"

  • "Look up these user IDs: 111, 222, 333"

  • "Show me all calls from the past 60 days with anyone at acme.com or acme.io"

  • "Find every call attached to opportunity 006xxxxx"

  • "Find Q3 calls where prospects mentioned Klaviyo or Braze, narrowed to John's calls"

Contributing

Interested in contributing? Check out CONTRIBUTING.md for development setup, testing instructions, and guidelines.

The repository includes gong-openapi.json — a local copy of the Gong API OpenAPI spec. It's useful as a reference when adding new tools: use it to look up endpoint paths, parameter names, and response shapes without leaving your editor. The latest spec can be downloaded from the Gong API documentation.

Available Tools

15 tools
get_callA
Read-only

Get metadata for a specific Gong call including URL, direction, scope, system, and duration. Faster than get_call_summary when you only need call metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
callIdYesGong call ID (numeric string up to 20 digits)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is clear. The description adds value by disclosing the performance characteristic (faster than get_call_summary) and listing the specific metadata fields returned, which are behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that communicates purpose, content, and usage guidance without any wasted words. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple metadata retrieval tool with one parameter and read-only annotations, the description is largely complete. It lists the key fields returned and provides a usage hint. Minor gap: no output schema exists, so the response structure is not fully specified, but the listed fields mitigate this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single callId parameter, including a pattern and description. The description does not add any extra meaning about the parameter, so the baseline of 3 is appropriate since the schema already fully documents it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get metadata for a specific Gong call' with a specific verb and resource, and enumerates the metadata fields (URL, direction, scope, system, duration). It distinguishes from siblings by noting it is faster than get_call_summary when only metadata is needed, making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance: use this tool when only call metadata is needed, and names the alternative get_call_summary as a slower option. This meets the 'explicit when/alternatives' criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_call_summaryA
Read-only

Get an AI-generated summary of a single call including brief overview, key points, topics, action items, and detailed outline. This is the recommended way to understand a call - use get_call_transcript only if you need exact quotes.

ParametersJSON Schema
NameRequiredDescriptionDefault
callIdYesGong call ID (numeric string up to 20 digits)

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the 'AI-generated' nature, implying non-deterministic output, but doesn't disclose additional behavioral traits like potential latency or variability. This is acceptable given the annotations, but minimal beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every clause adds value. There is no redundant phrasing or filler, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter schema, the presence of readOnly/openWorld annotations, and the absence of an output schema, the description is complete. It explains what the summary includes and offers clear usage guidance relative to sibling tools, so an agent can invoke it correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter callId is fully documented in the schema with type, pattern, and description. The tool description does not add any extra meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get an AI-generated summary of a single call' and enumerates the summary components (brief overview, key points, topics, action items, detailed outline). It also distinguishes itself from the sibling get_call_transcript, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance: 'This is the recommended way to understand a call - use get_call_transcript only if you need exact quotes.' This tells the agent when to use this tool and when to prefer an alternative, which is excellent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_call_transcriptA
Read-only

Get the raw transcript for a single call with speaker-attributed text. Only use this when you need exact quotes - prefer get_call_summary for understanding call content. Transcripts are truncated by default (10KB) to prevent context overflow - use maxLength and offset to paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
callIdYesGong call ID (numeric string up to 20 digits)
offsetNoCharacter offset to start from (default: 0). Use to paginate through long transcripts.
maxLengthNoMaximum characters to return (default: 10000, ~10KB). Longer transcripts are truncated with pagination info.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds meaningful behavioral details: default truncation to 10KB and pagination mechanism to avoid context overflow. This goes beyond annotations, though it stops short of describing the full return schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. The first states purpose; the second provides usage and behavioral caveats. No superfluous content, front-loaded with action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with excellent annotations and a fully descriptive schema, the description covers purpose, when to use, and pagination behavior. The implied return format (speaker-attributed text) is sufficient given the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents all three parameters (100% coverage). The description adds value by explaining the rationale for truncation (context overflow prevention) and the pagination workflow, which reinforces the semantics of maxLength and offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a raw transcript with speaker-attributed text for a single call. It explicitly distinguishes itself from get_call_summary by specifying use cases (exact quotes vs. understanding content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Only use this when you need exact quotes' and names the preferred alternative (get_call_summary). Also explains when and how to paginate (maxLength/offset) for long transcripts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_library_folder_callsA
Read-only

Get all calls saved in a specific Gong library folder. Returns call IDs, titles, curator notes, and snippet timing. Use list_library_folders to find folder IDs. Call IDs can be passed to get_call_summary or get_call_transcript.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesLibrary folder ID (numeric string, from list_library_folders)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds meaningful behavioral detail by specifying the returned fields (call IDs, titles, curator notes, snippet timing) and stating 'all calls' in a folder, which implies full retrieval. This goes beyond what annotations provide, though it doesn't mention pagination or rate limits. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, return fields, usage prerequisites/downstream. Front-loaded with the action, then details. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one required parameter, no output schema, read-only annotations). The description covers purpose, parameter source, returned fields, and how the output integrates with other tools. Given the complexity, this is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the folderId parameter is fully described as 'Library folder ID (numeric string, from list_library_folders)' with a regex pattern. The tool description repeats this source ('Use list_library_folders to find folder IDs') but adds no new meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get all calls saved in a specific Gong library folder.' It uses a specific verb (Get) and resource (calls in a library folder), and distinguishes itself from siblings like list_calls by the folder scoping. It also lists the returned data (call IDs, titles, curator notes, snippet timing), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on prerequisites: 'Use list_library_folders to find folder IDs.' It also suggests downstream usage: 'Call IDs can be passed to get_call_summary or get_call_transcript.' While it does not explicitly name an alternative to avoid, the folder-specific scope clearly implies when this tool is appropriate vs. list_calls. Fairly clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trackersA
Read-only

List keyword tracker definitions configured in a workspace, including every tracked phrase and which side is tracked (company/customer). Call this before using the trackers filter on search_calls so you know what names exist — workspace admins set these up and naming varies (e.g., "Competitors" vs "Competitor Mentions"). Also useful to explain tracker hits that appear in call summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdNoFilter trackers by workspace ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's 'List' operation is consistent. It adds valuable context beyond annotations: naming varies by workspace, admins configure these, and it includes which side is tracked. This helps the agent understand potential variability in the data without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence followed by a short 'Also useful' clause. It front-loads the core purpose and keeps the additional guidance relevant. Slightly verbose due to the example of naming variations, but earns its place by clarifying a real-world ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (one optional parameter) and no output schema, the description is complete. It states what is returned (every tracked phrase and side tracked), when to call it (before search_calls with trackers filter), and why it's useful (explaining tracker hits). No critical context is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers workspaceId with a description ('Filter trackers by workspace ID') and pattern, so schema coverage is 100%. The tool description adds context that trackers are 'configured in a workspace' but does not clarify behavior when workspaceId is omitted beyond the schema's optional status. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List keyword tracker definitions configured in a workspace, including every tracked phrase and which side is tracked (company/customer).' It uses a specific verb ('List') and identifies the resource ('keyword tracker definitions'), fully distinguishing it from sibling tools like search_calls or get_call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'Call this before using the trackers filter on search_calls so you know what names exist' and 'Also useful to explain tracker hits that appear in call summaries.' This clarifies when to use it and its relationship to search_calls, giving the agent concrete context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_userA
Read-only

Get a specific user profile including name, email, title, phone, and settings. Use to resolve user IDs returned from call data.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesGong user ID (numeric string up to 20 digits)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the list of fields returned and the use case, but no additional behavioral traits such as error handling or rate limits. Given the annotations, this is sufficient but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first sentence specifies the action and result, the second gives the primary use case. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description conveys the purpose, the data returned, and the typical use case. It does not need to explain return structure because the fields are listed. The annotations further clarify safety. Overall, it is complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description covers 100% of the parameter (userId: 'Gong user ID (numeric string up to 20 digits)'). The description does not add format or constraints beyond the schema, though it does provide context that the ID comes from call data. This context is minor, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a specific user profile and lists the included fields (name, email, title, phone, settings). It distinguishes itself from sibling tools like list_users and search_users by specifying the use case of resolving a specific user ID from call data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context: 'Use to resolve user IDs returned from call data.' This tells the agent when to use this tool, but does not explicitly exclude alternatives or mention any other tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_callsA
Read-only

List Gong calls with optional date filtering. Returns minimal call metadata (ID, title, date, duration). Use get_call_summary for details or get_call_transcript for full transcript.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor for fetching next page of results
toDateTimeNoEnd date/time filter in ISO 8601 format (e.g., 2024-01-31T23:59:59Z). Must be after fromDateTime if both specified.
workspaceIdNoFilter calls by workspace ID (numeric string up to 20 digits)
fromDateTimeNoStart date/time filter in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Must be before toDateTime if both specified.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and open-world hints. The description adds value by specifying the return payload is minimal metadata (ID, title, date, duration) and that date filtering is supported, giving context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the core purpose, followed by return info and alternative guidance. Every sentence contributes meaningful content without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description sufficiently covers the tool's purpose, return behavior, and alternatives for a listing function. Pagination and workspace filtering are documented in the schema, and the annotations cover safety and world assumptions, making it complete for tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all four parameters with detailed descriptions, so the baseline is 3. The description only mentions 'optional date filtering', which adds no new semantic detail beyond what the schema already provides for fromDateTime/toDateTime.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it 'List Gong calls' with a specific verb and resource. The mention of 'optional date filtering' scopes the functionality, and the directive to use get_call_summary or get_call_transcript for other needs distinguishes it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit alternatives for when details or transcripts are needed, guiding tool selection. However, it does not explicitly mention when to use list_calls versus search_calls or other search variants, so it falls short of a full exclusion set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_library_foldersA
Read-only

List all public Gong call library folders for a workspace. Returns folder IDs and names to use with get_library_folder_calls. Use list_workspaces to find workspace IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesWorkspace ID to list folders for (use list_workspaces to find IDs)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's additional note that it lists 'all public' folders adds scoping behavior. It also discloses that the return includes folder IDs and names, which is useful given no output schema. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and no filler. Every sentence contributes either the action, the output, or the prerequisite.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter list operation with good annotations, the description fully covers purpose, output, and usage context. The relationship to get_library_folder_calls and list_workspaces gives adequate integration guidance. No output schema exists, so the description appropriately covers return content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with workspaceId well-described including the hint to use list_workspaces. The tool description repeats this hint but adds no new parameter semantics. Baseline 3 is appropriate because the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a clear resource ('public Gong call library folders') and scope ('for a workspace'). It also distinguishes itself from siblings by explaining the output's purpose ('to use with get_library_folder_calls'), making it clear this is a lookup tool for folder IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states a prerequisite ('Use list_workspaces to find workspace IDs') and provides downstream context ('to use with get_library_folder_calls'). It doesn't explicitly contrast with alternative tools like list_calls, but the context makes the intended use unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersA
Read-only

List all Gong users in the organization. Returns name, email, title, and user IDs. Useful when you need a Gong user ID for search_calls filters like primaryUserIds, though for most "find calls by this person" cases you can pass their email directly to primaryUserEmails or participantEmails instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor for fetching next page of results
includeAvatarsNoWhether to include user avatar URLs in the response

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the description need not restate safety. It adds return-field info but does not disclose pagination behavior or whether deactivated users are included. The added value is modest, consistent with a simple read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences only. The first states purpose and return fields; the second gives usage guidance and alternatives. Every word earns its place, with no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and good annotations, the description covers return fields and usage context. It lacks explicit mention of pagination mechanics, though the cursor parameter implies it, making it nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (cursor and includeAvatars have descriptions), so the baseline is 3. The description does not add extra meaning to the parameters beyond what the schema already provides, so no higher score is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all Gong users in the organization, specifies return fields (name, email, title, user IDs), and distinguishes from siblings like get_user and search_users by emphasizing the 'all users' scope and its role in providing IDs for search_calls filters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool (need a Gong user ID for search_calls filters) and provides a concrete alternative for most cases (pass email directly to primaryUserEmails/participantEmails), giving clear when/why guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workspacesA
Read-only

List all Gong workspaces with their IDs and names. Use workspace IDs as filters in list_calls, search_calls, get_trackers, and other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating the operation is safe and non-destructive. The description adds value by specifying that it returns 'all' workspaces and includes 'IDs and names,' which complements the openWorldHint by confirming the complete dataset is exposed. It does not detail pagination or authentication, but for a read-only list with no parameters, this level of transparency is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundant words. The first sentence immediately states the core action and output. The second sentence provides practical guidance on using the results, earning its place. It is front-loaded and easily scannable, exemplifying concise and structured documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is complete. It tells the user what the tool does, what it returns, and how to use the returned data. The sibling context reinforces that workspace IDs are needed for filtering other tools, and this description fully addresses that context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so schema coverage is trivially 100%. The baseline for 0 params is 4, and the description adds no parameter-specific meaning since there are none. The description appropriately focuses on the output, and the lack of parameters needs no further explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'List all Gong workspaces with their IDs and names.' It effectively distinguishes itself from sibling tools like list_users and list_calls by focusing on workspaces. The addition of 'with their IDs and names' clarifies the output scope, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when this tool is useful: 'Use workspace IDs as filters in list_calls, search_calls, get_trackers, and other tools.' This provides clear context on how to apply the results. However, it does not explicitly mention when not to use it or name alternative tools, though no other sibling lists workspaces, so the guidance is sufficient but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_callsA
Read-only

Search Gong calls with rich filters. The primary tool for narrowing down calls before drilling in with get_call_summary or get_call_transcript.

Supported filters:

  • When: fromDateTime, toDateTime (ISO 8601). Always prefer a date range — unbounded queries pull every call in the workspace.

  • Who hosted: primaryUserIds, primaryUserEmails, excludePrimaryUserIds.

  • Who participated (host OR attendee OR invitee): participantUserIds, participantEmails, excludeParticipantUserIds, excludeParticipantEmails.

  • Customer/topic: customerName (CRM account name, email domain, or title substring), titleContains, trackers (see note below).

  • Metadata: scope (External/Internal), direction, system (Zoom/Meet/…), language (eng/jpn/…), minDuration and maxDuration in seconds.

  • Output shape: include (array of keyPoints, trackers, highlights, speakers, comments, context, outline, media). Parties + brief + topics are always returned.

Behavior:

  • Auto-paginates up to ~5000 calls. If a user asks for a broad question, guide them to narrow with a date range, scope, minDuration, or customerName first.

  • trackers filter does case-insensitive substring match on tracker names. Names are workspace-specific — call get_trackers first to see what's configured before guessing.

  • When the rich output would exceed the output cap, the tool auto-falls back to a compact table showing all IDs/titles. Use get_call_summary on specific IDs to go deeper.

  • Filters compose with AND logic (primaryUserIds + customerName = hosted by user X on customer Y calls).

Usage pattern: narrow with search_calls → drill into specific calls with get_call_summary (AI summary) or get_call_transcript (exact quotes).

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFilter by call scope: External (customer-facing), Internal (team), or Unknown.
systemNoFilter by conferencing system (e.g., "Zoom", "Google Meet"). Case-insensitive substring match.
callIdsNoFilter by specific call IDs. Array of numeric strings.
includeNoAdditional per-call data beyond the defaults (parties, brief, topics). Start lean and add fields as needed — each extra field multiplies response size by number of calls. Options: keyPoints (~5KB/call), trackers (~3KB/call, auto-added when trackers filter is used), highlights (~3KB/call), speakers (talk time, ~1KB/call), comments (varies), context (CRM links, ~1KB/call), outline (~80KB/call, AVOID unless you need full structure of one call), media (audio/video URLs).
languageNoFilter by language code (e.g., "eng", "jpn"). Case-insensitive exact match.
trackersNoFilter calls where at least one matching tracker fired (count > 0). Tracker names are matched case-insensitive substring and vary by workspace — call get_trackers first to discover what is configured.
directionNoFilter by call direction: Inbound, Outbound, Conference, or Unknown.
toDateTimeNoEnd date/time filter in ISO 8601 format (e.g., 2024-01-31T23:59:59Z). Strongly recommended alongside fromDateTime. Must be after fromDateTime if both specified.
maxDurationNoMaximum call duration in seconds.
minDurationNoMinimum call duration in seconds. Useful for filtering out no-shows or misfired meetings.
workspaceIdNoFilter calls by workspace ID (numeric string up to 20 digits)
customerNameNoFilter by customer/account name (case-insensitive substring match). Searches CRM account name, external participant email domains, and call titles.
fromDateTimeNoStart date/time filter in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Strongly recommended — without a date range, the tool pulls every call in the workspace. Must be before toDateTime if both specified.
titleContainsNoFilter calls whose title contains this substring (case-insensitive).
primaryUserIdsNoFilter by primary user IDs (call hosts only, server-side). Use participantUserIds to find calls where a user was any participant.
participantEmailsNoFilter by participant email addresses (case-insensitive). Matches calls where any participant has a matching email.
primaryUserEmailsNoFilter by host email (case-insensitive). Alternative to primaryUserIds when you have emails instead of user IDs.
participantUserIdsNoFilter by participant user IDs. Matches calls where any participant (host, attendee, or invitee) has a matching Gong user ID. Requires a date range for optimal performance.
excludePrimaryUserIdsNoExclude calls hosted by these user IDs.
excludeParticipantEmailsNoExclude calls where any participant has a matching email (case-insensitive).
excludeParticipantUserIdsNoExclude calls where any participant has a matching user ID.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description reveals auto-pagination up to ~5000 calls, automatic fallback to a compact table when output exceeds caps, AND-composition of filters, case-insensitive tracker matching, and performance implications of the include fields. This is rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but appropriately structured: a one-line purpose, grouped filter list, behavioral notes, and a usage pattern. Headings and bullets make it scannable, and every section adds actionable guidance beyond the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (21 parameters, no output schema), the description covers return shape (always-returned fields, output size behavior), pagination limits, fallback behavior, and performance guidance. It gives the agent everything needed to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by grouping filters (e.g., 'Who hosted', 'Who participated'), warning about unbounded date ranges, recommending get_trackers first, and providing size estimates for include options (e.g., outline ~80KB/call). These are practical semantic additions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Search Gong calls with rich filters' and identifies itself as 'the primary tool for narrowing down calls before drilling in with get_call_summary or get_call_transcript.' This clearly distinguishes it from siblings like list_calls and the account/opportunity-specific search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly frames the tool as the primary narrowing step and names get_call_summary and get_call_transcript as follow-up alternatives. It does not explicitly exclude related search tools like search_calls_by_account, but it gives strong contextual guidance for when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_calls_by_accountA
Read-only

Find calls involving a specific account/company by matching email domains of external participants. The Gong API does not natively support filtering by account name — this tool fetches calls in the date range and post-filters on parties[].emailAddress. Auto-paginates up to maxCalls. For external tech-stack joins (e.g., "all calls with prospects on Klaviyo"), resolve domains upstream and pass them here.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor (advanced).
domainsYesEmail domains (e.g., ["acme.com", "acme.io"]). A call matches if any external participant has an email at one of these domains.
maxCallsNoMaximum calls to fetch and filter (default: 500). Auto-paginates underlying API.
toDateTimeNoEnd date/time in ISO 8601 format.
workspaceIdNoFilter by workspace ID.
fromDateTimeNoStart date/time in ISO 8601 format.
primaryUserIdsNoPre-narrow by call host user IDs (faster, server-side).
matchCrmAccountNoAlso match calls where a CRM Account context object name contains a domain root (e.g., "acme" from "acme.com"). Requires CRM integration. Default false.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds valuable behavior beyond that: it fetches calls and post-filters on parties[].emailAddress, and auto-paginates up to maxCalls. It also discloses the API limitation. This is more than the bare minimum, though it doesn't mention performance implications or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, implementation detail, and use-case extension. The description is front-loaded with the main purpose and contains no fluff or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, full schema coverage, and annotations that establish safety, the description covers the core algorithm, pagination behavior, and an advanced use case. It does not specify default date ranges or what happens when no date range is provided, but the schema covers those details. Overall, it's sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema descriptions are detailed for each parameter. The description adds some relational context (e.g., domains matching parties[].emailAddress, auto-pagination tied to maxCalls) but mostly reinforces what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find calls involving a specific account/company by matching email domains of external participants.' It clearly distinguishes this tool from siblings like list_calls and search_calls_by_opportunity by its domain-based account matching approach.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use this tool (account/company domain filtering) and notes that the Gong API doesn't natively support account-name filtering, giving context for the workaround. It also mentions a specific external tech-stack use case. However, it doesn't explicitly contrast with sibling tools such as search_calls or search_calls_by_opportunity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_calls_by_opportunityA
Read-only

Find calls linked to specific CRM Opportunities by ID or name substring. Requires Gong-CRM integration (Salesforce/HubSpot) — calls without CRM linkage will not match. Provide opportunityIds OR opportunityNames (or both).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
maxCallsNoMax calls to fetch and filter (default: 500).
toDateTimeNoEnd date/time in ISO 8601 format.
workspaceIdNoFilter by workspace ID.
fromDateTimeNoStart date/time in ISO 8601 format.
opportunityIdsNoCRM Opportunity IDs (e.g., Salesforce 18-character IDs).
primaryUserIdsNoPre-narrow by call host user IDs.
opportunityNamesNoOpportunity name substrings (case-insensitive). Matches if the Opportunity Name field contains any of these.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description discloses the prerequisite of CRM integration and the fact that non-linked calls won't match, which is a behavioral limitation not implied by the schema. It does not contradict the annotations and adds useful context about matching semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, then immediately covers prerequisites and parameter usage. Every clause earns its place, and there is no redundant restatement of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with no output schema, the description covers the essential usage context: what it finds, the required integration, and parameter relationships. It omits pagination and workspace filtering details, but those are adequately described in the schema, so the description is sufficiently complete for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has high coverage (88%) and already describes each parameter individually. The description adds critical relational semantics by stating 'Provide opportunityIds OR opportunityNames (or both)', which clarifies the mutual exclusivity that is not evident from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Find' and clearly identifies the resource 'calls' filtered by 'CRM Opportunities' via ID or name substring. It distinguishes itself from siblings like search_calls_by_account by focusing on opportunities, and the mention of 'calls without CRM linkage will not match' adds operational context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a clear prerequisite ('Requires Gong-CRM integration') and the matching condition ('calls without CRM linkage will not match'), and instructs to provide opportunityIds OR opportunityNames. However, it does not explicitly name alternative tools for non-CRM scenarios, so it lacks explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_transcriptsA
Read-only

Free-text keyword search across call transcripts within a bounded date range. Use for ad-hoc searches like "calls mentioning competitor X". For recurring terms, prefer setting up Gong Trackers in the UI and using search_calls + get_call_summary — Trackers are server-side and dramatically cheaper. Date ranges > 30 days require additional narrowing via primaryUserIds or domains. Returns sentence-level matches with speaker attribution and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainsNoNarrow to calls with external parties from these email domains before scanning.
keywordsYesKeywords to search for. Whole-word, case-insensitive by default.
maxCallsNoMax calls to scan (default: 500).
wholeWordNoMatch whole words only. Default true (recommended).
toDateTimeYesREQUIRED. End of date window (ISO 8601).
workspaceIdNo
fromDateTimeYesREQUIRED. Start of date window (ISO 8601).
caseSensitiveNoMatch keywords case-sensitively. Default false.
primaryUserIdsNoNarrow to calls hosted by these users before scanning.
maxMatchesPerCallNoMax sentence matches returned per call (default: 10).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context: it returns sentence-level matches with speaker attribution and timestamps, and it mentions the >30-day narrowing requirement (a performance/scope behavior). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, usage/alternative guidance, and a critical constraint plus output summary. No fluff, front-loaded with the core action. It is concise yet information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description communicates the return format ('sentence-level matches with speaker attribution and timestamps') and the key scoping constraint. It also differentiates from 14 siblings. Minor gaps include lack of pagination details or error behavior, but for a read-only search tool with a well-annotated schema, this is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 90%, so most parameters are already described. The description adds meaning beyond the schema by tying keywords to an ad-hoc use case, and by specifying that primaryUserIds/domains are required for narrowing when date ranges exceed 30 days—a constraint not evident from the individual parameter descriptions. This enriches the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource: 'Free-text keyword search across call transcripts within a bounded date range.' It explicitly differentiates from sibling tools by framing this as the ad-hoc transcript search while pointing to search_calls + get_call_summary for recurring tracker-based searches. The example 'calls mentioning competitor X' concretely illustrates the intended use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('Use for ad-hoc searches') and when-not-to-use ('For recurring terms, prefer... Trackers'), naming specific alternative tools. It also gives a critical operational constraint ('Date ranges > 30 days require additional narrowing via primaryUserIds or domains') that informs parameter decisions. This is model-tier guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_usersA
Read-only

Search and filter users by IDs or creation date. More flexible than list_users for resolving specific user IDs from call data.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor for fetching next page
userIdsNoSpecific user IDs to look up
createdToDateTimeNoFilter users created before this datetime (ISO 8601)
createdFromDateTimeNoFilter users created after this datetime (ISO 8601)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile and incomplete-result behavior. The description adds the filtering-by-IDs-or-creation-date capability but does not disclose additional behavioral specifics like pagination mechanics or response format. Given the annotations, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary verb and resource, and includes a comparative clause for differentiation. Every word earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with four optional parameters and no output schema, the description sufficiently conveys its core purpose and use case, and the annotations cover safety and open-world behavior. It does not explicitly mention pagination, but openWorldHint already signals that. The description is complete enough for most scenarios, though adding a note about pagination would make it fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description mentions 'IDs or creation date' which loosely maps to the userIds and createdFrom/ToDateTime params, but it does not add syntax or format detail beyond what the schema provides. Baseline of 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search and filter users by IDs or creation date.' It also differentiates from the sibling tool list_users by noting it is 'More flexible than list_users for resolving specific user IDs from call data,' which provides a specific and distinct purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names an alternative (list_users) and specifies when this tool is preferable: for resolving specific user IDs from call data. This provides clear guidance on when to use this tool versus list_users, fulfilling the 'when/when-not/alternatives' criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv1.0.1
    • Addedget_call
    • Removedget_call_details
    • Addedget_call_summary
    • Addedget_call_transcript
    • Addedget_library_folder_calls
    • Addedget_trackers
    • Removedget_transcripts
    • Addedget_user
    • Changedlist_calls6 fields changed
      • addedInput schema / properties / cursor / minLength
        Added value: +1
      • changedInput schema / properties / fromDateTime / description
        Previous value: -"Start date/time filter in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)"New value: +"Start date/time filter in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Must be before toDateTime if both specified."
      • addedInput schema / properties / fromDateTime / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
      • changedInput schema / properties / toDateTime / description
        Previous value: -"End date/time filter in ISO 8601 format (e.g., 2024-01-31T23:59:59Z)"New value: +"End date/time filter in ISO 8601 format (e.g., 2024-01-31T23:59:59Z). Must be after fromDateTime if both specified."
      • addedInput schema / properties / toDateTime / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
      • addedInput schema / properties / workspaceId
        Added value: +{
        +  "description": "Filter calls by workspace ID (numeric string up to 20 digits)",
        +  "pattern": "^\\d{1,20}$",
        +  "type": "string"
        +}
    • Addedlist_library_folders
    • Changedlist_users2 fields changed
      • addedInput schema / properties / cursor / minLength
        Added value: +1
      • addedInput schema / properties / includeAvatars
        Added value: +{
        +  "description": "Whether to include user avatar URLs in the response",
        +  "type": "boolean"
        +}
    • Addedlist_workspaces
    • Changedsearch_calls26 fields changed
      • changedInput schema / properties / callIds / description
        Previous value: -"Filter by specific call IDs"New value: +"Filter by specific call IDs. Array of numeric strings."
      • addedInput schema / properties / callIds / items / pattern
        Added value: +"^\\d{1,20}$"
      • removedInput schema / properties / cursor
        Removed value: -{
        -  "description": "Pagination cursor for fetching next page of results",
        -  "type": "string"
        -}
      • addedInput schema / properties / customerName
        Added value: +{
        +  "description": "Filter by customer/account name (case-insensitive substring match). Searches CRM account name, external participant email domains, and call titles.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / direction
        Added value: +{
        +  "description": "Filter by call direction: Inbound, Outbound, Conference, or Unknown.",
        +  "enum": [
        +    "Inbound",
        +    "Outbound",
        +    "Conference",
        +    "Unknown"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / excludeParticipantEmails
        Added value: +{
        +  "description": "Exclude calls where any participant has a matching email (case-insensitive).",
        +  "items": {
        +    "format": "email",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludeParticipantUserIds
        Added value: +{
        +  "description": "Exclude calls where any participant has a matching user ID.",
        +  "items": {
        +    "pattern": "^\\d{1,20}$",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludePrimaryUserIds
        Added value: +{
        +  "description": "Exclude calls hosted by these user IDs.",
        +  "items": {
        +    "pattern": "^\\d{1,20}$",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / fromDateTime / description
        Previous value: -"Start date/time filter in ISO 8601 format"New value: +"Start date/time filter in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Strongly recommended — without a date range, the tool pulls every call in the workspace. Must be before toDateTime if both specified."
      • addedInput schema / properties / fromDateTime / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Additional per-call data beyond the defaults (parties, brief, topics). Start lean and add fields as needed — each extra field multiplies response size by number of calls. Options: keyPoints (~5KB/call), trackers (~3KB/call, auto-added when trackers filter is used), highlights (~3KB/call), speakers (talk time, ~1KB/call), comments (varies), context (CRM links, ~1KB/call), outline (~80KB/call, AVOID unless you need full structure of one call), media (audio/video URLs).",
        +  "items": {
        +    "enum": [
        +      "keyPoints",
        +      "trackers",
        +      "highlights",
        +      "speakers",
        +      "comments",
        +      "context",
        +      "outline",
        +      "media"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "Filter by language code (e.g., \"eng\", \"jpn\"). Case-insensitive exact match.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / maxDuration
        Added value: +{
        +  "description": "Maximum call duration in seconds.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / minDuration
        Added value: +{
        +  "description": "Minimum call duration in seconds. Useful for filtering out no-shows or misfired meetings.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / participantEmails
        Added value: +{
        +  "description": "Filter by participant email addresses (case-insensitive). Matches calls where any participant has a matching email.",
        +  "items": {
        +    "format": "email",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / participantUserIds
        Added value: +{
        +  "description": "Filter by participant user IDs. Matches calls where any participant (host, attendee, or invitee) has a matching Gong user ID. Requires a date range for optimal performance.",
        +  "items": {
        +    "pattern": "^\\d{1,20}$",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / primaryUserEmails
        Added value: +{
        +  "description": "Filter by host email (case-insensitive). Alternative to primaryUserIds when you have emails instead of user IDs.",
        +  "items": {
        +    "format": "email",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / primaryUserIds / description
        Previous value: -"Filter by primary user IDs (the call hosts)"New value: +"Filter by primary user IDs (call hosts only, server-side). Use participantUserIds to find calls where a user was any participant."
      • addedInput schema / properties / primaryUserIds / items / pattern
        Added value: +"^\\d{1,20}$"
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Filter by call scope: External (customer-facing), Internal (team), or Unknown.",
        +  "enum": [
        +    "External",
        +    "Internal",
        +    "Unknown"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / system
        Added value: +{
        +  "description": "Filter by conferencing system (e.g., \"Zoom\", \"Google Meet\"). Case-insensitive substring match.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / titleContains
        Added value: +{
        +  "description": "Filter calls whose title contains this substring (case-insensitive).",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / toDateTime / description
        Previous value: -"End date/time filter in ISO 8601 format"New value: +"End date/time filter in ISO 8601 format (e.g., 2024-01-31T23:59:59Z). Strongly recommended alongside fromDateTime. Must be after fromDateTime if both specified."
      • addedInput schema / properties / toDateTime / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
      • addedInput schema / properties / trackers
        Added value: +{
        +  "description": "Filter calls where at least one matching tracker fired (count > 0). Tracker names are matched case-insensitive substring and vary by workspace — call get_trackers first to discover what is configured.",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / workspaceId
        Added value: +{
        +  "description": "Filter calls by workspace ID (numeric string up to 20 digits)",
        +  "pattern": "^\\d{1,20}$",
        +  "type": "string"
        +}
    • Addedsearch_calls_by_account
    • Addedsearch_calls_by_opportunity
    • Addedsearch_transcripts
    • Addedsearch_users
  2. 5 tool updatesv1.0.0
    • First observedget_call_details
    • First observedget_transcripts
    • First observedlist_calls
    • First observedlist_users
    • First observedsearch_calls

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but search_calls and search_calls_by_account overlap somewhat since search_calls already supports customerName filtering via email domain. However, the custom account search tool explicitly explains its unique post-filtering role, reducing confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case: list_*, get_*, search_*. Multi-word names like search_calls_by_account and get_library_folder_calls are consistent with this pattern. There are no mixed conventions or vague verbs.

Tool Count5/5

15 tools is within the well-scoped range for a comprehensive read-only API integration. Each tool covers a specific need such as call search, summary, transcript, user lookup, trackers, workspaces, and library folders, without unnecessary bloat.

Completeness5/5

The tool set covers the full lifecycle of exploring Gong call data: searching/filtering calls, retrieving metadata/summaries/transcripts, resolving users, managing trackers, and accessing library folders. There are no obvious dead ends—every tool feeds into others or serves a standalone purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with Gong's sales platform through MCP, providing access to tools and services for sales engagement tracking and analytics.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for the Gong API, enabling search and retrieval of calls, transcripts, attendees, next steps, and more.
    7
    535 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Gong calls and transcripts through natural language, allowing users to list calls with date filtering and retrieve detailed transcripts with participant context.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides tools to access Gong call data, including listing calls, retrieving details and transcripts, searching across transcripts, and listing users.
    5
    10 npm
    MIT