How LaunchDarkly’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score32/100
Agent-ready 66.2 × 0.30 = 19.86
API quality 10.0 × 0.20 = 2.00
Openness 6.0 × 0.20 = 1.20
Built-in AI 22.2 × 0.15 = 3.33
Automation 37.5 × 0.15 = 5.63
(19.86 + 2.00 + 1.20 + 3.33 + 5.63) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 32.02 ÷ 1.00 = 32.0
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready66.2/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
Run the product headlessly / in CI for automationweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [claimed-docs] https://launchdarkly.com/docs/home/infrastructure/webhooks“Webhooks”
- [claimed-docs] https://launchdarkly.com/pricing“30 idiomatic SDKs”
Plug MCP servers into this product so it can use their toolsweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Connect an agent via an official MCP serverweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“Set up the LaunchDarkly hosted MCP server”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp“official MCP server documented at https://launchdarkly.com/docs/home/getting-started/mcp”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“PROBE runtime (recorded 2026-09-05): keyless JSON-RPC initialize POST to the documented hosted MCP endpoint https://mcp.launchdarkly.com/mcp/launchdarkly returned HTTP 401 — the remote MCP server is live and auth-gated exactly as documented.”
Use an official CLIweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“official CLI documented at https://launchdarkly.com/docs/home/getting-started/ldcli”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
Drive the product through a documented public APIweight 3
3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“official CLI documented at https://launchdarkly.com/docs/home/getting-started/ldcli”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“PROBE runtime (recorded 2026-09-05): keyless JSON-RPC initialize POST to the documented hosted MCP endpoint https://mcp.launchdarkly.com/mcp/launchdarkly returned HTTP 401 — the remote MCP server is live and auth-gated exactly as documented.”
- [probe] https://launchdarkly.com/openapi.json“PROBE openapi: all candidate paths 404 (https://launchdarkly.com/openapi.json, https://launchdarkly.com/swagger.json, https://launchdarkly.com/api/openapi.json, https://launchdarkly.com/.well-known/openapi.json)”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [claimed-docs] https://launchdarkly.com/docs/home/account/roles/manage-role-assign“Assigning roles to members”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“PROBE runtime (recorded 2026-09-05): keyless JSON-RPC initialize POST to the documented hosted MCP endpoint https://mcp.launchdarkly.com/mcp/launchdarkly returned HTTP 401 — the remote MCP server is live and auth-gated exactly as documented.”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
Build against official SDKsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://launchdarkly.com/pricing“30 idiomatic SDKs”
- [claimed-docs] https://launchdarkly.com/docs/sdk/openfeature“OpenFeature providers”
- [claimed-docs] https://launchdarkly.com/docs/sdk/edge/cloudflare“Cloudflare SDK reference”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
Subscribe to events via webhooksweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/infrastructure/webhooks“Webhooks”
Agent-ready = 119.2 ÷ 180 × 100 = 66.2
API quality10.0/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://launchdarkly.com/openapi.json“PROBE openapi: all candidate paths 404 (https://launchdarkly.com/openapi.json, https://launchdarkly.com/swagger.json, https://launchdarkly.com/api/openapi.json, https://launchdarkly.com/.well-known/openapi.json)”
- [probe] https://launchdarkly.com/llms.txt“PROBE llms.txt: HTTP 404 at https://launchdarkly.com/llms.txt”
- [probe] https://launchdarkly.com/docs.md“PROBE docs-md: HTTP 404 at https://launchdarkly.com/docs.md”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://launchdarkly.com/openapi.json“PROBE openapi: all candidate paths 404 (https://launchdarkly.com/openapi.json, https://launchdarkly.com/swagger.json, https://launchdarkly.com/api/openapi.json, https://launchdarkly.com/.well-known/openapi.json)”
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 7 (quality) × 1.0 (full) = 7.0 of 10 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/environment“Environments”
- [claimed-docs] https://launchdarkly.com/docs/home/flags/target“Testing changes to flag targeting”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/approvals“Approvals”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/change-history“Change history”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [probe] https://launchdarkly.com/openapi.json“PROBE openapi: all candidate paths 404 (https://launchdarkly.com/openapi.json, https://launchdarkly.com/swagger.json, https://launchdarkly.com/api/openapi.json, https://launchdarkly.com/.well-known/openapi.json)”
API quality = 7.0 ÷ 70 × 100 = 10.0
Openness6.0/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp“official MCP server documented at https://launchdarkly.com/docs/home/getting-started/mcp”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“official CLI documented at https://launchdarkly.com/docs/home/getting-started/ldcli”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“PROBE runtime (recorded 2026-09-05): keyless JSON-RPC initialize POST to the documented hosted MCP endpoint https://mcp.launchdarkly.com/mcp/launchdarkly returned HTTP 401 — the remote MCP server is live and auth-gated exactly as documented.”
- [probe] https://launchdarkly.com/openapi.json“PROBE openapi: all candidate paths 404 (https://launchdarkly.com/openapi.json, https://launchdarkly.com/swagger.json, https://launchdarkly.com/api/openapi.json, https://launchdarkly.com/.well-known/openapi.json)”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
Read the product's source under an open licenseweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [community] https://hn.algolia.com/api/v1/items/37611136“LaunchDarkly clients download all flags in the project on connection, then stream changes. ... LaunchDarkly has an open source 'Relay' you can run in your own environment for extra resiliency.”
Self-host the core productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://launchdarkly.com/docs/sdk/relay-proxy“The LaunchDarkly Relay Proxy is a small Go application that runs on your own infrastructure.”
- [claimed-docs] https://launchdarkly.com/docs/sdk/relay-proxy“The Relay Proxy”
- [community] https://hn.algolia.com/api/v1/items/37611136“LaunchDarkly clients download all flags in the project on connection, then stream changes. ... LaunchDarkly has an open source 'Relay' you can run in your own environment for extra resiliency.”
- [community] https://hn.algolia.com/api/v1/items/12464229“It's a pretty question[able] architecture that outsources feature flags to a third party. You're creating a critical path hard dependency and for most apps this is going to be hit multiple times on every request.”
Openness = 6.0 ÷ 100 × 100 = 6.0
Built-in AI22.2/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://launchdarkly.com/pricing“Configure, evaluate, roll out, and observe your AI end to end”
- [claimed-docs] https://launchdarkly.com/pricing“An AI Run is generated when you track an LLM request or run an online eval (LLM-as-a-judge).”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/guarded-rollouts“Guarded rollouts”
- [claimed-docs] https://launchdarkly.com/docs/home/experimentation/bayesian“Decision making with Bayesian statistics”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/releases/scheduled-changes“Scheduled flag changes”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/guarded-rollouts“Guarded rollouts”
- [claimed-docs] https://launchdarkly.com/docs/home/infrastructure/webhooks“Webhooks”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://launchdarkly.com/pricing“Configure, evaluate, roll out, and observe your AI end to end”
- [claimed-docs] https://launchdarkly.com/pricing“An AI Run is generated when you track an LLM request or run an online eval (LLM-as-a-judge).”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“Set up the LaunchDarkly hosted MCP server”
Operate the product with natural-language commandsweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“Set up the LaunchDarkly hosted MCP server”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp“official MCP server documented at https://launchdarkly.com/docs/home/getting-started/mcp”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-hosted“PROBE runtime (recorded 2026-09-05): keyless JSON-RPC initialize POST to the documented hosted MCP endpoint https://mcp.launchdarkly.com/mcp/launchdarkly returned HTTP 401 — the remote MCP server is live and auth-gated exactly as documented.”
Built-in AI = 20.0 ÷ 90 × 100 = 22.2
Automation37.5/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [claimed-docs] https://launchdarkly.com/docs/home/account/api“API access tokens”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp“official MCP server documented at https://launchdarkly.com/docs/home/getting-started/mcp”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“official CLI documented at https://launchdarkly.com/docs/home/getting-started/ldcli”
- [probe] https://launchdarkly.com/docs/home/getting-started/ldcli“PROBE runtime (recorded 2026-09-05): the official LaunchDarkly CLI installed via `brew tap launchdarkly/homebrew-tap && brew install ldcli` and `ldcli --version` printed `ldcli version 3.11.0` keylessly.”
- [probe] https://launchdarkly.com/docs/home/getting-started/mcp-local“PROBE runtime (recorded 2026-09-05): the official npm MCP server (`npx -y @launchdarkly/mcp-server start --transport stdio`) completed a FULL keyless stdio initialize handshake, answering serverInfo {"name":"LaunchDarkly","version":"0.6.2"} — tool calls authenticate later with an API key.”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max
- [claimed-docs] https://launchdarkly.com/docs/home/flags/target“Adaptive triggers”
- [claimed-docs] https://launchdarkly.com/docs/home/flags/target-rules“Custom rules”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/scheduled-changes“Scheduled flag changes”
- [claimed-docs] https://launchdarkly.com/docs/home/infrastructure/webhooks“Webhooks”
- [claimed-docs] https://launchdarkly.com/docs/home/flags/target-rules“Targeting rules”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://launchdarkly.com/docs/home/releases/scheduled-changes“Scheduled flag changes”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/ldcli“LaunchDarkly CLI”
- [claimed-docs] https://launchdarkly.com/docs/home/getting-started/mcp“LaunchDarkly MCP server”
Version, review, and roll back my automationsweight 1
1 (weight) × 5 (quality) × 0.6 (partial) = 3.0 of 10 max
- [claimed-docs] https://launchdarkly.com/docs/home/releases/approvals“Approvals”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/change-history“Change history”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/scheduled-changes“Scheduled flag changes”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/create-progressive-rollouts“Creating and managing progressive rollouts”
- [claimed-docs] https://launchdarkly.com/docs/home/releases/guarded-rollouts“Guarded rollouts”
Automation = 30.0 ÷ 80 × 100 = 37.5