Skip to content

Connect Chorus to Claude: Analyze Sales Insights & Scorecards

A step-by-step technical guide to connecting Chorus (ZoomInfo) to Claude via Truto's MCP Server. Automate sales call analysis, SQF extraction, and scorecard reviews.

Uday Gajavalli Uday Gajavalli · · 6 min read
Connect Chorus to Claude: Analyze Sales Insights & Scorecards

Analyzing sales calls, extracting deal insights, and tracking rep performance traditionally requires jumping between your CRM, your inbox, and conversational intelligence platforms like Chorus (by ZoomInfo). By leveraging the Model Context Protocol (MCP), you can bridge that gap, giving Anthropic's Claude direct, secure access to your Chorus data.

This guide demonstrates how to connect Chorus to Claude using Truto's MCP Server. If your team uses other LLM frameworks, check out our sibling guides on connecting Chorus to ChatGPT or connecting Chorus to AI Agents.

By the end of this guide, you will have a functional pipeline allowing Claude to query call transcripts, evaluate scorecards, and push insights directly into your Sales Qualification Framework (SQF) - entirely through natural language.

Creating the Chorus MCP Server

Truto automatically generates an MCP-compliant JSON-RPC 2.0 server based on the endpoints exposed by the Chorus integration. You can provision this server via the Truto UI or programmatically via the API. For those interested in the underlying mechanics, see our hands-on guide to building MCP servers.

Option 1: Via the Truto UI

  1. Navigate to your connected Chorus account in the Truto dashboard.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Give your server a name (e.g., "Chorus Sales Analyst").
  5. Configure any desired method or tag filters (e.g., restrict to read methods only).
  6. Click Save and copy the generated MCP server URL.

Option 2: Via the Truto API

For platform engineers building scalable internal tooling, you can provision MCP servers programmatically using the integrated account ID.

Make a POST request to /integrated-account/:id/mcp:

curl -X POST https://api.truto.one/integrated-account/<CHORUS_ACCOUNT_ID>/mcp \
  -H "Authorization: Bearer <YOUR_TRUTO_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Claude Desktop - Chorus Ops",
    "config": {
      "methods": ["read", "custom"]
    }
  }'

The response contains the exact URL you will need to configure Claude:

