Connect your AI Agents to LaunchDarkly in minutes

Merge lets you securely connect your agents to LaunchDarkly and thousands of tools instantly

Available tools

list_experiments

List experiments in one environment with pagination and filters (flagKey, metricKey, status, archived). Use listprojectexperiments for every environment.

list_project_experiments

List experiments across every environment of a project with pagination and filters. Each item names its environmentKey for get_experiment.

get_experiment

Get one experiment with its current iteration, metrics and treatments. Use list_experiments for keys.

create_experiment

Create an experiment on a flag with metrics and treatments (not started). Start it with updateexperiment startIteration. Use listmetrics and get_flag for keys, variation IDs and versions.

update_experiment

Start, stop, restart, archive or rename an experiment with semantic patch instructions. Use list_experiments for keys.

get_experimentation_settings

Get a project's experimentation randomization units. Use list_projects for keys.

update_experimentation_settings

Replace a project's experimentation randomization units. Send the full list; read it first with getexperimentationsettings.

list_holdouts

List holdouts in one environment with pagination. Returns keys for get/update_holdout.

get_holdout

Get one holdout with its related experiments. Use list_holdouts for keys.

create_holdout

Create a holdout that keeps a percentage of traffic out of experiments, to measure their combined effect. Use list_metrics for metric keys.

update_holdout

End, rename or remove experiments from a holdout with semantic patch instructions. Use list_holdouts for holdout keys.

list_layers

List a project's experiment layers (mutually exclusive experiment groups).

create_layer

Create an experiment layer so experiments in it never share traffic. Reserve traffic for experiments with update_layer.

update_layer

Rename a layer or change experiment traffic reservations in it with semantic patch. Use list_layers for keys.

list_metrics

List a project's metrics with pagination, filters (query, tags, event kind, numeric) and sorting. Returns metric keys for experiments, holdouts and metric groups.

get_metric

Get one metric's definition. Use list_metrics for keys.

create_metric

Create a metric: custom (SDK track event), pageview or click (URL/selector), as conversion or numeric. Use it in createexperiment or createmetric_group.

update_metric

Update a metric with JSON Patch, e.g. '/name' or '/tags/-'. Use list_metrics for keys.

delete_metric

Delete a metric. Use list_metrics for keys.

list_metric_groups

List a project's metric groups (funnels and standard groups) with pagination and filters.

get_metric_group

Get one metric group with its metrics. Use listmetricgroups for keys.

create_metric_group

Create a metric group: an ordered funnel or a standard set of metrics. Use listmetrics for metric keys and listmembers for the maintainer ID.

update_metric_group

Update a metric group with JSON Patch, e.g. '/name' or '/metrics'. Use listmetricgroups.

delete_metric_group

Delete a metric group (its metrics remain). Use listmetricgroups for keys.

list_flags

List a project's feature flags with pagination, filters (query, tags, state, type, maintainer, status) and sorting. Lean by default (includedetails=true for full objects; summary=false with environmentkey adds targeting). Use listprojects for project keys; getflag for one flag's variations and rules.

get_flag

Get one flag with its variations (and their IDs) and per-environment targeting: on/off, rules, targets, fallthrough. Pass environmentkey to return one environment only. Use listflags to find keys.

create_flag

Create a feature flag in a project (boolean by default, or multivariate with variations). Created off in every environment unless isflagon. Use updateflag to change targeting. Use listprojects for project keys.

update_flag

Change a flag: turn on/off, add targets or rules, change rollout, rename, tag, archive. Send semantic-patch instructions (with environmentkey for targeting) or JSON patch. Use getflag for variation IDs and list_environments for keys.

delete_flag

Permanently delete a flag from every environment. SDKs then serve their fallback value. Prefer updateflag with an archiveFlag instruction to keep history. Use listflags to find keys.

copy_flag

Copy a flag's targeting from one environment to another (e.g. staging to production), optionally limited to some parts. Use list_environments for environment keys.

get_flag_status_across_envs

