- Brand
- LaunchDarkly
- Category
- Developer Tools
- Primary Subcategory
- Product Analytics & Experimentation
Integration details
Description
Manage LaunchDarkly feature flags, AgentControl Configs (AI agent prompts/models), experiments, guarded and automated rollouts, segments, metrics, dashboards, alerts, and observability data (logs, traces, errors, sessions) directly from chat. Create and target flags, run and analyze experiments, configure AI agent prompts and tools, build dashboards and alerts, and investigate production issues without leaving the conversation.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Product Analytics & Experimentation
- Secondary Subcategories
- None listed
- Brand
- LaunchDarkly
- Access
- Account required
- First tracked
- 2026-09-24
- Tool count
- 174
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Agent DiscoverabilityChatGPT Discoverability ScoreUpdated dailyThe first to track the ChatGPT, Claude, Muse, Grok & Google ecosystems, with the largest database on the core platforms. Tracked daily since .
0/100
Invisible#21of 38
in Product Analytics & Experimentation- Picked
- 0.0/100
- Found
- 0.0/100
- Positioned
- –/100
Category leaderboard
Product Analytics & Experimentation
- 1P
PostHog61
- 2M
Mixpanel54
- 3A
Amplitude41
- 4A
Amplitude EU41
- 21L
LaunchDarkly0
Get alerts for LaunchDarkly
Get updates when LaunchDarkly’s Discoverability Score or category rank changes.
Competing in ChatGPT Product Analytics & Experimentation
View Category174 tools agents can invoke
Apply an already-approved AgentControl Config approval request. This executes the changes that were approved by reviewers. Only works on requests with reviewStatus 'approved'. Does NOT approve requests: that must be done by a human reviewer. Equivalent to apply-approval-request but scoped semantically to AgentControl Configs.
Apply an already-approved flag or segment approval request. This executes the changes that were approved by reviewers. Pass flagKey for a flag or segmentKey for a segment, never both. Only works on requests with reviewStatus 'approved'. Does NOT approve requests: that must be done by a human reviewer. Use list-approval-requests to get the request id.
Archive a feature flag (reversible). This is a soft-delete that can be undone. Recommended as the first step before permanent deletion. Always run check-removal-readiness before archiving.
Check whether a feature flag is fully rolled out to a single deterministic variation across all traffic-bearing environments. This detects the important stale case that inactive detection misses: a flag at 100% rollout is still evaluated on every request (never looks inactive), but its code branch is dead and it is prime for removal. ALGORITHM: For each environment, checks if serving is deterministic (targeting off → offVariation, or targeting on with no rules/targets/prerequisites/rollout → simple fallthrough variation). Traffic-bearing environments are those with a recent lastRequested timestamp. A flag is fully rolled out when all traffic-bearing envs converge on the same variation AND a stability gate is met (at least one env is 'launched' or the flag is older than stabilityDays). Returns isFullyRolledOut, consensusVariation (value + name when fully rolled out), per-environment results, and blockers explaining any failure to be fully rolled out.
Detailed safety check before removing a feature flag. Checks dependencies, code references, active targeting, expiring targets, and cross-environment status. Returns a readiness verdict: 'safe' (proceed), 'caution' (review warnings), or 'blocked' (must resolve blockers first). Always run this before archive-flag or delete-flag. Also returns recommendedValue: the actual variation value to hardcode at call sites when the flag is safe to remove (e.g. true, false, 'blue', 11). Computed from the flag's current deterministic configuration. null when serving is non-deterministic (active rules, rollout splits, individual targets, or prerequisites). For cross-environment consensus on the recommended value, use check-flag-rollout-complete.
Copy an existing variation. Use update-agentcontrol-config-variation to change it in place. Requires projectKey, configKey, sourceVariationKey, new key, and name. Get sourceVariationKey (key e.g. v1-gpt4o, not _id, or name) from get-agentcontrol-config. Omitted values copy the source. parameters merges freeform JSON keys (e.g. {"temperature":0.7}). {} keeps source parameters. custom replaces its freeform object (e.g. {"endpoint":"https://model.example.com"}). {} clears custom. region: 'us-east-1'. '' clears it. outputFormat accepts JSON Schema, e.g. {"type":"object"}. modelConfigKey: list-agentcontrol-model-configs key (e.g. OpenAI.gpt-4o), not provider model ID. Changing it selects latest unless modelConfigVersion pins an existing version (e.g. 3). outputFormat, skills, and modelConfigVersion need account features. Disabled fields may be ignored or rejected. Agent mode uses instructions. Completion mode uses messages. Returns {configKey,source,created}. Next: update-agentcontrol-config-rollout with variationKey=created.key. Version 1; source unchanged.
Copy a flag's targeting configuration from one environment to another. Common use: promote from staging to production. Optionally select which aspects to copy: targeting, rules, offVariation, prerequisites, on state. If the target environment requires approval, the response includes requiresApproval: true and an approvalUrl; follow the approvalUrl to submit the copy request for review.
Create a new agent graph in a project. An agent graph defines a directed graph of AgentControl Configs for multi-agent workflows. Provide a rootConfigKey and edges to define the graph structure, or create the graph with just metadata and add edges later via update-agent-graph. If rootConfigKey or edges are provided, both must be present.
Create an agent skill from SKILL.md content. Provide a unique key, a display name, and the verbatim markdown. The skill starts at version 1. Attach it to a variation with create-agentcontrol-config-variation or update-agentcontrol-config-variation by passing skills: [{key, version}].
Create an AgentControl Config shell in a project. Call create-agentcontrol-config-variation next to add a model and prompts. mode: agent (variations use instructions), completion (messages), or judge (messages; scores other configs' outputs). evaluationMetricKey (format: $ld:ai:judge:<suffix>) is required for judge mode and rejected for other modes. viewKeys links the config to views (Enterprise). isInverted (judge mode only): true means a lower judge score is better, false means a higher score is better. Required for custom judges; built-in judge keys can omit it. MAINTAINER (optional): send maintainerTeamKey (team key, not name) or maintainerId (member ID, example: 507f1f77bcf86cd799439011), not both. Both returns a 400 ("only one of maintainerId or maintainerTeamKey is allowed"). Get both values from get-member-self or find-members. If you omit both, the API can set the caller as the maintainer. The response has `maintainer` {name, email} or `maintainerTeam` {key, name}; the other is null.
Create an approval request for an AgentControl Config change. Use this for variation-level edits (model, prompts, parameters, tools via instructions like updateAIConfigVariation, createAIConfigVariation, deleteAIConfigVariation) as well as targeting changes (see update-agentcontrol-config-targeting, update-agentcontrol-config-rollout, update-agentcontrol-config-targets). Omit env (or pass '*') for variation-level changes — they are project-scoped, not env-scoped. Pass a specific env key for targeting changes. The request is reviewed by approvers before taking effect. Requires at least one reviewer: notifyMemberIds and/or notifyTeamKeys. If the user named a person, resolve them with find-members and pass the returned id. If they did not name anyone, ask who should review before calling this tool. Does NOT approve the request: a human reviewer must do that. Once approved, use apply-approval-request to execute the change.
Create a variation in an existing config from create-agentcontrol-config. Requires projectKey, configKey, key, name, modelConfigKey (e.g. OpenAI.gpt-4o), and modelName (e.g. gpt-4o). Get modelConfigKey from list-agentcontrol-model-configs, not the provider model ID. Agent mode requires instructions. Completion mode requires messages. parameters and custom are freeform JSON, e.g. {"temperature":0.7} and {"endpoint":"https://model.example.com"}. region example: 'us-east-1'. outputFormat accepts JSON Schema, e.g. {"type":"object"}. modelConfigVersion pins an existing modelConfigKey version (positive integer, e.g. 3), not a variation version. Omission selects latest. custom defaults to {}. outputFormat, skills, and modelConfigVersion need account features. Disabled fields may be ignored or rejected. Create tools with create-ai-tool, find skills with list-agent-skills, and attach {key,version} entries. comment records the change reason. Verify with get-agentcontrol-config. variation.version is 1, or 2 if tools/skills/judges attached.
Create a custom AI model config for a model that is not in the global catalog. Call list-agentcontrol-model-configs first, and use a global model if one exists. Required: key, name, id. key uses letters, numbers, ., _, and - (for example gpt-image-2-20260916-uzw1la), not a global key. id is the provider's model ID (for example gpt-image-2). provider matches the key's prefix, if any (for example OpenAI). Costs are USD per token (for example 0.000005). params and customParams are freeform JSON objects (for example {"temperature": 0.7}). Set maintainerId or maintainerTeamKey, not both. Next, pass key as modelConfigKey and id as modelName to create-agentcontrol-config-variation.
Create a new AI tool definition in a project. The schema should be a raw JSON Schema object with type, properties, and required fields (e.g. {"type": "object", "properties": {...}}). Do NOT use the OpenAI function calling wrapper format. customParameters is optional application-level metadata that is not sent to the LLM. After creation, attach the tool to a variation using update-agentcontrol-config-variation with the returned version.
Create a new observability alert that fires when a metric crosses a threshold. IMPORTANT: Before creating a new alert: 1. Use list-alerts to check if a similar alert already exists 2. Use get-keys to discover available data dimensions for the product type 3. Use query-aggregations to verify data exists and pick a sensible threshold INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - name (required): Name for the alert (e.g., "High API Error Rate") - productType (required): Data source - one of Logs, Traces, Errors, Sessions, Metrics, Events - functionType (required): Aggregator to monitor - one of Count, CountDistinct, CountDistinctKey, Min, Avg, P50, P90, P95, P99, Max, Sum - functionColumn (optional): Field to aggregate. Omit for Count; field name for others (e.g., "duration" for P90 latency) - query (optional): Filter query string using search syntax (e.g., "service_name=api level=error") - groupBy (optional): Array of dimension keys to alert per-group (e.g., ["service_name"] fires separately per service) - thresholdValue (optional): The threshold to compare against. Required for Constant threshold alerts. - thresholdWindow (optional, default 3600): Evaluation window in seconds (e.g., 300 = look at the last 5 minutes) - thresholdCooldown (optional): Seconds to wait before re-notifying while still alerting - thresholdType (optional, default "Constant"): "Constant" compares against thresholdValue; "Anomaly" detects deviations automatically - thresholdCondition (optional, default "Above"): "Above", "Below", or "Outside" (Anomaly only) - messageContent (optional): Custom text included in alert notifications - destinations (optional): Array of notification destinations, each with: - destinationType: One of Slack, Discord, MicrosoftTeams, Webhook, Email - typeId: Destination identifier (Slack channel ID, email address, webhook URL) - typeName: Human-readable name (Slack channel name, email address) - autoInvestigationEnabled (optional): when true, each firing starts an automatic AI investigation and posts the diagnosis to the alert's destinations - investigationCooldownSeconds (optional, default 86400): minimum gap between automatic investigations. Keep at or above thresholdCooldown so a chatty alert doesn't re-investigate the same condition - investigationPermissionMode (optional, default "read"): "read" investigates and reports; "read-write" additionally lets the investigation open a PR - investigationRepositories (optional): repos the investigation may read. Without these it cannot correlate a firing against a recent deploy - investigationPrompt (optional): extra standing instructions prepended to each investigation RETURNS: - alert_created: Boolean indicating success - alert_id: ID of the created alert - alert_url: URL to view the alert Example - alert when error count in the last 5 minutes exceeds 100: {"projectKey": "default", "name": "High Error Volume", "productType": "Errors", "functionType": "Count", "thresholdValue": 100, "thresholdWindow": 300} Example - P90 API latency above 2s, notified in Slack: {"projectKey": "default", "name": "Slow API", "productType": "Traces", "functionType": "P90", "functionColumn": "duration", "query": "service_name=api", "thresholdValue": 2000, "thresholdWindow": 300, "destinations": [{"destinationType": "Slack", "typeId": "C0123456789", "typeName": "#alerts"}]}
Create an approval request for a flag or segment change in an environment that requires approvals. Pass flagKey for a flag or segmentKey for a segment, never both. Requires at least one reviewer: notifyMemberIds and/or notifyTeamKeys. If the user named a person, resolve them with find-members and pass the returned id. If they did not name anyone, ask who should review before calling this tool. Provide the same semantic patch instructions you would use for a direct change. Segment instructions are the kinds update-segment-rules and update-segment-targets accept. To add or remove values on an existing rule clause, use addValuesToClause or removeValuesFromClause with ruleId, clauseId (the `_id` values from get-flag) and values, or updateClause with ruleId, clauseId and clause; never removeClauses + addClauses to change a clause's values. The request will be reviewed by approvers before taking effect. Does NOT approve the request: that must be done by a human reviewer.
Record an automated rollout config in LaunchDarkly for a feature-flagged change. Use this only for AutomatedRollout requests. The guarding feature flag must already exist in LaunchDarkly. Works for both an existing PR the user points you at and a PR you just filed. PER-ENVIRONMENT RELEASE TYPES: - "override" (default): Pins the exact rollout inline via the optional `override` object. With no `override` object it is an immediate release — the flag turns on once it begins evaluating, the same trigger as guarded and progressive releases, just with no stages to ramp through. - "policy": Waits until the PR is merged and the flag begins evaluating, then resolves the environment's configured release policy and performs the appropriate release according to that policy. Do not pass an `override` object with "policy". The response includes `warnings` if a policy environment has no matching policy or the winning policy is missing stages/metrics; render those warnings in generated comments and do not state the release as a clean policy rollout. Do not add tags automatically to make a policy match. APPLICATION GATE: - Inspect the repository's LaunchDarkly SDK configuration for stable SDK application ids already reported by affected runtime applications. When present, pass those exact values in requiredApplicationKeys so unrelated evaluations from tests, jobs, or other applications do not trigger the release. If no application id is already instrumented, omit this field; do not add application metadata solely to configure the rollout. The rollout API calls this value an application key; it must exactly match the SDK-reported id and is not a LaunchDarkly application object id. - Never guess an id. For a change spanning multiple instrumented runtime applications, include every relevant application id; release waits until all listed applications have evaluated the flag. OVERRIDE METHODS (the `override.releaseMethod` field, only for releaseType "override"): - "immediate": Turn the flag on. Omit stages/metrics/rollback. Equivalent to omitting `override`. - "progressive": Ramp the true variation through `stages`. Requires a non-empty `stages` array. - "guarded": Measured rollout through `stages`, gated on metrics, with optional auto-rollback. Requires `stages` plus at least one of `metricKeys` / `metricGroupKeys`. STAGES: Each stage is { allocation, durationMillis }. allocation is basis points (100000 = 100%), must be positive and strictly increasing across stages; guarded caps every stage (including the last) at 50000 (50%) — a guarded rollout auto-promotes to 100% after its last monitored stage completes without regression, so don't add a 100000 stage yourself. Progressive has no such cap and typically ends with an explicit 100000 stage to reach full rollout. durationMillis is each stage's monitoring window in milliseconds and must be > 0 for every stage without exception, including the last one in the array — a zero or omitted duration there is rejected, even though nothing ramps after it. INPUTS: - projectKey (required): LaunchDarkly project key (e.g., "default"). - flagKey (required): Key of the guarding feature flag (must already exist). - requiredApplicationKeys (optional): Existing SDK-reported application ids (called application keys by the rollout API) that must evaluate the flag before release. Omit when the repository has no application id instrumentation. - executionMode (optional): "parallel" (legacy behavior) starts environments independently. "sequential" releases environments in array order. - environments (required): Ordered per-environment rollout plan. Array of { environmentKey, releaseType?, override?, triggerType?, waitBeforeReleaseMillis? } objects. `triggerType` is "flag_eval" (the default) to start after the flag is observed evaluating, or "webhook" to wait for a CI/CD deploy signal. `waitBeforeReleaseMillis` is a non-negative delay after the preceding environment finishes and only applies to sequential configs; it is dropped from the first sequential environment, which has nothing to wait after. `override` is only allowed with releaseType "override" and is { releaseMethod, rolloutContextKindKey?, stages?, metricKeys?, metricGroupKeys?, rollbackOnRegression? }. - repoFullName (optional): GitHub repo as "owner/repo". - prNumber (optional): PR number. - prUrl (optional): Full PR URL. - startingVariationId (optional): For a multi-variate flag, the id of the variation the flag rolls out from. If omitted, a boolean flag assumes the false variation. - endingVariationId (optional): For a multi-variate flag, the id of the variation the flag rolls out to. If omitted, a boolean flag assumes the true variation. A multi-variate flag requires both startingVariationId and endingVariationId to be set; setting only one is rejected. RETURNS: - created: Boolean indicating success. - config_id: Identifier of the created rollout config. - flag_key: Echoed flag key. - required_application_keys: Normalized application ids required by the evaluation gate, when supplied. - environments: Normalized per-environment plan that was sent. - warnings: Advisory warnings for policy environments with missing or incomplete release policies. - On failure: created=false with an error. retryable=false means retrying the same call will not help (the flag isn't in this project, or a conflicting config exists). Example (immediate in staging, guarded in production): {"projectKey": "default", "flagKey": "new-checkout-flow", "requiredApplicationKeys": ["checkout-web"], "environments": [{"environmentKey": "staging", "releaseType": "override"}, {"environmentKey": "production", "releaseType": "override", "override": {"releaseMethod": "guarded", "stages": [{"allocation": 10000, "durationMillis": 3600000}, {"allocation": 50000, "durationMillis": 3600000}], "metricKeys": ["checkout-error-rate"], "rollbackOnRegression": true}}], "repoFullName": "launchdarkly/gonfalon", "prNumber": 12345}
Create a new empty dashboard (visualization) for organizing charts. IMPORTANT: Before creating a new dashboard: 1. Use list-dashboards to check if a similar dashboard already exists 2. Use get-keys to discover available data dimensions for the product types you want to chart INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - name (required): Name for the dashboard (e.g., "Frontend Errors Overview") - timePreset (optional, default "last_24_hours"): Default time range. Use format like "last_24_hours", "last_7_days", "last_30_days" RETURNS: - dashboard_created: Boolean indicating success - dashboard_id: ID of the created dashboard - dashboard_url: URL to view the dashboard - name: Dashboard name After creating a dashboard, use create-graph to add charts to it. Example usage: {"name": "API Performance Dashboard", "timePreset": "last_7_days"}
Create an offline dataset for AI evaluation. key must be unique in the project (e.g. support-tickets-v1); name is a display name (e.g. Support tickets). format is csv or jsonl. filename is optional (e.g. support-tickets.csv). sizeBytes is the file size in bytes. Returns id, key, name, status (pending), uploadUrl, uploadMethod (PUT), uploadHeaders, and uploadExpiresAt. Next, send the file with an HTTP PUT to uploadUrl, with the uploadHeaders, before uploadExpiresAt. Then call get-dataset until status is ready, and pass id as datasetId to run-evaluation. Set empty=true to create a ready dataset with no rows and no upload URL.
Create an AI evaluation: a saved prompt, a generation model, and scoring criteria. It does not reference an AgentControl Config. Do not send configKey, datasetId, or variationKeys; pass datasetId or playgroundId to run-evaluation instead. Required: name, generationProvider (e.g. "OpenAI"), and generationModel as Provider.model-id (e.g. "OpenAI.gpt-4o", the same format as a variation's modelConfigKey). Optional: messages, an array of {role, content} where role is "system", "user", or "assistant" and content can use {{placeholders}}; variables, a freeform object of placeholder values, e.g. {"city":"Paris"}; promptSnippets, an object of snippet text keyed by name, required when messages use {{snippet.<key>}}; parameters, freeform model parameters, e.g. {"temperature":0.2}; evaluationProvider and evaluationModel, the judge model, in the same formats. criteria is an array of {criterionType, kind?, options?}, e.g. [{"criterionType":"accuracy","options":{"expected_output":"Sunny"}},{"criterionType":"toxicity"}]. Deepeval criterionType values: accuracy, likeness, misinformation, answer_relevancy, bias, toxicity. kind "deepeval" (the default) is the only kind that run-evaluation scores. "judge" and "scorer" are for SDK-driven runs only. They need successDirection and options.threshold (0 to 1); judge also needs judgeKey (a judge AgentControl Config key). Pass the returned id as evaluationId to run-evaluation.
Create a new experiment on a flag or AgentControl Config. An experiment measures the impact of different variations on specified metrics. You must provide the initial iteration definition including a hypothesis, metrics, treatments, and flag configuration. One treatment must be marked as the baseline. Use `methodology` to pick the results-analysis approach (`frequentist` default, `bayesian`, or `export_only` for data-export-only mode). Use `analysisConfig` to set thresholds and multiple-comparison correction. Use `iteration.attributes` to declare slicing dimensions and `iteration.covariateId` to enable stratified sampling. The experiment is created as a DRAFT: it collects no data and affects no end users until an iteration is started. Do NOT call start-experiment-iteration in the same turn as this tool. Summarize the created design for the user, show them the returned `designUrl`, and wait for their explicit confirmation before starting the experiment.
Create a new feature flag in a project. Defaults to a boolean temporary flag. After creation the flag is OFF in all environments: use toggle-flag to enable it. An OFF flag serves `defaults.offVariation` and an ON flag that matches no rule serves `defaults.onVariation`; boolean flags default to OFF serving false. FLAG KINDS: - 'boolean' (default): two variations — true/false. Do not pass a `variations` array. - 'multivariate': custom variations such as strings, numbers, or JSON objects. REQUIRED: provide a `variations` array with at least 2 entries, each with a `value` field. The LaunchDarkly API ignores `kind: 'multivariate'` when no variations are supplied and silently creates a boolean flag instead, so this tool enforces the requirement early. Multivariate flags also REQUIRE `defaults` (LaunchDarkly would otherwise serve the second variation when off): set defaults.offVariation to the 0-based index of the value your code falls back to, so the flag behaves like the code while off and needs no approval to stay that way; defaults.onVariation is the index served when targeting is on. To change them later, call update-off-variation once with allEnvs, fallthroughVariationIndex and updateFlagDefaults. To satisfy org guardrails that require custom properties (e.g. jira.issues, expiry.date), pass customProperties as a map of { key: { name, value[] } }. MAINTAINER: set maintainerTeamKey or maintainerId to assign an owner at creation time. Prefer maintainerTeamKey over maintainerId when a suitable team exists — team ownership survives personnel changes better than an individual. Call get-member-self first to resolve the calling user's ID and team memberships; if they belong to more than one team, ask which one should be the maintainer instead of guessing. If the response has needsTeamMaintainer, the flag was not created because this project requires a team maintainer. Ask the user which of the returned teams should own the flag, then retry with maintainerTeamKey. Do not guess, even when only one team is returned. If that response has no teams, the caller belongs to none or the member lookup failed: tell the user why, ask which team should own the flag, and retry with maintainerTeamKey. Do not guess. VIEWS: pass viewKeys to link the new flag to one or more views at creation time (Views are an Enterprise feature). On accounts without the Views entitlement the API silently ignores viewKeys rather than erroring, so verify the links with get-resource-views if view membership is load-bearing.
Add a chart/graph to an existing dashboard. IMPORTANT: Before creating a graph: 1. Use get-keys to discover available data dimensions 2. Use the data query tools (query-logs, query-traces, query-aggregations, query-error-groups, query-sessions) to verify data exists INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - dashboardId (required): ID of the dashboard to add the graph to - title (required): Chart title (e.g., "Error Rate by Service") - type (required): Chart type - one of: - "Line chart": For time-series trends (errors over time, latency trends) - "Bar chart / histogram": For comparisons (errors by service, requests by endpoint) - "Table": For detailed breakdowns with multiple dimensions - productType (required): Data source - one of: - "Logs": Log entries - "Traces": Distributed traces/spans - "Errors": Error groups - "Sessions": User sessions - "Metrics": Custom metrics - "PAEvents": Product analytics events (preferred event source; the one the graph editor UI shows). Filter custom events with `type="track" key="<name>"`, page/screen views with `type="*_view" view_name="<path>"` - "Events": Legacy session events. Filter with `event="<name>"`. Prefer PAEvents for new graphs - expressions (required): Array of aggregations, each with: - aggregator: One of Count, CountDistinct, CountDistinctKey, Min, Avg, P50, P75, P90, P95, P99, Max, Sum - column: Field to aggregate (empty string "" for Count, field name for others) - query (optional): Filter query string using search syntax - groupBy (optional): Array of dimension keys to group by - groupByLimit (optional, default 10): Maximum number of series to render when groupBy is set. High-cardinality dimensions (URLs, click selectors, account IDs) can produce hundreds of series and make the dashboard UI unresponsive — keep this small. Ignored when groupBy is empty. - limitAggregator (optional): Which aggregator to rank groups by when applying groupByLimit. Defaults to the first expression's aggregator (Count for Count and CountDistinctKey). - limitColumn (optional): Column used alongside limitAggregator when ranking groups (e.g. "duration" for P90 latency ranking). Defaults to the first expression's column. Ignored for Count. - bucketBy (optional, default "Timestamp"): Field to bucket by for time-series - bucketCount (optional, default 12): Number of time buckets - display (optional): Display style - "Line", "Stacked", "Stacked area" - heatmapSecureSessionId (optional, Heatmap only): secure_id of a session that visited the target page - heatmapSessionTimestamp (optional, Heatmap only): ISO timestamp of that session's navigation to the page CHART TYPE SELECTION GUIDE: - Use "Line chart" for: Error rates over time, latency percentiles, request volume trends - Use "Bar chart / histogram" for: Top errors by type, requests by endpoint, errors by browser - Use "Table" for: Detailed error listings, session breakdowns, trace details AGGREGATOR SELECTION GUIDE: - Count: Total number of events (most common) - CountDistinct: Unique values (users, sessions, trace IDs) - Avg/P50/P75/P90/P95/P99: Latency and duration metrics (P75 for Web Vitals, P95 for Datadog-style SLOs) - Sum: Aggregate numeric totals Example - Error count over time: {"dashboardId": 12345, "title": "Error Count", "type": "Line chart", "productType": "Errors", "expressions": [{"aggregator": "Count", "column": ""}], "bucketCount": 24} Example - Top 10 errors by service: {"dashboardId": 12345, "title": "Errors by Service", "type": "Bar chart / histogram", "productType": "Errors", "expressions": [{"aggregator": "Count", "column": ""}], "groupBy": ["service_name"], "groupByLimit": 10}
Create a new metric in a LaunchDarkly project. KIND (optional, defaults to 'custom') — how the metric collects events: - 'custom' → event-driven; agent calls track(eventKey) in code. Requires `eventKey`. - 'pageview' → fires automatically when a user visits a matching URL. Requires `urls`. No code change needed. - 'click' → fires automatically when a user clicks a CSS selector on a matching URL. Requires `urls` + `selector`. No code change needed. Prefer 'pageview' or 'click' when they fit the user's intent — they require no SDK instrumentation. URLS (required for kind='pageview' or 'click') — array of URL match rules. The field name carrying the value depends on the matcher `kind`: - { kind: 'substring', substring: '/checkout' } — URL contains this string (most common) - { kind: 'exact', url: 'https://example.com/checkout' } — URL must match exactly - { kind: 'canonical', url: 'https://example.com/checkout' } — matches the canonical URL - { kind: 'regex', pattern: '/checkout/.+' } — full regex pattern SELECTOR (required for kind='click') — CSS selector that triggers the event, e.g. '.checkout-btn', '#submit'. EVENT KEY (required for kind='custom') — matches the string passed to track() in code. MEASURE TYPE (required) — speak the user's language, not the API's: - 'count' → total number of times the event occurred (isNumeric: false, unitAggregationType: sum) - 'occurrence' → whether each user triggered the event at all — conversion/binary (isNumeric: false, unitAggregationType: average) - 'value' → a numeric value attached to the event like latency or revenue (isNumeric: true) SUCCESS CRITERIA (required): - 'HigherThanBaseline' — more is better (conversion rate, revenue, engagement) - 'LowerThanBaseline' — less is better (latency, error rate, bounce rate) VALUE AGGREGATION (optional, only for measureType='value'): - 'average' (default) — mean value per user, e.g. average page load time - 'sum' — total value per user, e.g. total revenue UNIT (optional) — human-readable label shown in the UI, e.g. 'ms', 'USD', 'requests'. RANDOMIZATION UNITS (optional) — context kinds this metric can be randomized by in experiments. Defaults to ['user']. Override if the project uses different context kinds (e.g. ['member', 'account'] on catfood). If creation fails with 'randomization unit not found', call get-project or ask the user for their project's context kinds. Common templates: - Page visit: kind=pageview, urls=[{kind:'substring', substring:'/checkout'}], measureType=occurrence, successCriteria=HigherThanBaseline - Button click: kind=click, urls=[{kind:'substring', substring:'/'}], selector='.checkout-btn', measureType=occurrence, successCriteria=HigherThanBaseline - API latency: measureType=value, valueAggregation=average, successCriteria=LowerThanBaseline, unit=ms - Signup conversion: measureType=occurrence, successCriteria=HigherThanBaseline - Error count: measureType=count, successCriteria=LowerThanBaseline
Create a new LLM playground. A playground lets you compare AgentControl Config variations side-by-side. Provide a name and variants — each variant references an evaluation definition (by evaluationId) and a display position.
Create a new LaunchDarkly project. Returns the project with its environments, including each environment's client-side ID and mobile key. Project keys must be lowercase with hyphens, starting with a letter. Production and Test environments are created by default.
Create a new prompt snippet. A snippet is a reusable text block that can be referenced in AgentControl Config variation prompts using {{snippet-key}} syntax. Provide a unique key, display name, and the text content.
Create a new segment in a project environment. The segment is empty after creation — use update-segment-rules to add targeting rules or update-segment-targets to add individual context keys. Segment keys are immutable after creation: choose carefully. Pass viewKeys to link the new segment to one or more views at creation time (Views are an Enterprise feature).
Create a new view in a project. Views are an Enterprise feature. The view is empty after creation — use link-view-resources to link flags, segments, or AgentControl Configs to it, or pass viewKeys when creating those resources. The key is converted to lowercase by the API, so use the lowercase form to reference the view afterward. MAINTAINER: set maintainerTeamKey or maintainerId to assign an owner; only one of the two can be specified. Prefer maintainerTeamKey when a suitable team exists.
Permanently delete an agent graph and all of its edges. THIS IS IRREVERSIBLE. Requires confirm=true to execute.
Permanently delete an agent skill and all of its versions. THIS IS IRREVERSIBLE. LaunchDarkly rejects the delete while any variation still attaches the skill; use list-agent-skill-references to find and detach them first. Requires confirm=true to execute.
Permanently delete an AgentControl Config. THIS IS IRREVERSIBLE. Requires confirm=true to execute.
Permanently delete an AgentControl Config variation. THIS IS IRREVERSIBLE. Requires confirm=true to execute.
Permanently delete a custom AI model config. Requires confirm=true. modelConfigKey is the key, not the id. Global models cannot be deleted: call restrict-agentcontrol-model-configs instead. If the API returns 'model config is still in use', move those variations to another modelConfigKey with update-agentcontrol-config-variation, then retry.
Permanently delete an AI tool definition. THIS IS IRREVERSIBLE. Any AgentControl Config variations referencing this tool will lose the attachment. Requires confirm=true to execute.
Permanently delete an observability alert. THIS IS IRREVERSIBLE. Requires confirm=true to execute. Use get-alert first to verify you are deleting the right alert. INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - alertId (required): The numeric ID of the alert to delete - confirm (required): Must be true to execute the deletion RETURNS: - deleted: Boolean indicating success - alert_id: ID of the deleted alert
Permanently delete a dashboard (visualization) and all of its graphs. THIS IS IRREVERSIBLE. Requires confirm=true to execute. Use get-dashboard first to verify you are deleting the right dashboard. INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - dashboardId (required): The numeric ID of the dashboard to delete (from list-dashboards) - confirm (required): Must be true to execute the deletion RETURNS: - deleted: Boolean indicating success - dashboard_id: ID of the deleted dashboard
Permanently delete an offline dataset and its associated metadata. THIS IS IRREVERSIBLE. Requires confirm=true to execute.
Deprecated: use delete-release-autopilot-repo-settings instead. Unmap a GitHub repository from Release Autopilot settings (removes project mapping and overrides). Idempotent: an already-unmapped repo still returns success. Pass repo as owner/name or githubRepoId. Requires permission to update Release Autopilot repo settings on the mapped project.
Permanently delete a feature flag. THIS IS IRREVERSIBLE. Requires confirm=true to execute. Always call check-removal-readiness first and only delete if it returns 'safe'. Prefer archive-flag (reversible) when possible.
Permanently remove a single chart/graph from its dashboard. THIS IS IRREVERSIBLE. The dashboard itself is untouched. Requires confirm=true to execute. Use get-dashboard first to verify you are deleting the right graph. INPUTS: - projectKey (required): The LaunchDarkly project key (e.g., "default"). - graphId (required): The numeric ID of the graph to delete (from get-dashboard) - confirm (required): Must be true to execute the deletion RETURNS: - deleted: Boolean indicating success - graph_id: ID of the deleted graph
Permanently delete a prompt snippet. THIS IS IRREVERSIBLE. Any AgentControl Config variations referencing this snippet will lose their reference. Requires confirm=true to execute.
Unmap a GitHub repository from Release Autopilot settings (removes project mapping and overrides). Idempotent: an already-unmapped repo still returns success. Pass repo as owner/name or githubRepoId. Requires permission to update Release Autopilot repo settings on the mapped project.
Search for LaunchDarkly account members and return their IDs. Supports flexible matching: - `query`: case-insensitive substring match across both email and display name (e.g. 'hartmann', 'anthony', 'hart' all work). Use this for fuzzy/partial lookups. - `emails`: exact match on one or more full email addresses. Use when you have the precise email and want a guaranteed result. Returns id, email, displayName, and role for each match. Pass the returned `id` values to tools like list-metrics as `maintainerIds`.
Find feature flags that are candidates for cleanup. Returns a prioritized list of stale flags sorted by staleness (worst first). Categories: inactive_30d (no requests in period), launched_no_changes (fully rolled out, no recent changes), never_requested (created but never evaluated). Defaults to showing temporary flags inactive for 30+ days. ENVIRONMENT OPTIONS (choose one): - `env`: single environment key (required when useCriticalEnvs is not set) - `useCriticalEnvs`: auto-discover critical environments from the project's environment config and use the first critical env for staleness classification EVALUATION COUNTS: - `includeEvalCounts`: when true, attaches `evalCounts` (total SDK evaluations per env) to each stale flag using the batched evaluationSummaries endpoint. NOTE: eval counts are total SDK calls, not unique contexts. - `evalWindow`: evaluation window in days (default 30) Optionally filter by maintainer to find stale flags owned by a specific member or team (use get-member-self or find-members to resolve maintainerId), or by `view` to scope the search to flags linked to a view (Views are an Enterprise feature).
Get a specific agent graph by key, including its full edge structure. Each edge connects a source AgentControl Config to a target AgentControl Config with optional handoff data.
Get the latest version of an agent skill by key, including its full SKILL.md markdown, name, description, tags, and version number.
Requires projectKey, configKey. Find configKey with list-agentcontrol-configs. Returns variation keys (e.g. v1-gpt4o, not _id) for update-agentcontrol-config-variation or clone-agentcontrol-config-variation. region (e.g. us-east-1) and freeform JSON custom (e.g. {"endpoint":"https://model.example.com"}) appear directly on variations. modelConfigVersion pins model config version (e.g. 3), not variation version (updates add 1). outputFormat is JSON Schema. Absent fields remain absent. Judge configs: evaluationMetricKey, isInverted. Returns maintainer or maintainerTeam.
Health check for an AgentControl Config. Returns `health` (healthy, warning, unhealthy), `issues`, per-variation summaries, and four signals: `completeness` (models, prompts, tool references), `targetability` (per environment: targeting on and serving a non-disabled variation), `requestValidity` (outputFormat is valid JSON Schema and modelConfigKey resolves), and `recentInvocation` (per-environment generation successes and errors, last 7 days). Unhealthy when a variation has no model, no environment is targetable, a request validity check fails, or every generation errored in a targetable environment. No generation data is reported as no_data and never makes a config unhealthy. Pass env to check one environment.
Judge scores in one environment, for one AgentControl Config or, without configKey, for every config. Returns one entry per judge metric key ($ld:ai:judge:<suffix>) with `averageScore` and `sampleCount`, covering the built-in judges (accuracy, relevance, toxicity) and every custom judge config in the project. Custom judges include `judgeConfigKey`, `judgeConfigName`, and `isInverted` (true means a lower score is better). Judges with no scores in the window are listed in `noData`. from and to are epoch milliseconds; the default window is the last 7 days. groupBy=variation adds per-variation scores and needs configKey. groupBy=config adds per-config scores. Some apps record judge scores under the judge config's key, not the judged config's key. If a configKey query returns only noData, omit configKey or pass the judge config's key. metricKeys adds judge metric keys that have no judge config, for example from a deleted judge.
LaunchDarkly ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve LaunchDarkly's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are LaunchDarkly alternatives on ChatGPT?
As of 2026-11-02, LaunchDarkly competes with PostHog, Mixpanel, Amplitude, Amplitude EU, Statsig, Datadog Experiments, Adobe CJA, Caprail and 29 more in ChatGPT Product Analytics & Experimentation, ranked by public Discoverability Score.
Where does LaunchDarkly rank in Product Analytics & Experimentation on ChatGPT?
As of 2026-11-02, LaunchDarkly ranks #21 of 38 in ChatGPT Product Analytics & Experimentation with a Discoverability Score of 0/100 (Invisible).
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.