# HeyGen MCP connector

The HeyGen connector brings your avatars, avatar looks, voices, brand kits, and video agents into Claude, ChatGPT, Cursor, and other MCP clients, so your team can create and manage HeyGen video content in plain language.

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

## Facts

| | |
| --- | --- |
| Application | HeyGen |
| Category | Video |
| AI tools | 70 |
| 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. 70 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once HeyGen is connected

- List every HeyGen avatar look our brand kit uses.
- Which video agents ran this week, and for which team?
- Draft a message for the onboarding HeyGen video agent.

## Connect HeyGen in Elaichi

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

1. Open Connections, choose Add connection, and pick HeyGen.
2. Optionally set Share with, then press Connect.
3. Paste a HeyGen API key. One person generates a token in HeyGen 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 HeyGen tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect HeyGen 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 HeyGen 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 HeyGen 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 HeyGen 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 HeyGen 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 HeyGen through Elaichi

### Pick the right avatar for a campaign

Marketing. Ask which HeyGen avatars and looks are available, compare them against the brand kit, and choose one for the next product video without opening the library.

### Turn a follow-up into a spoken clip

Sales. Paste the recap you wrote after a call and have it read in a HeyGen voice you already use, ready to attach to the prospect email.

### Keep training avatars consistent

Learning and development. Update an avatar look for a new course, check the brand glossary so product names are said the same way, and keep the whole catalog tidy in one place.

### Draft help videos from ticket answers

Support. Take a tested answer from the help desk, generate the narration in a HeyGen voice, and hand it to the team that assembles the final video.

### Run a video agent for announcements

Internal communications. Create a HeyGen video agent for a leadership update, send it the message to deliver, and stop it when the announcement is done.

### Check voices before a regional launch

Localization. List the HeyGen voices available for a language, hear a sample of the script in each, and confirm terms match the brand glossary for that market.

## Frequently asked questions

### How do I connect HeyGen to Claude?

Connect HeyGen in Elaichi first, then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. HeyGen connects with an API key, so the HeyGen step is copying a key from your HeyGen account settings and pasting it into Elaichi. There is no OAuth application to register and no client ID or secret to generate.

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

Yes. Once HeyGen 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 HeyGen once and every client you use picks it up.

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

An agent can list your HeyGen avatars, looks, voices, brand kits, and brand glossaries, create or update an avatar look, generate speech from a script in one of your voices, and create, message, or stop a HeyGen video agent. Because HeyGen exposes many actions, short concrete asks such as "list our avatars" or "read this script in the Sarah voice" work better than long paragraphs.

### Does connecting HeyGen give the AI everything in my HeyGen workspace?

No. Every request runs under the HeyGen API key of the person who connected it, so the agent can only see the avatars, voices, and brand assets that account can already see. Elaichi can narrow that further by blocking specific actions, and it can never widen access beyond what HeyGen itself allows that account.

### Can my team share one HeyGen connection?

Yes. One person connects HeyGen in Elaichi and shares the connection with a team, and nobody else ever handles the HeyGen API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person behind every avatar change or video agent message.

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

Yes. In Elaichi you can block individual HeyGen actions, for example deleting an avatar or a look, while leaving listing and speech generation available. A blocked action is never shown to Claude, ChatGPT, or any other client at all, so no prompt can reach it.

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

Offboarding a person in Elaichi ends their access to HeyGen through every client at once. If they had shared a HeyGen connection with a team, it keeps working for everyone else on that team. Disconnecting HeyGen once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client in one step.

## All 70 HeyGen tools

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