Get a flag's evaluation status (new, active, inactive, launched) and last-requested time in every environment. Use this to find stale flags. Use list_flags to find keys.

list_flag_statuses

List the evaluation status (new, active, inactive, launched) of every flag in one environment. Use list_environments to find environment keys.

get_flag_status

Get one flag's evaluation status and last-requested time in one environment. Use getflagstatusacrossenvs for every environment at once.

list_dependent_flags

List flags in any environment that use this flag as a prerequisite. Check before archiving or deleting a flag. Use list_flags to find keys.

list_dependent_flags_by_env

List flags in one environment that use this flag as a prerequisite. Use listdependentflags for every environment.

get_flag_expiring_targets

List the contexts scheduled to be removed from a flag's individual targets in one environment, with removal dates. Use updateflagexpiring_targets to change them.

update_flag_expiring_targets

Schedule, change or cancel the automatic removal of a context from a flag's targets. The context must already be targeted (see getflag). Variation IDs come from getflag.

get_migration_safety_issues

Check planned update_flag instructions on a migration flag for safety issues (e.g. skipped stages) before applying them. Read-only: nothing is changed.

list_flag_triggers

List a flag's triggers in one environment: webhook URLs that turn the flag on or off from monitoring tools. Returns trigger IDs for get/update/deleteflagtrigger.

get_flag_trigger

Get one flag trigger by ID. Use listflagtriggers to find trigger IDs.

create_flag_trigger

Create a flag trigger that turns the flag on or off when its URL is called (e.g. from Datadog or a generic webhook). Only this response (and updateflagtrigger with cycleTriggerUrl) returns the secret trigger URL. Use listflags and listenvironments for keys.

update_flag_trigger

Enable, disable, regenerate the URL of, or change the action of a flag trigger. Use listflagtriggers to find trigger IDs.

delete_flag_trigger

Delete a flag trigger; its URL stops working. Use listflagtriggers to find IDs.

list_flag_followers

List members following a flag in one environment (they get notified of changes). Use addflagfollower / removeflagfollower to change followers.

list_followers_by_env

List every flag in an environment that has followers, with its followers.

add_flag_follower

Make a member follow a flag in one environment so they are notified of changes. Use listmembers for member IDs. Undo with removeflag_follower.

remove_flag_follower

Stop a member following a flag in one environment. Use listflagfollowers for IDs.

list_scheduled_changes

List pending scheduled changes for a flag in one environment, with execution dates and instructions. Returns IDs for get/update/deletescheduledchange.

get_scheduled_change

Get one scheduled flag change by ID. Use listscheduledchanges to find IDs.

create_scheduled_change

Schedule flag instructions (e.g. turnFlagOn, a rollout change) to apply in one environment at a future time. Same instruction kinds as updateflag. Use listflags and list_environments for keys.

update_scheduled_change

Change a scheduled flag change's execution date or replace its instructions. Use listscheduledchanges for IDs.

delete_scheduled_change

Cancel a scheduled flag change. Use listscheduledchanges to find IDs.

list_workflows

List custom workflows (staged rollouts, approval flows) on a flag in one environment, filterable by status. Returns workflow IDs for getworkflow and deleteworkflow.

get_workflow

Get one flag workflow with its stages and execution state. Use list_workflows for IDs.

create_workflow

Create a staged workflow on a flag in one environment (e.g. turn on, wait 2 days, roll to 100%), from stages. Use list_members for maintainer IDs.

delete_workflow

Delete a flag workflow, stopping any stages not yet run. Use list_workflows for IDs.

list_approval_requests

List approval requests across the account with pagination and filters (status, reviewStatus, resourceKind, requestor, assigned reviewers). Returns IDs for get/apply/reviewapprovalrequest.

get_approval_request

Get one approval request with its instructions and reviews. Use listapprovalrequests.

create_approval_request

Request approval for a flag-wide variation change, or a segment or AI config change. Reviewers act with reviewapprovalrequest; apply with applyapprovalrequest. Flag targeting changes need approvals set on the environment.

