# How to connect LaunchDarkly to Hermes Agent (paste one key, 248 tools)

> Connect LaunchDarkly to Hermes with ClawLink: paste your LaunchDarkly key once and 248 tools work from chat. No MCP server to run, nothing stored on your machine.

Web version: https://claw-link.dev/hermes/launch-darkly

Most guides for giving Hermes Agent LaunchDarkly 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 LaunchDarkly setup: pair once in the browser and your always-on Hermes agent can act on LaunchDarkly 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 LaunchDarkly.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect LaunchDarkly** — 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 launch-darkly  # connect LaunchDarkly (browser OAuth)
npx -y @useclawlink/cli actions launch-darkly  # list available actions
npx -y @useclawlink/cli run launch-darkly <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 LaunchDarkly in the [ClawLink dashboard](https://claw-link.dev/dashboard) — paste your LaunchDarkly API key once.

Verify the connection by asking Hermes:

> Pull the last 50 audit log entries with launch_darkly_get_audit_log_entries and summarise what changed in the last week, who changed it, and which flags are involved.

### 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 LaunchDarkly is connected in the dashboard, that agent calls the same 248 LaunchDarkly 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).

## LaunchDarkly MCP for Hermes

Looking for a LaunchDarkly MCP server for Hermes Agent? ClawLink connects LaunchDarkly to Hermes Agent and exposes 248 LaunchDarkly 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 LaunchDarkly integration](https://claw-link.dev/openclaw/launch-darkly) works the same way.

The honest version of the headline claim matters more on LaunchDarkly than most providers, because LaunchDarkly has its own hosted MCP server with OAuth, and the search engines now teach it as the default answer to "without API keys". So here is the distinction this page is built on: LaunchDarkly's own AI tooling, AgentControl and Agent Skills, needs API keys, and Google currently answers our keyword with a three-key lecture about that. A hosted connector like this one is a different layer: it holds the API key server-side so you never create, scope, or rotate one, and it exposes 248 LaunchDarkly tools to Hermes from chat with zero config. The key exists somewhere, it just is not on your machine and it is not your job. And where LaunchDarkly's hosted MCP server still needs an MCP-compatible client plus an `mcp_servers` config block, this flow is a plugin pair and a browser approval.

## What the Hermes Agent LaunchDarkly integration can do

248 LaunchDarkly 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 248.

### 30 of 248 LaunchDarkly tools for Hermes

| Tool | What it does |
|---|---|
| **Add member to teams** `launch_darkly_add_member_to_teams` | Add a LaunchDarkly member to one or more teams |
| **Apply approval request** `launch_darkly_apply_approval_request` | Apply an approved approval request in LaunchDarkly |
| **Apply approval request for flag** `launch_darkly_apply_approval_request_for_flag` | Apply an approved approval request for a feature flag in LaunchDarkly |
| **Copy feature flag** `launch_darkly_copy_feature_flag` | Copy a feature flag's configuration from one environment to another within the same project |
| **Create migration safety issues** `launch_darkly_create_migration_safety_issues` | Check migration safety issues for a feature flag patch |
| **Evaluate context instance** `launch_darkly_evaluate_context_instance` | Evaluate flags for a context instance to determine expected flag variations |
| **Generate trust policy** `launch_darkly_generate_trust_policy` | Generate an AWS trust policy for Data Export destinations |
| **Get all holdouts** `launch_darkly_get_all_holdouts` | Retrieve all holdouts for a specific project and environment |
| **Get all integration configurations** `launch_darkly_get_all_integration_configurations` | Retrieve all integration configurations for a specific integration key |
| **Get all release pipelines** `launch_darkly_get_all_release_pipelines` | Retrieve all release pipelines for a project |
| **Get all webhooks** `launch_darkly_get_all_webhooks` | Retrieve all webhooks configured in the LaunchDarkly account |
| **Get announcements public** `launch_darkly_get_announcements_public` | Retrieve public announcements from LaunchDarkly |
| **Get application versions** `launch_darkly_get_application_versions` | Retrieve all versions for a specific application in LaunchDarkly |
| **Get applications** `launch_darkly_get_applications` | Retrieve a list of applications in LaunchDarkly |
| **Get approval for flag** `launch_darkly_get_approval_for_flag` | Get a single approval request for a feature flag in LaunchDarkly |
| **Get approval request** `launch_darkly_get_approval_request` | Get a specific approval request by ID from LaunchDarkly |
| **Get approval request settings** `launch_darkly_get_approval_request_settings` | Retrieve approval request settings for a project |
| **Get approval requests** `launch_darkly_get_approval_requests` | Retrieve all approval requests from LaunchDarkly |
| **Get approvals for flag** `launch_darkly_get_approvals_for_flag` | Retrieve all approval requests for a specific feature flag in an environment |
| **Get audit log entries** `launch_darkly_get_audit_log_entries` | Get a list of all audit log entries |
| **Get audit log entry** `launch_darkly_get_audit_log_entry` | Retrieve a single audit log entry by ID |
| **Get big segment export** `launch_darkly_get_big_segment_export` | Retrieve a specific big segment export by its ID |
| **Get big segment import** `launch_darkly_get_big_segment_import` | Retrieve the status and details of a big segment import by its ID |
| **Get big segment store integration** `launch_darkly_get_big_segment_store_integration` | Retrieve a specific persistent store integration for big segments by its ID |
| **Get big segment store integrations** `launch_darkly_get_big_segment_store_integrations` | Retrieve all persistent store integrations for big segments |
| **Get branch** `launch_darkly_get_branch` | Retrieve branch information from a LaunchDarkly code reference repository |
| **Get caller identity** `launch_darkly_get_caller_identity` | Retrieve basic information about the identity used to authenticate API calls |
| **Get context attribute names** `launch_darkly_get_context_attribute_names` | Retrieve context attribute names for a project and environment |
| **Get context attribute values** `launch_darkly_get_context_attribute_values` | Retrieve unique values for a specific context attribute within a project environment |
| **Get context instances** `launch_darkly_get_context_instances` | Get context instances for a specific context ID within a project and environment |

## Example prompts

**Review what changed**

> Pull the last 50 audit log entries with launch_darkly_get_audit_log_entries and summarise what changed in the last week, who changed it, and which flags are involved.

**Evaluate a context**

> Use launch_darkly_evaluate_context_instance for context \<id> in project \<project> environment \<env> and tell me which flag variations it resolves to and why.

**Check pending approvals**

> List the approval requests with launch_darkly_get_approval_requests and tell me what is waiting, who it is waiting on, and which flags would change if approved.

**Audit release pipelines**

> Pull the release pipelines with launch_darkly_get_all_release_pipelines and tell me which flags are in each pipeline stage and whether any are stuck in one stage.

## How the LaunchDarkly tools behave

Details that decide whether a LaunchDarkly prompt is a fast answer or a permissions wall.

- **Project and environment are part of most addresses.** Flags, contexts, approvals, and segments live in a project and environment pair, and omitting them is the most common way to get a wrong or empty result.
- **Evaluate is separate from change.** `launch_darkly_evaluate_context_instance` resolves variations without changing anything; flag changes in this toolset run through approval requests and scheduled changes, which is LaunchDarkly's own review shape.
- **The audit log is the safety trail.** `launch_darkly_get_audit_log_entries` records every mutation with its actor, which makes it the tool to pair with any agent-driven flag change.
- **Contexts, not users.** LaunchDarkly evaluates against context instances with attributes; `launch_darkly_get_context_attribute_names` and `launch_darkly_get_context_attribute_values` are how an agent learns what it can filter on.
- **Big segments and approvals have their own surfaces.** Segments have import and export tools, and approval requests have per-flag variants, so "what is in review" and "what is in a segment" are their own tool shapes.
- **Identity is checkable.** `launch_darkly_get_caller_identity` returns the identity behind the API calls, the cheapest first check when a 401 or 403 appears.

## 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 LaunchDarkly working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Credential handling** | Collect, validate, store, and rotate the LaunchDarkly API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected LaunchDarkly 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 LaunchDarkly. | 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 LaunchDarkly actions to the runtime in a format your agent can reliably use. | 248 tools for LaunchDarkly are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes LaunchDarkly 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 LaunchDarkly in the browser, and the 248 tools above work from chat. There is no SDK and no config file, and the LaunchDarkly 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 LaunchDarkly
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 LaunchDarkly 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 LaunchDarkly tools
LaunchDarkly 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 LaunchDarkly 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.

### LaunchDarkly 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.

### LaunchDarkly returns 401 invalid token while the account shows as connected
The engine-taught causes are token mechanics: an Authorization header with the wrong format, a token deleted or reset in the dashboard, an SDK key pasted where a personal or service access token belongs. On a hosted connection there is no header and no token file, so those mechanics do not exist here. The causes that do apply are the ones ChatGPT p3 lands on: a rotated or revoked credential and a stale cached one, both of which show as 401 even though the connection looks healthy. The fix is the one the engines also teach, disconnect and reconnect from the ClawLink dashboard, which re-runs the OAuth exchange and issues a fresh credential. If some calls work and others 401, you are looking at permission rather than authentication, see the 403 card.

Ask the agent to diagnose it:

```text
Call launch_darkly_get_caller_identity and quote exactly what it returns, including the status code. Do not retry the failing tools until we have that result.
```

### LaunchDarkly returns 403 or insufficient permissions on some calls while others work
The engines teach role policies and writer privileges for this error, and they are the right first place to look: LaunchDarkly projects and environments carry role-based permissions, custom roles can restrict what a member can change, and a member with read-only access on an environment gets 403 on any write there. The connected account's access is the ceiling, so check the member's role in the LaunchDarkly dashboard before anything else. The hosted-agent causes come after: the connected workspace or project is not the one the prompt assumes, and placeholder ids, a project or environment id like example-id from documentation, fail as permission errors because the object belongs to a different scope.

Ask the agent to diagnose it:

```text
Call launch_darkly_get_audit_log_entries and launch_darkly_get_context_instances, the cheapest reads, and tell me which succeeds. Then quote the exact error from the failed call and which ids it involved.
```

### LaunchDarkly starts returning 429 or the agent stalls partway through a review
LaunchDarkly rate-limits API traffic per token and returns 429 with X-Ratelimit-* headers describing the remaining allowance, and calls on this connection run under the connected account's limits. An agent walking every flag, then every context, then every approval request, one call at a time, is exactly the traffic shape that meets the limit. The response is to shape the work, one project or environment at a time, and to have the agent read the limit headers and report where it stands rather than retrying blindly. A full-account audit is more reliable staged across turns than as one sweep.

Ask the agent to diagnose it:

```text
Tell me how many LaunchDarkly calls you have made in the last minute and what you were enumerating. Quote any X-Ratelimit headers from the last response. Do not call LaunchDarkly again until I reply.
```

### A LaunchDarkly tool is not found, or no LaunchDarkly tools appear
If Hermes shows no LaunchDarkly tools, the connection or pairing is incomplete: confirm the plugin was installed with `--enable`, that both `hermes clawlink begin` and `hermes clawlink finish` ran, and that LaunchDarkly shows as connected in the dashboard. If most tools work and a single name fails, the name is wrong, and the error lists the closest real ones. There is also the first-call timing case unique to this setup: schemas load on demand, so the opening LaunchDarkly call in a fresh session can arrive before the catalog and needs one retry. What does not apply is the standard advice for this symptom, which assumes a locally declared MCP server in a client config file.

Ask the agent to diagnose it:

```text
List the LaunchDarkly tools you actually have access to. If there are none, say so plainly. If there are, tell me which one reads audit log entries and use that exact name.
```

### API key setup works but results look incomplete
Double-check that the API key for LaunchDarkly 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 LaunchDarkly integration?
Yes. ClawLink is the fastest way to connect Hermes to LaunchDarkly: link your LaunchDarkly account once in the browser and Hermes Agent can call the LaunchDarkly API through 248 ready-made tools — no custom code or token handling.

### How do I connect LaunchDarkly 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 LaunchDarkly in the dashboard and Hermes can use it from the next message — no config files, and the LaunchDarkly key you paste is stored server-side instead of in your environment.

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

### Why use ClawLink instead of wiring LaunchDarkly 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 LaunchDarkly working from chat.

### Don't I still need a LaunchDarkly API key?
The engines currently answer this query with LaunchDarkly's own AI components, which genuinely do need keys: LD_API_KEY, LAUNCHDARKLY_SDK_KEY, and a model provider key are all real requirements for AgentControl and Agent Skills. None of that applies to this connection. The tool calls on this page run through an API key held server-side by ClawLink, created at setup and revoked on disconnect, so the answer is no key for you to manage. One clarification worth keeping straight: the model provider key, the one for the LLM behind your agent, is unrelated to this connection and remains your responsibility, exactly as it would be for any agent setup.

### How is this different from LaunchDarkly's own hosted MCP server?
LaunchDarkly ships a hosted MCP server at mcp.launchdarkly.com with an OAuth login and no manual token, and it is the answer ChatGPT gives for the no-token shape. It is a good answer for people who already run an MCP-compatible client: you still add an `mcp_servers` block to a client config and keep that client running. This page is the zero-config version of the same idea: the plugin pairing is the entire client-side story, the 248 tools appear in chat, and LaunchDarkly sits beside your other connected accounts with one place to revoke. The underlying API is the same, so choose on how much you want to run, not on features.

### What can the agent do in LaunchDarkly?
Read and change the flag operations surface: feature flags and their approval requests and scheduled changes, contexts and their attributes and instances, big segments and their imports and exports, audit log entries, webhooks, release pipelines, applications, integrations, and members and teams. The reads dominate and answer the daily questions: what flags changed this week, who approved them, which contexts see which variations, what is in each release pipeline. Flag changes in this toolset run through LaunchDarkly's own workflow: approval requests, scheduled changes, and flag configuration copies, which is the correct shape for a system where flag changes are reviewed.

### What does the audit log give me that the UI does not?
The audit log is the answer to "what changed and who approved it" without opening LaunchDarkly: `launch_darkly_get_audit_log_entries` reads the full trail, and it is the tool to pair with any agent-driven flag change, because the entry exists for every mutation regardless of who made it. For a review-minded workflow, asking the agent to confirm the audit log entry after a change is a cheap second pair of eyes.

### Hermes paired but still can't use LaunchDarkly
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

- [Connect GitHub](https://claw-link.dev/hermes/github) — Manage repositories, issues, pull requests, and workflows
- [Connect PagerDuty](https://claw-link.dev/hermes/pagerduty) — Manage incidents, on-call schedules, and services
- [Hermes SafetyCulture integration](https://claw-link.dev/hermes/safetyculture) — SafetyCulture (formerly iAuditor) is a workplace operations platform that enables teams to conduct digital inspections, manage audits, track issues, schedule tasks, and maintain compliance through mobile and web applications.
