# How to connect ElevenLabs to Hermes Agent (one API key, no MCP server)

> Connect ElevenLabs to Hermes Agent with ClawLink: paste your ElevenLabs API key once and 155 tools work from chat. No MCP server, no env file, nothing running on your machine.

Web version: https://claw-link.dev/hermes/elevenlabs

Most guides for giving Hermes Agent ElevenLabs access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical ElevenLabs setup: pair once in the browser and your always-on Hermes agent can act on ElevenLabs for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to ElevenLabs.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect ElevenLabs** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect elevenlabs  # connect ElevenLabs (browser OAuth)
npx -y @useclawlink/cli actions elevenlabs  # list available actions
npx -y @useclawlink/cli run elevenlabs <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect ElevenLabs in the [ClawLink dashboard](https://claw-link.dev/dashboard) — paste your ElevenLabs API key once.

Verify the connection by asking Hermes:

> Read the attached file, then call elevenlabs_get_voices and pick a voice_id, then call elevenlabs_text_to_speech with that voice_id and the file's text (max 10,000 characters). Return the audio.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once ElevenLabs is connected in the dashboard, that agent calls the same 155 ElevenLabs tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## ElevenLabs MCP for Hermes

Looking for a ElevenLabs MCP server for Hermes Agent? ClawLink connects ElevenLabs to Hermes Agent and exposes 155 ElevenLabs tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw ElevenLabs integration](https://claw-link.dev/openclaw/elevenlabs) works the same way.

Hermes Agent already has a first-party ElevenLabs TTS path: set `tts.provider: elevenlabs` in `~/.hermes/.env` and install `hermes-agent[tts-premium]`, and Hermes can speak. What that path does not give you is the account: voices, pronunciation dictionaries, dubbing, history, conversational agents. Either way you need an ElevenLabs API key, because ElevenLabs authenticates with keys (the `xi-api-key` header), not OAuth; even its own MCP server takes `ELEVENLABS_API_KEY`. Create one at elevenlabs.io/app/settings/api-keys (it starts with `sk_` and is shown once), paste it into ClawLink, and the 155 tools on this page become callable from Hermes chat. The key stays out of your env files and out of any server you run.

## What the Hermes Agent ElevenLabs integration can do

155 ElevenLabs tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 155.

### 30 of 155 ElevenLabs tools for Hermes

| Tool | What it does |
|---|---|
| **Create conversational agent** `elevenlabs_create_conversational_agent` | Create a conversational AI agent |
| **Download history items** `elevenlabs_download_history_items` | Download audio from history |
| **Generate a random voice** `elevenlabs_generate_a_random_voice` | Generate a unique random voice |
| **Get convai agents summaries** `elevenlabs_get_convai_agents_summaries` | List conversational AI agents |
| **Get dubbing project metadata** `elevenlabs_get_dubbing_project_metadata` | Get dubbing project metadata |
| **Get history item by ID** `elevenlabs_get_history_item_by_id` | Get a history audio item |
| **Get models** `elevenlabs_get_models` | List available models |
| **Get project by ID** `elevenlabs_get_project_by_id` | Get a specific project |
| **Get projects** `elevenlabs_get_projects` | List ElevenLabs projects |
| **Get user subscription info** `elevenlabs_get_user_subscription_info` | Get subscription usage and limits |
| **Get voice** `elevenlabs_get_voice` | Get details for a specific voice |
| **Get voices** `elevenlabs_get_voices` | List available ElevenLabs voices |
| **List dubs** `elevenlabs_list_dubs` | List dubbing projects |
| **Speech to speech** `elevenlabs_speech_to_speech` | Transform audio from one voice to another |
| **Text to speech** `elevenlabs_text_to_speech` | Convert text to speech using ElevenLabs voices |
| **Calculate convai agent llm usage** `elevenlabs_calculate_convai_agent_llm_usage` | Calculate expected number of LLM tokens needed for a conversational AI agent |
| **Calculate convai llm usage** `elevenlabs_calculate_convai_llm_usage` | Calculate expected LLM usage costs for conversational AI agents |
| **Create music plan** `elevenlabs_create_music_plan` | Generate a music composition plan from a text prompt using ElevenLabs Music API |
| **Create similar voices** `elevenlabs_create_similar_voices` | Returns a list of shared voices similar to the provided audio sample |
| **Get a profile page** `elevenlabs_get_a_profile_page` | Retrieves the profile information for the authenticated ElevenLabs user (identified by API key) |
| **Get agent details** `elevenlabs_get_agent_details` | Retrieve available Conversational AI agents and outbound-capable Twilio phone numbers |
| **Get agent link** `elevenlabs_get_agent_link` | Get the current shareable link for a Conversational AI agent |
| **Get audio from history item** `elevenlabs_get_audio_from_history_item` | Retrieves the audio content for a specific history item from ElevenLabs, using a |
| **Get audio from sample** `elevenlabs_get_audio_from_sample` | Retrieves the audio for a given `sample_id` that must belong to the specified `voice_id` |
| **Get audio native settings** `elevenlabs_get_audio_native_settings` | Retrieve player settings for a specific Audio Native project |
| **Get chapter by ID** `elevenlabs_get_chapter_by_id` | Fetches comprehensive details for a specific chapter within a given project, including its |
| **Get chapter snapshots** `elevenlabs_get_chapter_snapshots` | Retrieves all saved version snapshots for a specific chapter within a given project, enabling |
| **Get chapters** `elevenlabs_get_chapters` | Retrieves a list of all chapters, their details, and conversion status for a project, useful |
| **Get convai agent** `elevenlabs_get_convai_agent` | Retrieve the complete configuration for a specific Conversational AI agent by ID |
| **Get convai agent knowledge base size** `elevenlabs_get_convai_agent_knowledge_base_size` | Retrieve the number of pages in a conversational AI agent's knowledge base |

## Example prompts

**Turn a file into speech**

> Read the attached file, then call elevenlabs_get_voices and pick a voice_id, then call elevenlabs_text_to_speech with that voice_id and the file's text (max 10,000 characters). Return the audio.

**Check plan and credit usage**

> Call elevenlabs_get_user_subscription_info and tell me the current plan, character/credit usage, and the next reset date. If a paid feature like instant voice cloning is missing from the plan, say so.

**Add a pronunciation dictionary**

> Call elevenlabs_add_a_pronunciation_dictionary with the .pls lexicon file I attached, a name, and workspace access. If the key lacks the pronunciation_dictionaries_write permission, tell me exactly which permission is missing.

**Create a conversational agent**

> Create a conversational AI agent in ElevenLabs with elevenlabs_create_conversational_agent. The conversation_config argument is required; ask me for the agent's prompt and LLM choice before calling, and confirm the rest of the config before you finish.

## What to tell the agent when it calls ElevenLabs

Verified against the live ElevenLabs tool schemas (backend.composio.dev/api/v3.1/tools/\, 2026-08-02) and real prod call history. These are the traps that actually show up:

- `elevenlabs_text_to_speech` requires `voice_id` and `text`. `voice_id` is the 20-character id from `elevenlabs_get_voices`, never the voice name; passing "Rachel" fails with `voice_not_found`. `model_id` defaults to `eleven_monolingual_v1`; `eleven_turbo_v2_5` or a v3 model is the low-latency choice. `output_format` defaults to `mp3_44100_128`. Text is capped at 10,000 characters (30,000 on Flash/Turbo v2 models).
- Call `elevenlabs_get_voices` first when a speech request fails: it returns real `voice_id` values and confirms the key can read the voice library at all.
- `elevenlabs_add_a_pronunciation_dictionary` takes a lexicon file object (.pls XML). It fails with a permission error when the key lacks `pronunciation_dictionaries_write`, and with a 400 when the file is malformed.
- `elevenlabs_create_conversational_agent` requires the `conversation_config` object (agent prompt, LLM, and language settings); there is no valid call without it.
- Character credits are metered on the user's own account, because it is the user's key. The free tier is 10,000 credits per month; plan-gated calls fail with `payment_required` or free-tier strings, and those are plan problems, not connection problems.
- Tool names are literal: there is no `elevenlabs_list_voices` or `elevenlabs_list_models`; the tools are `elevenlabs_get_voices` and `elevenlabs_get_models`. Agents that guess `list_*` get a tool-not-found error.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want ElevenLabs working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Credential handling** | Collect, validate, store, and rotate the ElevenLabs API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected ElevenLabs account becomes available to the agent without you building credential management. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for ElevenLabs. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right ElevenLabs actions to the runtime in a format your agent can reliably use. | 155 tools for ElevenLabs are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes ElevenLabs to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect ElevenLabs in the browser, and the 155 tools above work from chat. There is no SDK and no config file, and the ElevenLabs key you paste at setup is stored server-side rather than kept in your environment. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use ElevenLabs
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect ElevenLabs from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling ElevenLabs tools
ElevenLabs tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every ElevenLabs call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### ElevenLabs returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### "The API key you used is missing the permission pronunciation_dictionaries_write to execute this operation"
An ElevenLabs key-permission error, not a ClawLink failure: the connected key is valid but its scoped permissions do not cover the endpoint the tool called. The permission name in the message tells you exactly which capability is missing (pronunciation_dictionaries_write, voices_read, models_read, and so on). Fix it in ElevenLabs: edit the key's permissions at elevenlabs.io/app/settings/api-keys to include the required scope, or create a key without scope restriction for the workflow. Then retry the same tool call from chat.

Ask the agent to diagnose it:

```text
Retry the call, but first tell me which permission name the error names, and check my key's scopes at elevenlabs.io/app/settings/api-keys before you send anything.
```

### Connection 1214 needs to be reconnected before elevenlabs_text_to_speech can run.
The ElevenLabs connection in ClawLink has been invalidated, usually because the API key was rotated, deleted, or expired (user keys can be created with an expiry of 15 minutes to 30 days). Reconnect ElevenLabs from the dashboard with the current key, then retry the same tool call in a fresh chat. Reconnecting is a one-time paste; no Hermes config changes are needed. This is the most common ElevenLabs failure we see in prod (11 reauth errors at time of writing).

Ask the agent to diagnose it:

```text
Reconnect ElevenLabs from the dashboard with the current key, then retry the same call in a fresh chat.
```

### A voice with voice_id 'Spanda' was not found.
ElevenLabs addresses voices by a 20-character voice_id, not by name; passing a display name like "Spanda" or "Rachel" as the voice fails with `voice_not_found`. Ask the agent to call `elevenlabs_get_voices` first and use a voice_id from its results in the text-to-speech call. The voice_id is stable; the display name is not an argument.

Ask the agent to diagnose it:

```text
Call elevenlabs_get_voices, pick a real voice_id from the results, and retry the text-to-speech call with it.
```

### Free users cannot use library voices via the API. Please upgrade your subscription to use this feature
An ElevenLabs plan gate, not a ClawLink failure. Library voices require a paid plan; the free tier is 10,000 credits per month and does not include them (elevenlabs.io/pricing). The tool will keep failing until the ElevenLabs plan includes the capability; no reconnect or key change fixes it. The same pattern appears for other plan-gated features such as instant voice cloning.

Ask the agent to diagnose it:

```text
Do not retry. Check which ElevenLabs features my plan covers at elevenlabs.io/pricing, and tell me what I would need to upgrade for this call to work.
```

### Model is not available on the free tier. The eleven_monolingual_v1 and eleven_flash_v2_5 models are free to use
The agent picked a model the account's plan does not serve. ElevenLabs gates models by plan; the free tier serves `eleven_monolingual_v1` and `eleven_flash_v2_5`. Ask the agent to call `elevenlabs_get_user_subscription_info` first and pick a model the account's plan actually includes, then retry.

Ask the agent to diagnose it:

```text
Call elevenlabs_get_user_subscription_info, tell me which models my plan serves, and retry with one of them.
```

### Tool 'elevenlabs_list_voices' not found. Did you mean: 'elevenlabs_get_voices'...
There is no `elevenlabs_list_voices` or `elevenlabs_list_models`; the tools are `elevenlabs_get_voices` and `elevenlabs_get_models`. Agents that guess `list_*` get a tool-not-found error with a "Did you mean" line. Ask the agent to read that line and retry with the suggested tool, or list the ElevenLabs catalog first and pick from it.

Ask the agent to diagnose it:

```text
List the available ElevenLabs tools, show me the real names, and retry with the correct one.
```

### API key setup works but results look incomplete
Double-check that the API key for ElevenLabs has the right scopes or account access. A valid key can still be too limited for some reads or writes.

### Is there a Hermes Agent ElevenLabs integration?
Yes. ClawLink is the fastest way to connect Hermes to ElevenLabs: link your ElevenLabs account once in the browser and Hermes Agent can call the ElevenLabs API through 155 ready-made tools — no custom code or token handling.

### How do I connect ElevenLabs to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect ElevenLabs in the dashboard and Hermes can use it from the next message — no config files, and the ElevenLabs key you paste is stored server-side instead of in your environment.

### How long does it take to connect ElevenLabs to Hermes Agent?
About two minutes. Sign in, click Connect next to ElevenLabs in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring ElevenLabs up myself?
The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want ElevenLabs working from chat.

### Does ElevenLabs support OAuth?
No. ElevenLabs authenticates every API request with an API key sent as the `xi-api-key` header; there is no OAuth flow for their API. Every route to ElevenLabs has the same prerequisite: a key from elevenlabs.io/app/settings/api-keys. ClawLink just removes the parts a key normally drags in: the env file, the config block, and the server you would otherwise keep running to expose the tools to Hermes.

### How is this different from Hermes' built-in ElevenLabs TTS?
Hermes' built-in TTS is a voice output path: `tts.provider: elevenlabs` in `~/.hermes/.env`, optionally with `hermes-agent[tts-premium]` installed, makes Hermes speak with an ElevenLabs voice. This connection is the whole account instead: 155 tools covering text to speech, voice library management, instant voice cloning, pronunciation dictionaries, dubbing, history, and conversational agents, callable from chat. Both use your ElevenLabs key and spend your credits. If all you want is Hermes speaking aloud, the built-in path is the smaller setup; if you want the agent to manage the ElevenLabs account itself, this is the route.

### Can I use ElevenLabs without an API key at all?
ElevenLabs offers keyless modes, and they cover a different product. Public Agents and signed URLs let end users talk to a conversational agent without holding a key, and their own agent platform works that way. None of that exposes the account-level API the tools on this page call: text to speech, voices, dubbing, and history are all key-authenticated. For a Hermes agent acting on an ElevenLabs account, the key is required, and the differentiator is where it lives (ClawLink, not your env file).

### Is it safe to connect ElevenLabs to Hermes Agent?
The key is a secret: anyone holding it can spend your ElevenLabs credits and use your voices. ClawLink stores the key server-side rather than leaving it in a config file on your machine. Keep the blast radius small: create a dedicated key at elevenlabs.io/app/settings/api-keys, give it only the API permissions the agent needs (scoped keys are supported), set a credit cap on it so an unexpected bill is bounded, and rotate or delete it anytime without touching Hermes.

### Hermes paired but still can't use ElevenLabs
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Hermes DataRobot integration](https://claw-link.dev/hermes/datarobot) — DataRobot is a machine learning platform that automates model building, deployment, and monitoring, enabling organizations to derive predictive insights from large datasets.
- [Chatbotkit tools](https://claw-link.dev/hermes/chatbotkit) — ChatBotKit is a platform that enables developers to build and manage AI-powered chatbots, offering comprehensive APIs and SDKs for seamless integration into applications.
- [Hermes Griptape integration](https://claw-link.dev/hermes/griptape) — Griptape is a comprehensive platform offering tools and frameworks for building, deploying, and scaling generative AI applications.
