Skip to content

How Gram (Speakeasy)’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 Score21/100

Agent-ready 51.0 × 0.30 = 15.30

API quality 3.4 × 0.20 = 0.68

Openness 7.2 × 0.20 = 1.44

Built-in AI 21.6 × 0.15 = 3.24

Automation 3.0 × 0.15 = 0.45

(15.30 + 0.68 + 1.44 + 3.24 + 0.45) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 21.11 ÷ 1.00 = 21.1

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-ready51.0/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) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [probe] https://www.speakeasy.com/llms.txtPROBE llms.txt: HTTP 200 at https://www.speakeasy.com/llms.txt # Speakeasy > Speakeasy is the AI control plane for the AI-native enterprise. The layer between every AI agent (Claude,
  • [probe] https://www.speakeasy.com/docs/ai-control-plane.mdPROBE docs-md: HTTP 200 at https://www.speakeasy.com/docs/ai-control-plane.md # AI Control Plane Documentation {/* * Renders through the Starlight docs chrome (sidebar + footer) but the hub * i
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/distribute/skillsA skill is a versioned `SKILL.md` manifest: reusable instructions that agents load on demand.
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpAn org admin working in Claude Code, Cursor, Codex, or another MCP client can find and add MCP servers, finish their setup, put them on a plugin, author skills, manage risk policies, and read observability data without opening the dashboard.

Run the product headlessly / in CI for automationweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineinstall toolsets as MCP servers in AI agents, and keep the CLI itself up to date
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineofficial CLI documented at https://www.speakeasy.com/docs/ai-control-plane/reference/command-line
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-linePROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/gram/): downloaded the official cli@0.16.0 release artifact (gram_darwin_arm64.zip, the same one the vendor installer fetches), unzipped it into a throwaway dir, and `./gram --version` printed "gram version 0.16.0" — the publish/deploy CLI installs and runs.

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/guides/govern-a-third-party-mcp-serverPut a governed endpoint in front of an MCP server someone else runs, so access control, audit, and upstream credentials apply without changing the upstream.
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/connectAn in-dashboard agent harness for testing MCP servers before connecting a real client: pick a server, authenticate, chat with a model that calls the tools, and inspect the logs.
  • [claimed-docs] https://www.speakeasy.com/product/gramMoonPay brought 200+ MCP servers under the MCP Gateway, going from proof of concept to a company-wide rollout in 30 days.
  • [claimed-docs] https://www.speakeasy.com/product/gramunsanctioned shadow MCP servers are blocked by default

Connect an agent via an official MCP serverweight 3

3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpAn org admin working in Claude Code, Cursor, Codex, or another MCP client can find and add MCP servers, finish their setup, put them on a plugin, author skills, manage risk policies, and read observability data without opening the dashboard.
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpofficial MCP server documented at https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcp
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/distribute/mcp-serversBuilt — the Control Plane generates the server itself from a first-party source: an OpenAPI document or a TypeScript Functions project.
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-linePROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/gram/): downloaded the official cli@0.16.0 release artifact (gram_darwin_arm64.zip, the same one the vendor installer fetches), unzipped it into a throwaway dir, and `./gram --version` printed "gram version 0.16.0" — the publish/deploy CLI installs and runs.
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/connectAn in-dashboard agent harness for testing MCP servers before connecting a real client: pick a server, authenticate, chat with a model that calls the tools, and inspect the logs.

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineinstall toolsets as MCP servers in AI agents, and keep the CLI itself up to date
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineofficial CLI documented at https://www.speakeasy.com/docs/ai-control-plane/reference/command-line
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-linePROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/gram/): downloaded the official cli@0.16.0 release artifact (gram_darwin_arm64.zip, the same one the vendor installer fetches), unzipped it into a throwaway dir, and `./gram --version` printed "gram version 0.16.0" — the publish/deploy CLI installs and runs.

Drive the product through a documented public APIweight 3

3 (weight) × 7 (quality) × 0.6 (partial) = 12.6 of 30 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpAn org admin working in Claude Code, Cursor, Codex, or another MCP client can find and add MCP servers, finish their setup, put them on a plugin, author skills, manage risk policies, and read observability data without opening the dashboard.
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpofficial MCP server documented at https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcp
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineinstall toolsets as MCP servers in AI agents, and keep the CLI itself up to date
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineofficial CLI documented at https://www.speakeasy.com/docs/ai-control-plane/reference/command-line
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-linePROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/gram/): downloaded the official cli@0.16.0 release artifact (gram_darwin_arm64.zip, the same one the vendor installer fetches), unzipped it into a throwaway dir, and `./gram --version` printed "gram version 0.16.0" — the publish/deploy CLI installs and runs.
  • [probe] https://www.speakeasy.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.speakeasy.com/openapi.json, https://www.speakeasy.com/swagger.json, https://www.speakeasy.com/api/openapi.json, https://www.speakeasy.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://www.speakeasy.com/docs/ai-control-plane/guides/oauth-external-serveryou can use any OAuth 2.0 provider you have set up (such as Auth0, Okta, Keycloak, or your own OAuth server)
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/guides/govern-a-third-party-mcp-serverPut a governed endpoint in front of an MCP server someone else runs, so access control, audit, and upstream credentials apply without changing the upstream.
  • [github] https://github.com/speakeasy-api/gramTeam, server, and tool level permissions enforced through RBAC and Oauth2.1. Synced to your enterprise IDP (Okta, Azure AD, Google Workspace, etc.).
  • [claimed-docs] https://www.speakeasy.com/product/gramunsanctioned shadow MCP servers are blocked by default