- **List all HeyGen video agents** (List). List HeyGen video agents available in your account. Returns video agent records including id, name, and created_at.
- **Create a HeyGen video agent** (Create). Create a new HeyGen video agent session. Returns session_id, url, and access_token required for connecting to the streaming session.
- **Get single HeyGen video agent by ID** (Get). Get a single HeyGen video agent by id. Returns the video agent record including id, name, and created_at.
- **HeyGen video agents send message** (Send). Send a message to an active HeyGen video agent session identified by session_id. Returns task_id, session_id, and status confirming the message was accepted.
- **HeyGen video agents stop** (Stop). Stop an active HeyGen video agent session. Returns session_id and status confirming the session was stopped. Required: session_id.
- **List all HeyGen video agents styles** (List). List available HeyGen video agent styles. Returns: id.
- **List all HeyGen brand glossaries** (List). List HeyGen brand glossaries. Returns a collection of brand glossary records. Returns: id.
- **List all HeyGen brand kits** (List). List all brand kits available in HeyGen. Returns a collection of brand kit objects; no source documentation was available to enumerate additional fields beyond id.
- **List all HeyGen avatars** (List). List avatars available in heygen. Returns: id.
- **Create a HeyGen avatar** (Create). Create a new avatar in heygen. Returns: id.
- **Get single HeyGen avatar by ID** (Get). Get a single heygen avatar by id. Returns: id. Required: id.
- **Delete a HeyGen avatar by ID** (Delete). Delete a heygen avatar by id. Returns an empty 204 response on success. Required: id.
- **List all HeyGen avatars looks** (List). List all HeyGen avatar looks available in the account. Returns: id.
- **Get single HeyGen avatars look by ID** (Get). Get a single HeyGen avatar look by id.
- **HeyGen avatars looks partial update** (Update). Partially update a HeyGen avatar look by look_id.
- **Delete a HeyGen avatars look by ID** (Delete). Delete a HeyGen avatar look by id. Returns an empty 204 response on success. Required: id.
- **Create a HeyGen avatar group consent** (Create). Create a consent record for a HeyGen avatar group. Returns: group_id. Required: group_id.
- **Create a HeyGen audio text to speech** (Create). Create a text-to-speech audio file in HeyGen using the v1 API. Returns the generated audio including audio_url. Required: text, voice_id.
- **List all HeyGen audio voices** (List). List all available audio voices in HeyGen. Returns: voice_id, name.
- **List all HeyGen audio sounds** (List). List audio sounds available in HeyGen. Returns: id.
- **List all HeyGen voices** (List). List all available HeyGen voices. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support.
- **Create a HeyGen voice** (Create). Create a new HeyGen voice. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support.
- **Get single HeyGen voice by ID** (Get). Get a single HeyGen voice by id. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support. Required: id.
- **Create a HeyGen voices speech** (Create). Create speech audio in HeyGen by submitting a voice synthesis request. Returns audio output; specific response fields are not enumerable from the available source documentation.
- **Create a HeyGen voices clone** (Create). Create a cloned voice in HeyGen by submitting a voice clone request. Returns the newly created voice clone object including its voice_id.
- **List all HeyGen videos** (List). List HeyGen videos in the current account. Returns a collection of video records including video_id, status, video_title, video_url, thumbnail_url, duration, and created_at.
- **Create a HeyGen video** (Create). Create a new HeyGen AI-generated video. Video generation is asynchronous — poll the get method to check progress. Returns video_id of the newly queued video. Required: video_inputs.
- **Get single HeyGen video by ID** (Get). Get a single HeyGen video by id. Returns video_id, status, video_title, video_url, thumbnail_url, duration, gif_url, created_at, and caption_url. Required: id.
- **Delete a HeyGen video by ID** (Delete). Delete a HeyGen video by id. Returns an empty 204 response on success. Required: id.
- **List all HeyGen video agent videos** (List). List videos associated with a specific HeyGen video agent session. Returns video records including id, status, video_url, and created_at. Required: session_id.
- **Get single HeyGen video agent resource by ID** (Get). Get a specific HeyGen video agent resource by id. Returns: id. Required: session_id, id.
- **Create a HeyGen video translate** (Create). Create a HeyGen video translation job that translates a source video into a specified target language. Returns: video_translate_id. Required: video_url, output_language.
- **List all HeyGen video translate target languages** (List). List all supported target languages available for HeyGen video translation. Returns: language, name. No required parameters.
- **List all HeyGen video translate captions** (List). List heygen video translate captions available in the account. Returns a collection of caption records. Returns: id.
- **List all HeyGen video translations** (List). List all video translation jobs in HeyGen. Returns: video_translation_id, status, output_language, url, title, created_at.
- **Create a HeyGen video translation** (Create). Create a new video translation job in HeyGen. Returns: video_translation_id, status, output_language, url, title, created_at. Required: video_url, output_language.
- **Get single HeyGen video translation by ID** (Get). Get a single HeyGen video translation job by id. Returns: video_translation_id, status, output_language, url, title, created_at. Required: id.
- **HeyGen video translations partial update** (Update). Update an existing HeyGen video translation job by video_translation_id. Returns: video_translation_id, status, output_language, url, title, created_at.
- **Delete a HeyGen video translation by ID** (Delete). Delete a HeyGen video translation job by id. Returns an empty 204 response on success. Required: id.
- **List all HeyGen video translations languages** (List). List the supported languages available for HeyGen video translation. Returns: language_code, language.
- **Create a HeyGen video translations proofread** (Create). Create a HeyGen video translation proofreading job. Returns: id.
- **Get single HeyGen video translations proofread by ID** (Get). Get a HeyGen video translation proofreading job by id. Returns: id. Required: id.
- **List all HeyGen video translation proofread srts** (List). List SRT subtitle content for a HeyGen video translation proofread. Returns: proofread_id, srt. Required: proofread_id.
- **Update a HeyGen video translation proofread srt by ID** (Update). Update the SRT subtitle content for a HeyGen video translation proofread. Returns: proofread_id, srt. Required: proofread_id.
- **Create a HeyGen video translation proofread generate** (Create). Trigger the generation process for a HeyGen video translation proofread, initiating content generation for the specified proofread job. Required: proofread_id.
- **List all HeyGen lipsyncs** (List). List heygen lipsync jobs. Returns: id, status, created_at.
- **Create a HeyGen lipsync** (Create). Create a new heygen lipsync job. Returns: id, status, created_at.
- **Get single HeyGen lipsync by ID** (Get). Get a single heygen lipsync job by id. Returns: id, status, created_at.
- **HeyGen lipsyncs partial update** (Update). Update a heygen lipsync job by id. Returns: id, status, created_at.
- **Delete a HeyGen lipsync by ID** (Delete). Delete a heygen lipsync job by id. Returns an empty 204 response on success.
- **List all HeyGen hyperframes renders** (List). List HeyGen hyperframe renders. Returns render records including their id.
- **Create a HeyGen hyperframes render** (Create). Create a new HeyGen hyperframe render. Returns the created render record including its id.
- **Get single HeyGen hyperframes render by ID** (Get). Get a single HeyGen hyperframe render by id. Returns the render record including its id. Required: id.
- **Delete a HeyGen hyperframes render by ID** (Delete). Delete a HeyGen hyperframe render by id. Returns an empty 204 response on success. Required: id.
- **List all HeyGen workflows** (List). List HeyGen workflows. Returns workflow objects including id and workflow-specific attributes; consult the HeyGen API docs for the full field-level breakdown of each record.
- **Create a HeyGen workflows execution** (Create). Create a new HeyGen workflow execution to trigger a workflow run. Returns: id.
- **Get single HeyGen workflows execution by ID** (Get). Get a HeyGen workflow execution by id to retrieve its current details. Returns: id. Required: id.
- **Create a HeyGen workflows graph execution** (Create). Create a new HeyGen workflow graph execution. No parameter or response-field documentation was found in the available source; the full request body and response shape are not enumerable from current source — consult the HeyGen API reference for field-level details.
- **List all HeyGen webhooks event types** (List). List all available webhook event types in HeyGen. Returns: event_type, description.
- **List all HeyGen webhooks endpoints** (List). List registered HeyGen webhook endpoints. Returns: endpoint_id, url, events, status, and created_at for each endpoint. The secret field is always null in list responses.
- **Create a HeyGen webhooks endpoint** (Create). Register an HTTPS URL as a HeyGen webhook endpoint to receive event notifications. Returns the created endpoint including endpoint_id, url, events, status, created_at, and a one-time signing secret. Store the secret securely — it is not shown again after creation. Required: url, events.
- **HeyGen webhooks endpoints partial update** (Update). Update an existing HeyGen webhook endpoint by id. Returns the updated endpoint including endpoint_id, url, events, status, and created_at. Required: id.
- **Delete a HeyGen webhooks endpoint by ID** (Delete). Permanently delete a HeyGen webhook endpoint by id, stopping all event delivery to that URL. This action cannot be undone. Returns an empty response on success. Required: id.
- **Create a HeyGen webhook endpoint rotate secret** (Create). Rotate the signing secret for a HeyGen webhook endpoint, immediately invalidating the old one. Returns: endpoint_id, secret, url, events, status, and created_at. Store the new secret securely — it will not be shown again. Required: endpoint_id.
- **List all HeyGen webhooks events** (List). List HeyGen webhook events from the paginated delivery history, optionally filtered by event type or entity. Returns: event_type, entity_id.
- **Create a HeyGen asset** (Create). Upload a file to HeyGen as a reusable asset. Returns: asset_id, url, file_type, created_at, owner. Required: file. Max 32 MB; supported types are png, jpeg, mp4, webm, mp3, wav, and pdf.
- **Get single HeyGen asset by ID** (Get). Get metadata for a HeyGen asset by id. Returns: asset_id, owner, created_at, file_type, url.
- **Delete a HeyGen asset by ID** (Delete). Permanently delete a HeyGen asset by id. Returns: asset_id.
- **HeyGen assets complete** (Complete). Finalize a direct-to-S3 upload for a HeyGen asset by id. Call after the upload PUT returns 200; repeated calls are idempotent and return the same finalized asset. Returns: asset_id, url, file_type, created_at, owner.
- **Create a HeyGen assets direct upload** (Create). Begin a direct-to-S3 asset upload in HeyGen. After calling this endpoint, PUT the file bytes directly to the returned upload_url, then finalize the upload by calling POST /v3/assets/{asset_id}/complete. Returns: asset_id, upload_url.
