# Chorus MCP connector

The Chorus connector brings recorded sales calls, live meetings, email threads and engagement history into Claude, ChatGPT, Cursor and any MCP client, so each person can search, pull up and export Chorus conversations inside their own access.

Source: https://elaichi.ai/connectors/chorus/

## Facts

| | |
| --- | --- |
| Application | Chorus |
| Category | Conversational Intelligence |
| AI tools | 79 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 79 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Chorus is connected

- List Chorus conversations recorded this week by team.
- Summarize the last Chorus conversation with Northwind.
- Which Chorus users recorded the most calls last month?

## Connect Chorus in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Chorus.
2. Optionally set Share with, then press Connect.
3. Paste a Chorus API key. One person generates a token in Chorus and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Chorus tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Chorus to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Chorus to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Chorus to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Chorus to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Chorus tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Chorus through Elaichi

### Pull up last week's calls with an account

Sales. Ask for every Chorus conversation with a prospect before the next meeting and review what was covered, who joined, and how long it ran.

### Get Chorus into a meeting you forgot

Sales. Have Chorus join a live call that was scheduled outside the usual calendar flow, so the recording lands with the rest of the deal history.

### Review a rep's conversations from the month

Sales leadership. List the calls a rep held in a period, open the ones that matter, and prepare coaching notes without clicking through the Chorus library one recording at a time.

### Export conversations for a deal review

Revenue operations. Export a set of Chorus conversations by account or date range and hand the files to a deal desk or a data warehouse team.

### Read the email thread behind a renewal

Customer success. Find the Chorus email threads and engagements tied to a customer, and check what was promised before a renewal or escalation call.

### Clean up test and duplicate recordings

Revenue operations. Find Chorus conversations and engagements that were recorded by mistake and remove them, with each deletion written to the audit log under the person who asked for it.

## Frequently asked questions

### How do I connect Chorus to Claude?

Connect Chorus in Elaichi first, which asks for a Chorus API key and nothing else, so there is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Sign in with your Elaichi account when Claude asks, and Chorus conversations, emails and engagements are available in that chat.

### Does Chorus work with ChatGPT and Cursor as well as Claude?

Yes. Once Chorus is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any MCP client and the Elaichi Agent. You connect Chorus once and every client you use picks it up.

### What can an AI agent actually do with my Chorus data?

An agent connected to Chorus can list and open recorded conversations, find calls with a particular account or from a particular period, and export conversations for review. It can also read email threads and engagements linked to a customer, see which live meetings are running, have Chorus join a call, and remove recordings that should not be there. Chorus offers many actions, so short concrete asks such as "calls with Acme in March" work better than long paragraphs.

### Does connecting Chorus give the AI every recording in the workspace?

No. Every request runs inside the access of the person who signed in, so an agent sees only the Chorus conversations, emails and engagements that person can already see in Chorus. Elaichi can narrow that further, for example to reading only, but it can never widen it beyond what Chorus itself allows.

### Can my team share one Chorus connection?

Yes. One person adds the Chorus API key in Elaichi and shares the connection with a team, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so every call to Chorus in the audit log names the person who made it.

### Can I stop an agent from deleting or changing things in Chorus?

Yes. Restrictions in Elaichi apply per action, so you can allow reading and exporting Chorus conversations while blocking deletion of recordings, email threads or engagements. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt can reach it.

### What happens to a Chorus connection when someone leaves?

Offboarding a person in Elaichi ends their access to Chorus through every client at once. If they connected a shared Chorus account, it keeps working for the rest of the team. Disconnecting Chorus once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 79 Chorus tools