delete_approval_request

Withdraw (delete) an approval request. Use listapprovalrequests to find IDs.

apply_approval_request

Apply an approved approval request's change. Use listapprovalrequests to find IDs.

review_approval_request

Approve, decline or comment on an approval request. You cannot review your own request unless the environment allows it. Use listapprovalrequests to find IDs.

list_audit_log_entries

List audit log entries (who changed what, when), newest first, filtered by time window, text, member or resource specifier. Page back by passing pageinfo.nextcursor as 'before'.

search_audit_log_entries

Search audit log entries with policy-style resource/action statements (e.g. every updateOn on any flag), plus time, text and member filters. Use listauditlog_entries for simple listing.

count_audit_log_entries

Count audit log entries matching resource/action statements in a time window, split into buckets. Use to chart change frequency without reading every entry.

get_audit_log_entry

Get one audit log entry with the full before/after diff of the change. Use listauditlog_entries to find IDs.

list_webhooks

List the account's webhooks (signing secrets are not returned).

get_webhook

Get one webhook by ID. Use list_webhooks to find IDs.

create_webhook

Create a webhook that POSTs LaunchDarkly change events to a URL, optionally limited by policy statements. The signing secret is never returned by this connector.

update_webhook

Update a webhook with JSON Patch, e.g. disable it with [{"op":"replace","path":"/on","value":false}]. Use list_webhooks to find IDs.

delete_webhook

Delete a webhook. Use list_webhooks to find IDs.

list_tags

List tags in use across the account, filterable by resource type and prefix. Use the tags in flag, segment and metric filters.

get_caller_identity

Show which account, member and token the current credential belongs to. Use to confirm whose access an agent is acting with.

list_code_ref_repositories

List repositories scanned by LaunchDarkly code references, optionally with branches and flag references on the default branch, filtered by project or flag key.

get_code_ref_repository

Get one code-references repository with its branches. Use listcoderef_repositories.

list_code_ref_branches

List the scanned branches of a code-references repository.

get_code_ref_branch

Get one branch's flag references (file, line hunks), optionally for one project or flag. Use to find where a flag is used in code before removing it.

list_code_ref_statistics

List the projects that have code references, with links to their statistics.

get_code_ref_statistics

Get per-flag code reference counts in a project, optionally for one flag. Flags with no references are candidates for cleanup.

list_code_ref_extinctions

List extinction events: when a flag's last code reference was removed from a branch. Filter by repo, branch, project, flag or time.

list_members

List account members with pagination, filters (name/email query, role, team) and sorting. Returns member IDs used as maintainers, followers, reviewers and team members.

get_member

Get one account member by ID with role, custom roles and teams. Use list_members for IDs.

invite_members

Invite people to the LaunchDarkly account by email with a base role or custom roles, optionally into teams. Use listcustomroles and list_teams for keys.

update_member

Change a member's role or custom roles with JSON Patch, e.g. [{"op":"replace","path":"/role","value":"writer"}]. Use list_members for IDs.

delete_member

Remove a member from the account; they lose access immediately. Use list_members for IDs.

add_member_to_teams

Add one member to one or more teams. To remove, use updateteam with a removeMembers instruction. Use listteams for team keys.

list_teams

List teams with pagination, name/key query filter and sorting. Returns team keys used as flag maintainers and approval reviewers.

get_team

Get one team, optionally with members, roles and maintainers. Use list_teams for keys.

create_team

Create a team, optionally with members and custom roles. Use listmembers for member IDs and listcustom_roles for role keys.

update_team

Change a team with semantic patch: add/remove members or custom roles, rename, describe. Use listmembers for IDs and listcustom_roles for keys.

delete_team

Delete a team. Members stay in the account. Use list_teams to find keys.

list_team_maintainers

List the members who maintain a team, with pagination. Use list_teams for keys.

list_team_roles

List the custom roles granted to a team, with pagination. Use list_teams for keys.