{
  "id": "mcp_12345",
  "name": "Claude Desktop - Chorus Ops",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Connecting to Claude

Once your server is provisioned, you need to register it with Claude. This setup allows you to expand Claude's capabilities, much like how you might scale batch tasks or file processing for other data types. You can do this using the Claude application UI or by modifying the local configuration file.

Option 1: Claude Desktop UI

  1. Open Claude Desktop.
  2. Navigate to Settings > Connectors > Add custom connector.
  3. Paste the Truto MCP URL generated in the previous step.
  4. Click Add.

Option 2: Manual Configuration File

Alternatively, you can edit the claude_desktop_config.json file directly.

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the Truto endpoint under your mcpServers block:

{
  "mcpServers": {
    "chorus_integration": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "--url",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}

Restart Claude to initialize the connection. Claude will send an initialize JSON-RPC handshake to Truto, returning the server's capabilities and auto-generated tools.

Security and Access Control

Exposing enterprise conversational intelligence data to an LLM requires strict boundary setting. Truto's MCP tokens provide several layers of access control configured directly at the server level:

  • Method Filtering: Restrict Claude to read-only operations by passing methods: ["read"] during server creation. This prevents accidental data deletion or writes.
  • Tag Filtering: Scope the MCP server to specific resource domains. For example, tags: ["scorecards"] limits Claude to reviewing rep performance without exposing core meeting transcripts.
  • Secondary Authentication (require_api_token_auth): When enabled, possessing the MCP URL is not enough. The client must also pass a valid Truto API token in the Authorization header, enforcing strict identity checks.
  • Auto-Expiration (expires_at): Ideal for temporary audit access or contractor workflows. Set an ISO timestamp, and the server will automatically revoke itself without manual cleanup.

Engineering Reality: Chorus API Quirks

The Chorus API is incredibly powerful, but it has a few specific architectural nuances you must plan for when orchestrating AI agents.

Asynchronous Media Workflows: Extracting recordings or generating CSV exports of reports is not instantaneous. Endpoints like chorus_reports_export and chorus_conversations_export return a task ID. Your LLM must be instructed to poll these task statuses until completion, rather than expecting a binary payload in the immediate HTTP response.

Complex SQF Payloads: Writing back CRM fields via the chorus_sales_qualifications_writeback_crm endpoint requires precise coordination. The API expects an exact schema mapping (meeting_id, opportunity_id, object_type, and the nested crm_changes array). When prompting Claude to execute this, explicitly define the CRM object structure it should construct.

Strict Rate Limits: Chorus strictly limits API consumption. Truto does not absorb, throttle, or automatically retry HTTP 429 Too Many Requests errors. If Chorus rate-limits the request, Truto passes the 429 directly back to Claude, normalizing the rate limit context into IETF standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your application or agent must manage exponential backoff independently.

Chorus MCP Tool Inventory

Truto automatically generates tool names from the integration's resource labels and methods, turning REST parameters into JSON Schemas that Claude understands.

Hero Tools

Here are the highest-impact tools for sales analysis workflows:

get_single_chorus_conversation_by_id

Fetch a complete conversation object, including the meeting summary, action items, participants, and trackable metrics.

  • Usage Notes: Requires the exact id of the conversation. Use list_all_chorus_conversations first if you need to search for a specific meeting.
  • Example Prompt: "Get the conversation details for meeting ID 987654. Summarize the action items and tell me if the prospect mentioned pricing constraints."

list_all_chorus_conversations

Query the engagements endpoint to find meetings matching specific date ranges, owners, or processing states.

  • Usage Notes: Handles cursor-based pagination. Claude will automatically receive and pass the next_cursor parameter if the results exceed the default limit.
  • Example Prompt: "List all Chorus conversations from last week where the processing_state is complete."

get_single_chorus_sales_qualification_by_id

Extract the SQF (Sales Qualification Framework) analysis for a given recording, including tracked changes and conversation duration.

  • Usage Notes: Pass the recording_id as the primary id. Excellent for automating MEDDIC or BANT extraction.
  • Example Prompt: "Pull the sales qualification analysis for recording ID 12345. Did the rep successfully identify the economic buyer?"

list_all_chorus_scorecards

Fetch submitted scorecard evaluations for sales reps, including specific question scores, initiatives, and reviewers.

  • Usage Notes: Useful for aggregating rep performance over time to spot coaching opportunities.
  • Example Prompt: "List all scorecards submitted for Sarah this month. Calculate her average score on the 'objection handling' metric."

chorus_conversations_join

Instruct the Chorus bot to join a live meeting via a plain text invitation link.

  • Usage Notes: The body schema requires the full meeting text (e.g., a standard Zoom invite).
  • Example Prompt: "Have Chorus join this live meeting. Here is the invite link: https://zoom.us/j/5551234567"

For the complete tool inventory and full schema details, visit the Chorus integration page.

Workflows in Action

Integrating Claude with Chorus transforms static call recordings into an active, conversational CRM assistant. Here is how specific roles can use these MCP tools.

Workflow 1: The Post-Call Deal Briefing

Sales Managers need immediate visibility into high-value deals without listening to 45-minute call recordings.

"Find the most recent conversation associated with the Acme Corp deal. Extract the summary, list all the action items assigned to our team, and fetch the Sales Qualification analysis to see if they mentioned a specific budget."

Execution Steps:

  1. Claude calls list_all_chorus_conversations passing "Acme Corp" as a query parameter.
  2. Claude extracts the id of the most recent MEETING engagement.
  3. Claude calls get_single_chorus_conversation_by_id to parse the summary and action_items arrays.
  4. Claude calls get_single_chorus_sales_qualification_by_id to check the sqf_analysis fields for budget indicators, returning a synthesized brief to the manager.

Workflow 2: Automated Coaching Scorecards

Enablement teams can use Claude to analyze rep performance trends and flag coaching gaps.

"Pull all the scorecards submitted for John Doe in Q3. Review his scores across all meetings. If his 'Discovery' score averages below 3.0, list the meeting IDs where he struggled so I can build a training playlist."

Execution Steps:

  1. Claude calls list_all_chorus_scorecards, filtering for the target rep and date range.
  2. Claude parses the scores objects within the response.
  3. Claude calculates the average for the "Discovery" metric.
  4. If the logic is triggered, Claude identifies the engagement_id for low-scoring calls and returns the list.
  5. (Optional) Claude could autonomously call create_a_chorus_playlist and chorus_playlists_create_moment to build the actual training asset.

Wrapping Up

Connecting Chorus to Claude via Truto's MCP servers replaces rigid dashboards with a fluid, natural language interface for conversational intelligence. By auto-generating schemas directly from documentation, Truto ensures that your AI agents have complete, secure, and type-safe access to every resource Chorus provides.

FAQ

Does Truto automatically handle Chorus API rate limits?
No. Truto passes HTTP 429 errors directly to the caller alongside standardized IETF rate limit headers. Your client or AI agent must implement its own retry and backoff logic.
Can I restrict which Chorus data Claude can access?
Yes. Truto's MCP servers support method filtering (e.g., read-only) and tag filtering to restrict the exposed tools. You can also enforce secondary authentication.
Does Truto cache my Chorus meeting transcripts?
No. Truto acts as a pass-through proxy. Tool executions pull data directly from the Chorus API in real time, ensuring zero data retention.

More from our Blog