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.txt“PROBE 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.md“PROBE 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/skills“A 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-mcp“An 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-line“install 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-line“official 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-line“PROBE 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-server“Put 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/connect“An 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/gram“MoonPay 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/gram“unsanctioned 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-mcp“An 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-mcp“official 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-servers“Built — 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-line“PROBE 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/connect“An 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-line“install 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-line“official 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-line“PROBE 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-mcp“An 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-mcp“official 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-line“install 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-line“official 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-line“PROBE 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.json“PROBE 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-server“you 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-server“Put 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/gram“Team, 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/gram“unsanctioned 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.json“PROBE 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/connect“An 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-line“install 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-mcp“An 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-line“official 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-line“PROBE 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.json“PROBE 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/gram“Track 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/gram“Team, 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/gram“Track 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/gram“Team, 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-logs“the 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/gram“Track 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/connect“An 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-mcp“An 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-mcp“official 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/connect“An 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/skills“A 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-logs“the 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