list_custom_roles

List custom roles with their policies, with pagination. Returns role keys for invitemembers, createteam and get/update/deletecustomrole.

get_custom_role

Get one custom role and its policy. Use listcustomroles to find keys.

create_custom_role

Create a custom role from policy statements (allow/deny actions on resource specifiers like 'proj/:env/staging:flag/'). Assign it with invitemembers or updatemember.

update_custom_role

Update a custom role's name, description or policy with JSON Patch. Use getcustomrole to read the current policy.

delete_custom_role

Delete a custom role; members and teams holding it lose its permissions. Use listcustomroles to find keys.

list_projects

List projects in the LaunchDarkly account with offset pagination, filtering by name/key query or tags, and sorting. Start here: every flag, environment and segment tool takes a project_key from this list.

get_project

Get one project by key, optionally with its environments. Use list_projects to find keys.

create_project

Create a project. Without 'environments', LaunchDarkly adds Test and Production environments. Returns the project key that every project-scoped tool takes.

update_project

Update a project with JSON Patch, e.g. [{"op":"replace","path":"/name","value":"New"}] or add a tag at '/tags/-'. Use get_project to read current values.

delete_project

Permanently delete a project with all its environments, flags and segments. Cannot be undone. Use list_projects to find keys.

get_flag_defaults

Get a project's defaults for new flags: tags, temporary, boolean variation names and client-side availability. Use list_projects to find keys.

update_flag_defaults

Update a project's defaults for new flags with JSON Patch, e.g. [{"op":"replace","path":"/temporary","value":false}]. Read them first with getflagdefaults.

list_environments

List a project's environments with pagination, query/tag filters and sorting. Returns the environment_key that flag status, targeting, segment and experiment tools take. SDK keys are not returned.

get_environment

Get one environment's settings (TTL, secure mode, approval settings). SDK and mobile keys are not returned. Use list_environments to find keys.

create_environment

Create an environment in a project, optionally copying flag settings from another environment. Use list_projects for the project key. Returns the new environment key.

update_environment

Update an environment with JSON Patch, e.g. [{"op":"replace","path":"/requireComments","value":true}] or '/approvalSettings/required'. Use get_environment to read current values.

delete_environment

Permanently delete an environment and its flag targeting. Cannot be undone. Use list_environments to find keys.

list_context_kinds

List a project's context kinds (e.g. user, organization, device). Use the kind keys in targeting instructions, getcontexts and evaluatecontext_flags.

upsert_context_kind

Create a context kind, or update its name/description/visibility if the key exists. Use listcontextkinds to see existing kinds.

list_segments

List segments in one environment with pagination, filters (query, tags, keys, unbounded) and sorting. Returns segment keys for the other segment tools.

get_segment

Get one segment with its rules and included/excluded targets. Use list_segments for keys.

create_segment

Create an empty segment in one environment. Add targets and rules afterwards with updatesegment. Use listenvironments for environment keys.

update_segment

Change a segment: add/remove included or excluded targets, add rules, rename, tag. Send semantic-patch instructions or JSON patch. Use get_segment for rule IDs.

delete_segment

Permanently delete a segment. Flags whose rules reference it stop matching it. Use list_segments to find keys.

get_segment_membership

Check whether a context key is explicitly included or excluded in a big (list-based) segment. For rule-based segments use evaluatecontextsegments.

get_segment_expiring_targets

List contexts scheduled to be removed from a segment's targets, with removal dates. Change them with updatesegmentexpiring_targets.

update_segment_expiring_targets

Schedule, change or cancel the automatic removal of a context from a segment's included or excluded targets. The context must already be targeted.

evaluate_context_segments

List the segments a given context belongs to in one environment, evaluating segment rules. Pass the context object, e.g. {"kind":"user","key":"user-1"}.

evaluate_context_flags

Evaluate every flag for a given context in one environment and return the served variation and reason per flag. Use to debug why a user sees a value.

list_context_attributes