Every tool below is callable through https://api.elaichi.ai/mcp once Chorus is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Chorus conversations** (List). List conversations (meetings) via the engagements endpoint. Returns engagement objects filtered to type MEETING, including engagement_id, subject, date_time, duration, participants, and processing_state.
- **Get single Chorus conversation by ID** (Get). Fetch a single conversation by ID. Returns the full conversation object including account, deal, owner, recording details, participants, action items, summary, and metrics.
- **Chorus conversations bulk** (Action). Bulk upload and/or delete conversations in Chorus. Returns create and delete arrays each containing task objects with id, type, and status. Request body accepts create (array of activity objects), delete (array of conversation IDs), and meta (e.g. force_delete).
- **Delete a Chorus conversation by ID** (Delete). Delete a conversation record (e.g. an email or recording) asynchronously. Returns a task object with id and status indicating the deletion is in progress. Required: id.
- **Chorus conversations disconnect** (Action). Disconnect a live conversation call by id. Returns an empty 204 response on success. Required: id.
- **Chorus conversations export** (Export). Export conversation recordings by scheduling an email with downloadable audio/video links and metadata. Requires start and end timestamps (epoch milliseconds).
- **Chorus conversations join** (Join). Join a live call by posting the plain text invitation link (e.g. a Zoom meeting URL). Returns the created conversation object including id, name, status, participants, summary, action_items, and associated deal/account info. Requires the invitation text in the request body.
- **Chorus conversations validate** (Validate). Validate whether an upcoming meeting will be automatically recorded. Returns autojoin, recordable, and autojoin_reason attributes. Requires meeting details including id, subject, participants, link, and start_time in the request body.
- **List all Chorus users** (List). List all Chorus users. Returns the full collection of user objects including id, name, email, role, license_type, and team membership.
- **Chorus users deregister token** (Action). Deregister a mobile device from the push notifications service for the current user. Returns an empty 204 response on success. Requires token and type in the request body.
- **Get single Chorus user by ID** (Get). Get details about the authenticated user. Returns the user object including id, name, email, role, license_type, team_ids, and last_login_at.
- **Chorus users register token** (Action). Register a mobile device for push notifications in ZoomInfo Notifications Center. Returns an empty 204 response on success. Requires device_os, device_type, token, and type in the request body.
- **Chorus users update settings** (Update). Update the current user's settings. Returns an empty 204 response on success. Accepts setting attributes such as mobile push notification preferences in the request body.
- **List all Chorus me** (List). Get details about the authenticated user. Returns the user object including id, name, email, role, license_type, team_ids, and last_login_at.
- **Create a Chorus auth signed request** (Create). Authenticate via signed request using the HMAC authentication flow. Returns a signed request response including url, expiry, and id. Requires client_id and signed_request in the request body.
- **List all Chorus conversations lives** (List). Fetch a live conversation by meeting UUID or user ID. Returns the conversation object including account, deal, owner, recording details (utterances, trackers, thumbnails), participants, action items, summary, and metrics.
- **Get single Chorus email thread by ID** (Get). Get details about an email thread by id. Returns the email thread object including attributes such as private, deleted, deleted_at, and deleted_by.
- **Delete a Chorus email thread by ID** (Delete). Delete all emails in an email thread by id. Returns the deleted email thread object including attributes such as deleted, deleted_at, and deleted_by.
- **List all Chorus emails** (List). List emails matching specified criteria. Returns email objects that match the provided filter parameters.
- **Get single Chorus email by ID** (Get). Get an email by id. Returns the full email object including account, deal, owner, status, participants, summary, action_items, and metrics. Required: id.
- **List all Chorus engagements** (List). List conversations (engagements) matching specified criteria. Returns: engagement_id, engagement_type, subject, date_time, duration, participants, compliance, processing_state, tracker_matches, and url.
- **Chorus engagements bulk delete** (Delete). Delete multiple engagements by ID. Returns a 200 response on success.
- **Delete a Chorus engagement by ID** (Delete). Delete a single engagement by id.
- **List all Chorus filters** (List). List all engagement filters for the customer. Returns: filter_name, filter_type, field_type, filter_values, and id for each filter.
- **Create a Chorus filter** (Create). Create a new engagement filter. Returns the created filter object including id, filter_name, filter_type, and field_type. Requires field_type, filter_name, and filter_type in the request body.
- **Chorus filters replace** (Action). Replace all engagement filters with the provided set. Returns an empty 204 response on success. Requires filter_type, filters array, and type in the request body.
- **Get single Chorus filter by ID** (Get). Get a single engagement filter by id. Returns filter attributes including filter_name, filter_type, field_type, and filter_values.
- **Update a Chorus filter by ID** (Update). Update an engagement filter by id. Returns the updated filter object including field_type, filter_name, filter_type, and filter_values. Required: id.
- **Delete a Chorus filter by ID** (Delete). Delete an engagement filter permanently by id. Returns an empty 204 response on success.
- **Chorus integrations google authms connect** (Action). Connect the user to Google using auth connectors. Returns a 302 redirect to initiate the Google authentication flow.
- **Chorus integrations google calendars connect** (Action). Connect the customer to the Google Calendar service account. Returns an empty response on success.
- **Chorus integrations google calendars verify** (Verify). Verify a Google Calendar service account by providing accessible email addresses. Returns an empty 204 response on success or a 400 with error details on failure. Requires emails (at least two).
- **Chorus integrations google emails connect** (Action). Connect a customer to the Google Email service account. Returns an empty response on success.
- **Chorus integrations google meets connect** (Action). Connect the customer to the Google Meet service account. Returns an empty response on success.
- **Chorus integrations microsoft teams connect** (Action). Connect to Microsoft Teams Messaging. Returns a 307 redirect to initiate the Microsoft Teams connection flow.
- **Chorus integrations microsoft teams postcalls connect** (Action). Connect the customer to the Microsoft Teams service account. Returns a 302 redirect on success.
- **Chorus integrations msteams authms connect** (Action). Connect to AuthMS for Microsoft Teams integration. Returns a 307 redirect to initiate the authentication flow.
- **Chorus integrations office 365 authms connect** (Action). Connect the user to Office365 using auth connectors. Returns a 302 redirect to the Office365 authentication flow.
- **Chorus integrations office 365 calendars connect** (Action). Connect the customer to the Office365 Calendar service account. Returns a 302 redirect on success to complete the OAuth connection flow.
- **Chorus integrations office 365 calendars verify** (Verify). Verify an Office 365 calendar email service account. Returns an empty 204 response on success. Requires emails (at least two accessible email addresses).
- **Chorus integrations office 365 emails connect** (Action). Connect the customer to the Office365 Email service account. Returns a 302 redirect on success.
- **Chorus integrations unies connect** (Action). Connect a customer to Unie CRM via OAuth2 login. Returns a 307 redirect to the Unie OAuth2 authorization page.
- **Chorus integrations webex authms connect** (Action). Connect to Webex AuthMS. Initiates an authentication flow and returns a 307 redirect on success.
- **Chorus integrations zoom authms connect** (Action). Connect to Zoom AuthMS. Initiates an authentication connection and returns a 307 redirect on success.
- **Create a Chorus login** (Create). Establish an authenticated session by providing user credentials. Requires email and password.
- **Get single Chorus media by ID** (Get). Download media file or metadata for a conversation. Returns video by default if both video and audio exist, otherwise returns audio. When Accept header is set to application/json, returns metadata with a download link. Required: id.
- **List all Chorus moments** (List). List all moments. Returns an array of moment objects including id, type, and attributes such as subject, duration, start_time, conversation, speaker, account, opportunity, and video_link.
- **Create a Chorus moment** (Create). Create a new moment. Returns the created moment object including id, subject, duration, start_time, speaker, user, and linked opportunity. Requires callid and moment_duration in the request body.
- **Update a Chorus moment by ID** (Update). Update a moment by id. Returns the updated moment object including attributes such as subject, note, url_string, start_time, duration, speaker, and conversation details. Required: id.
- **Delete a Chorus moment by ID** (Delete). Delete a moment by id. Returns an empty 204 response on success.
- **Create a Chorus pagerduty event** (Create). Send a PagerDuty webhook event for incoming CI. Returns an empty 202 response on success.
- **List all Chorus playlists** (List). List all playlists. Returns an array of playlist objects including id, name, description, owner, size, child_count, and path.
- **Create a Chorus playlist** (Create). Create a new playlist. Returns the created playlist object including id, name, description, owner, parent, path, and timestamps. Required: name.
- **Get single Chorus playlist by ID** (Get). Fetch a specific playlist by id. Returns the playlist object including name, description, owner, privacy status, size, child_count, and path.
- **Delete a Chorus playlist by ID** (Delete). Delete a playlist by id. Returns an empty 204 response on success.
- **Update a Chorus playlist by ID** (Update). Update (completely replace) a playlist by id. Returns the updated playlist object including name, description, owner, parent, path, size, and timestamps. Required: id.
- **Chorus playlists create moment** (Create). Create a new playlist moment. Requires callid, description, moment_duration, moment_time, and playlist in the request body.
- **Chorus playlists update moment** (Update). Partially update a playlist moment by id. Returns the updated moment including account, call_id, description, moment_duration, snippet_time, and recording details. Required: id.
- **Chorus reports export** (Export). Export the data of a report as a CSV file. Triggers an asynchronous export that uploads the CSV to S3 and emails a download link valid for 7 days. Returns a task object with id and status. Required: id.
- **List all Chorus sales qualification configurations** (List). List sales qualification framework configurations for the tenant. Returns an array of configurations each containing id, is_active status, and fields with display_name, order, mapping, and write_back settings.
- **Update a Chorus sales qualification configuration by ID** (Update). Update a sales qualification configuration by id. Accepts is_active status and an array of fields with display_name, order, mapping, and write_back settings. Returns an empty response on success. Required: id.
- **Create a Chorus sales qualification** (Create). Create a Sales Qualification Framework extraction from call transcripts, emails, and CRM data. Returns the analysis object including id, sqf_name, sqf_analysis fields, meeting_notes, and opportunity_id. Requires recording_id in the request body.
- **Get single Chorus sales qualification by ID** (Get). Get Sales Qualification Framework extraction data for a recording by id. Returns sqf_name, sqf_analysis fields with change tracking, meeting_notes, conversation_duration, and opportunity_id. Required: id (recording_id).
- **Chorus sales qualifications writeback CRM** (Action). Write back CRM fields based on a meeting. Submits field-level changes to a CRM object (e.g. Opportunity) and returns a 201 on success. Required: meeting_id, crm_changes, object_type, and opportunity_id in the request body.
- **Chorus saved searches reset** (Action). Reset the user's default saved search (view) for Recordings Views. Returns an empty 204 response on success. Required body: type.
- **Chorus saved searches set default** (Set). Set a saved search as the user's default. Returns the updated saved search object including id, name, search_type, user_default, and system_default. Required: id.
- **List all Chorus scorecards** (List). List all scorecards. Returns scorecard objects including id, engagement, scores, recipient, reviewer, initiative, and submitted timestamp.
- **Chorus scorecards export** (Export). Schedule an export of customer scorecards to a CSV file. Returns a task object with id and status that can be polled for completion.
- **Get single Chorus session by ID** (Get). Get the status of the current session. Returns session attributes including active flag, status, customer_id, person_id, and user_id.
- **Delete a Chorus session by ID** (Delete). Invalidate the current session. Returns an empty 204 response on success.
- **Create a Chorus smart playlist** (Create). Create a new smart playlist. Returns the created playlist object including id, name, description, owner, size, and path. Requires name and type in the request body.
- **Update a Chorus smart playlist by ID** (Update). Update (completely replace) a smart playlist by id. Returns the updated playlist object including attributes such as name, description, owner, size, child_count, and timestamps. Required: id.
- **List all Chorus teams** (List). List all teams. Returns an array of team objects including id, name, description, language, manager, users, and parent_team.
- **Get single Chorus team by ID** (Get). Fetch a specific team by id. Returns the team object including name, description, language, users, manager, parent_team, and default status.
- **Create a Chorus upload** (Create). Upload a conversation recording to Chorus. Supports 3GPP, AU, AVI, FLV, HLS, MKV, MP3, MP4, Ogg, WAV, and WebM formats. Requires the data file binary payload.
- **Get single Chorus users setting by ID** (Get). Get the current user's settings. Returns the user_settings object including notification preferences such as mobile_push.comments and mobile_push.mentions.
- **Create a Chorus video conference** (Create). Create a new video conference. Returns the created video conference object including id, provider, and type. Required: provider.
- **Update a Chorus video conference by ID** (Update). Partially update a video conference by its go_link id. Supports updating duration, start_time, and subject. Returns an empty response on success. Required: id.
- **Delete a Chorus video conference by ID** (Delete). Delete a video conference by id. Returns an empty 204 response on success.