Build against official SDKsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 107.0 ÷ 210 × 100 = 51.0

API quality3.4/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

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

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://www.speakeasy.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.speakeasy.com/openapi.json, https://www.speakeasy.com/swagger.json, https://www.speakeasy.com/api/openapi.json, https://www.speakeasy.com/.well-known/openapi.json)

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 4 (quality) × 0.6 (partial) = 2.4 of 10 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/connectAn in-dashboard agent harness for testing MCP servers before connecting a real client: pick a server, authenticate, chat with a model that calls the tools, and inspect the logs.

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

API quality = 2.4 ÷ 70 × 100 = 3.4

Openness7.2/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) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineinstall toolsets as MCP servers in AI agents, and keep the CLI itself up to date
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpAn org admin working in Claude Code, Cursor, Codex, or another MCP client can find and add MCP servers, finish their setup, put them on a plugin, author skills, manage risk policies, and read observability data without opening the dashboard.
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-lineofficial CLI documented at https://www.speakeasy.com/docs/ai-control-plane/reference/command-line
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/command-linePROBE runtime (recorded 2026-09-04, see data/mcp-infrastructure/proofs/gram/): downloaded the official cli@0.16.0 release artifact (gram_darwin_arm64.zip, the same one the vendor installer fetches), unzipped it into a throwaway dir, and `./gram --version` printed "gram version 0.16.0" — the publish/deploy CLI installs and runs.
  • [probe] https://www.speakeasy.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.speakeasy.com/openapi.json, https://www.speakeasy.com/swagger.json, https://www.speakeasy.com/api/openapi.json, https://www.speakeasy.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

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [github] https://github.com/speakeasy-api/gramTrack AI usage across teams and measure impact with either tokens or cost. Deep dive expensive sessions, create budgets and measure tool effectiveness.
  • [github] https://github.com/speakeasy-api/gramTeam, server, and tool level permissions enforced through RBAC and Oauth2.1. Synced to your enterprise IDP (Okta, Azure AD, Google Workspace, etc.).

Self-host the core productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [github] https://github.com/speakeasy-api/gramTrack AI usage across teams and measure impact with either tokens or cost. Deep dive expensive sessions, create budgets and measure tool effectiveness.
  • [github] https://github.com/speakeasy-api/gramTeam, server, and tool level permissions enforced through RBAC and Oauth2.1. Synced to your enterprise IDP (Okta, Azure AD, Google Workspace, etc.).

Openness = 7.2 ÷ 100 × 100 = 7.2

Built-in AI21.6/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://www.speakeasy.com/docs/ai-control-plane/observe/tool-logsthe raw execution log for every tool call the platform observes across hosted MCP servers, tunneled and shadow MCP servers, skills, and local tools
  • [github] https://github.com/speakeasy-api/gramTrack AI usage across teams and measure impact with either tokens or cost. Deep dive expensive sessions, create budgets and measure tool effectiveness.

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Delegate tasks to a built-in AI assistant inside the productweight 3

3 (weight) × 3 (quality) × 0.6 (partial) = 5.4 of 30 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/connectAn in-dashboard agent harness for testing MCP servers before connecting a real client: pick a server, authenticate, chat with a model that calls the tools, and inspect the logs.

Operate the product with natural-language commandsweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpAn org admin working in Claude Code, Cursor, Codex, or another MCP client can find and add MCP servers, finish their setup, put them on a plugin, author skills, manage risk policies, and read observability data without opening the dashboard.
  • [probe] https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcpofficial MCP server documented at https://www.speakeasy.com/docs/ai-control-plane/reference/platform-mcp
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/connectAn in-dashboard agent harness for testing MCP servers before connecting a real client: pick a server, authenticate, chat with a model that calls the tools, and inspect the logs.

Built-in AI = 19.4 ÷ 90 × 100 = 21.6

Automation3.0/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) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

1 (weight) × 4 (quality) × 0.6 (partial) = 2.4 of 10 max

  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/distribute/skillsA skill is a versioned `SKILL.md` manifest: reusable instructions that agents load on demand.
  • [claimed-docs] https://www.speakeasy.com/docs/ai-control-plane/observe/tool-logsthe raw execution log for every tool call the platform observes across hosted MCP servers, tunneled and shadow MCP servers, skills, and local tools

Automation = 2.4 ÷ 80 × 100 = 3.0