List context attribute names recently seen in an environment, per context kind. Use the names in targeting rule clauses and listcontextattribute_values.

list_context_attribute_values

List recently seen values of one context attribute in an environment, e.g. every 'country'. Use listcontextattributes to find attribute names.

search_contexts

Search contexts (users, orgs, devices) seen in an environment in the last 30 days, with a filter expression and cursor pagination. Returns kinds and keys for get_contexts and targeting.

get_contexts

Get the context(s) with a given kind and key in an environment, with their latest attributes. Use search_contexts to find kinds and keys.

set_context_flag_setting

Serve a specific variation value of a flag to one context in an environment (an individual target), or pass setting=null to remove it. Use get_flag for variation values.

validate_credential

Validate the LaunchDarkly access token and instance by reading the caller identity. Run first when tools fail with authentication errors.

list_views

List a project's views (named collections of flags, segments and AI configs) with pagination, filter and sort. Returns view keys for the other view tools.

get_view

Get one view's details. Use listviewlinked_resources for its contents.

create_view

Create a view in a project. Add flags or segments to it with linkviewresources.

update_view

Update a view's name, description, maintainer or tags. Use list_views for keys.

delete_view

Delete a view. Linked flags and segments are not deleted. Use list_views for keys.

link_view_resources

Add flags, segments or AI configs to a view by key, segment identifier or filter. Undo with unlinkviewresources.

unlink_view_resources

Remove flags, segments or AI configs from a view by key, identifier or filter.

list_view_linked_resources

List the flags, segments or AI configs linked to a view, with pagination and search.

list_resource_views

List the views a flag, segment or AI config belongs to. Segments need environment_id.

list_ai_configs

List a project's AI configs (prompt + model configurations served like flags) with pagination, filter and sort. Returns config keys for the other AI config tools.

get_ai_config

Get one AI config with its variations. Use listaiconfigs for keys.

create_ai_config

Create an AI config in completion, agent or judge mode, optionally with a first variation. Use listmodelconfigs for model keys.

update_ai_config

Update an AI config's name, description, tags, maintainer or default variation. Use listaiconfigs for config keys and getaiconfig for variation keys.

delete_ai_config

Delete an AI config and its variations. Use listaiconfigs for keys.

create_ai_config_variation

Add a variation (messages or instructions plus model) to an AI config. Serve it with updateaiconfigtargeting. Use listmodel_configs for model keys.

get_ai_config_variation

Get the versions of one AI config variation. Use getaiconfig for variation keys.

update_ai_config_variation

Update an AI config variation's name, messages, instructions, model or state (archive). Each update creates a new variation version.

delete_ai_config_variation

Delete an AI config variation. Use getaiconfig for variation keys.

get_ai_config_targeting

Get an AI config's targeting in every environment: which variation is served by default, rules and targets, with variation IDs for updateaiconfig_targeting.

update_ai_config_targeting

Change which AI config variation is served in an environment (default, rules, targets) with semantic patch. Use getaiconfig_targeting for variation IDs.

list_model_configs

List model configurations usable in AI config variations, filtered by provider or text and paged. Returns model config keys such as 'OpenAI.gpt-4.1'.

get_model_config

Get one model configuration by key. Use listmodelconfigs for keys.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's LaunchDarkly  MCP server

FAQs on using Merge's LaunchDarkly  MCP server

Explore other MCP servers built and managed by Merge

unify
Unify
unily
Unily
vercel
Vercel
vestaboard
Vestaboard
visualping
VisualPing
warp
Warp
warp_dev
Warp (warp.dev)
weather
Weather
webflow
Webflow
whatsapp
WhatsApp Business
whoop
WHOOP
wikipedia
Wikipedia
wix
Wix
wordpress
WordPress
workday
Workday
x
X
xero
Xero
yelp
Yelp
you_com
You.com
youtrack
YouTrack
youtube
YouTube
zendesk
Zendesk
zendesk_sell
Zendesk Sell
zoho_books
Zoho Books

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now