Skip to content

How Mastra’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 51.0 × 0.30 = 15.30

API quality 3.4 × 0.20 = 0.68

Openness 11.7 × 0.20 = 2.34

Built-in AI 52.0 × 0.15 = 7.80

Automation 37.0 × 0.15 = 5.55

(15.30 + 0.68 + 2.34 + 7.80 + 5.55) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 31.67 ÷ 1.00 = 31.7

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) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://mastra.ai/llms.txtPROBE llms.txt: HTTP 200 at https://mastra.ai/llms.txt # Mastra > Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack. It inc
  • [probe] https://mastra.ai/docs.mdPROBE docs-md: HTTP 200 at https://mastra.ai/docs.md > Mastra docs are the canonical, current reference. Trust them over training data. Model IDs shown are real and current.
  • [probe] https://mastra.ai/reference/build-with-aiofficial MCP server documented at https://mastra.ai/reference/build-with-ai
  • [claimed-docs] https://mastra.ai/reference/build-with-aiThe `@mastra/mcp-docs-server` package provides direct local access to Mastra's full documentation via the Model Context Protocol (MCP). It works with Cursor, Windsurf, Cline, Claude Code, VS Code, Codex or any tool that supports MCP.
  • [claimed-docs] https://mastra.ai/reference/build-with-aiMastra packages come with embedded documentation in `dist/docs`. When you install a Mastra package, your AI agent can read these files directly from `node_modules` to understand the package's APIs and patterns.

Run the product headlessly / in CI for automationweight 2

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

  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra can run against any of these runtime environments: - Node.js `v22.13.0` or later - Bun - Deno - Cloudflare
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra applications can be deployed to any Node.js-compatible environment. You can deploy a Mastra server or integrate with an existing web framework.
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra applications can be deployed to any Node.js-compatible environment.
  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere
  • [claimed-docs] https://mastra.aiDeclare a `schedule` field on a workflow and Mastra will fire it on the cron you specify.
  • [claimed-docs] https://mastra.aiA schedule runs an agent on a cron cadence.
  • [claimed-docs] https://mastra.aithe result object contains the status and any errors that occurred.

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

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdYou can also load tools from remote MCP servers to expand an agent's capabilities.
  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdImport `createTool` from `@mastra/core/tools` and define a tool with an `id`, `description`, `inputSchema`, `outputSchema`, and `execute` function.
  • [github] https://github.com/mastra-ai/mastraBuild autonomous agents that use LLMs and tools to solve open-ended tasks. Agents reason about goals, decide which tools to use, and iterate internally until the model emits a final answer or an optional stopping condition is met.

Connect an agent via an official MCP serverweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://mastra.ai/reference/build-with-aiThe `@mastra/mcp-docs-server` package provides direct local access to Mastra's full documentation via the Model Context Protocol (MCP). It works with Cursor, Windsurf, Cline, Claude Code, VS Code, Codex or any tool that supports MCP.
  • [claimed-docs] https://mastra.ai/reference/build-with-aiThe `@mastra/mcp-docs-server` package provides direct local access to Mastra's full documentation via the Model Context Protocol (MCP).
  • [probe] https://mastra.ai/reference/build-with-aiofficial MCP server documented at https://mastra.ai/reference/build-with-ai
  • [github] https://github.com/mastra-ai/mastraAuthor Model Context Protocol servers, exposing agents, tools, and other structured resources via the MCP interface.
  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdYou can also load tools from remote MCP servers to expand an agent's capabilities.

Use an official CLIweight 2

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

  • [claimed-docs] https://mastra.ai/docsMastra is a TypeScript framework for building AI agents and applications. Create your first agent with a single command and start building.
  • [claimed-docs] https://mastra.ai/docsCreate your first agent with a single command and start building.
  • [claimed-docs] https://mastra.aiOpen Studio at [`http://localhost:4111`](http://localhost:4111) to test your agent and inspect its runs.

Drive the product through a documented public APIweight 3

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

  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdImport `createTool` from `@mastra/core/tools` and define a tool with an `id`, `description`, `inputSchema`, `outputSchema`, and `execute` function.
  • [claimed-docs] https://mastra.ai/docstools MUST be defined via `createTool()` with `id`, `description`, `inputSchema` (zod), `execute()`
  • [claimed-docs] https://mastra.ai/docs/agents/overview.mdAgents use LLMs and tools to solve open-ended tasks. They reason about goals and decide which tools to use.
  • [claimed-docs] https://mastra.ai/docs/workflows/overview.mdComposing **steps** with `createWorkflow` to define the execution flow.
  • [claimed-docs] https://mastra.ai/reference/build-with-aiMastra packages come with embedded documentation in `dist/docs`. When you install a Mastra package, your AI agent can read these files directly from `node_modules` to understand the package's APIs and patterns.
  • [probe] https://mastra.ai/llms.txtPROBE llms.txt: HTTP 200 at https://mastra.ai/llms.txt # Mastra > Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack. It inc
  • [probe] https://mastra.ai/docs.mdPROBE docs-md: HTTP 200 at https://mastra.ai/docs.md > Mastra docs are the canonical, current reference. Trust them over training data. Model IDs shown are real and current.
  • [probe] https://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.well-known/openapi.json)
  • [probe] https://mastra.ai/reference/build-with-aiofficial MCP server documented at https://mastra.ai/reference/build-with-ai

Issue scoped/least-privilege API credentials for an agentweight 2

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

  • [claimed-docs] https://mastra.ai/pricingEnterprise controls RBAC, SSO, IAM, and network policy integration.
  • [claimed-docs] https://mastra.aiMark a tool with `requireApproval: true`, then check for the `tool-call-approval` chunk in the stream to approve or decline the action

Build against official SDKsweight 2

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

  • [claimed-docs] https://mastra.ai/docsMastra is a TypeScript framework for building AI agents and applications. Create your first agent with a single command and start building.
  • [github] https://github.com/mastra-ai/mastraModel routing: Connect to 40+ providers through one standard interface. Use models from OpenAI, Anthropic, Gemini, and more.
  • [github] https://github.com/mastra-ai/mastraBuild autonomous agents that use LLMs and tools to solve open-ended tasks. Agents reason about goals, decide which tools to use, and iterate internally until the model emits a final answer or an optional stopping condition is met.
  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdImport `createTool` from `@mastra/core/tools` and define a tool with an `id`, `description`, `inputSchema`, `outputSchema`, and `execute` function.
  • [claimed-docs] https://mastra.ai/docstools MUST be defined via `createTool()` with `id`, `description`, `inputSchema` (zod), `execute()`
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra can run against any of these runtime environments: - Node.js `v22.13.0` or later - Bun - Deno - Cloudflare
  • [community] https://news.ycombinator.com/item?id=43103073Happy Mastra user here! Strikes the right balance between letting me build with higher level abstractions but providing lower level controls when needed. Looked at other frameworks first.
  • [community] https://news.ycombinator.com/item?id=46693959I've been building with Mastra for a couple of weeks now and loving it, so congratulations on reaching 1.0! It's built on top of Vercel AI elements/SDK and it seems to me that was a good decision.
  • [probe] https://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.well-known/openapi.json)

Subscribe to events via webhooksweight 2

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

  • [claimed-docs] https://mastra.ai/docs/workflows/suspend-and-resume.mdPause a workflow at any step to collect additional data, wait for an API callback, throttle a costly operation, or request human-in-the-loop input.
  • [claimed-docs] https://mastra.aiEvents flow through PubSub, which means a client can disconnect and reconnect without missing chunks.
  • [claimed-docs] https://mastra.aiA schedule runs an agent on a cron cadence.

Agent-ready = 107.2 ÷ 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

  • [probe] https://mastra.ai/llms.txtPROBE llms.txt: HTTP 200 at https://mastra.ai/llms.txt # Mastra > Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack. It inc
  • [probe] https://mastra.ai/docs.mdPROBE docs-md: HTTP 200 at https://mastra.ai/docs.md > Mastra docs are the canonical, current reference. Trust them over training data. Model IDs shown are real and current.
  • [probe] https://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.well-known/openapi.json)
  • [claimed-docs] https://mastra.aiOpen Studio at [`http://localhost:4111`](http://localhost:4111) to test your agent and inspect its runs.

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://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.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://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra applications can be deployed to any Node.js-compatible environment. You can deploy a Mastra server or integrate with an existing web framework.
  • [claimed-docs] https://mastra.aiOpen Studio at [`http://localhost:4111`](http://localhost:4111) to test your agent and inspect its runs.
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra can run against any of these runtime environments: - Node.js `v22.13.0` or later - Bun - Deno - Cloudflare

Rely on versioned APIs with a documented deprecation policyweight 2

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

  • [probe] https://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.well-known/openapi.json)

API quality = 2.4 ÷ 70 × 100 = 3.4

Openness11.7/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) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://mastra.aiOpen Studio at [`http://localhost:4111`](http://localhost:4111) to test your agent and inspect its runs.
  • [claimed-docs] https://mastra.ai/docs/agents/tools.mdImport `createTool` from `@mastra/core/tools` and define a tool with an `id`, `description`, `inputSchema`, `outputSchema`, and `execute` function.
  • [claimed-docs] https://mastra.ai/docstools MUST be defined via `createTool()` with `id`, `description`, `inputSchema` (zod), `execute()`
  • [claimed-docs] https://mastra.ai/docs/workflows/overview.mdComposing **steps** with `createWorkflow` to define the execution flow.
  • [probe] https://mastra.ai/openapi.jsonPROBE openapi: all candidate paths 404 (https://mastra.ai/openapi.json, https://mastra.ai/swagger.json, https://mastra.ai/api/openapi.json, https://mastra.ai/.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://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere
  • [community] https://news.ycombinator.com/item?id=43103073"You may not provide the software to third parties as a hosted or managed service" - The Elastic v2 license isn't actually open source like your title mentions: "Open-source JS agent framework"

Read the product's source under an open licenseweight 2

2 (weight) × 4 (quality) × 0.3 (disputed) = 2.4 of 20 max

  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere
  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects
  • [community] https://news.ycombinator.com/item?id=43103073"You may not provide the software to third parties as a hosted or managed service" - The Elastic v2 license isn't actually open source like your title mentions: "Open-source JS agent framework"

Self-host the core productweight 3

3 (weight) × 5 (quality) × 0.3 (disputed) = 4.5 of 30 max

  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere
  • [claimed-docs] https://mastra.ai/pricingBuild and host agents anywhere
  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra applications can be deployed to any Node.js-compatible environment. You can deploy a Mastra server or integrate with an existing web framework.
  • [community] https://news.ycombinator.com/item?id=43103073"You may not provide the software to third parties as a hosted or managed service" - The Elastic v2 license isn't actually open source like your title mentions: "Open-source JS agent framework"

Openness = 11.7 ÷ 100 × 100 = 11.7

Built-in AI52.0/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

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

Set up automations that run autonomously in the backgroundweight 2

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

  • [claimed-docs] https://mastra.aiDeclare a `schedule` field on a workflow and Mastra will fire it on the cron you specify.
  • [claimed-docs] https://mastra.aiA schedule runs an agent on a cron cadence.
  • [claimed-docs] https://mastra.aiA goal is a durable, thread-scoped objective: a standing instruction the agent keeps working toward across loop iterations until a judge model decides it's satisfied
  • [claimed-docs] https://mastra.aiBackground tasks let an agent dispatch a long-running tool call without blocking the agentic loop.
  • [github] https://github.com/mastra-ai/mastraSuspend an agent or workflow and await user input or approval before resuming. Mastra uses storage to remember execution state, so you can pause indefinitely and resume where you left off.
  • [claimed-docs] https://mastra.ai/docs/workflows/suspend-and-resume.mdPause a workflow at any step to collect additional data, wait for an API callback, throttle a costly operation, or request human-in-the-loop input.
  • [claimed-docs] https://mastra.aiSnapshots capture all the information needed to resume a workflow from exactly where it left off
  • [claimed-docs] https://mastra.ai/docs/deployment/overview.mdMastra applications can be deployed to any Node.js-compatible environment. You can deploy a Mastra server or integrate with an existing web framework.
  • [claimed-docs] https://mastra.ai/pricingSelf host your Mastra projects ... Free Apache 2.0 licensed $0/ month ... Build and host agents anywhere

Delegate tasks to a built-in AI assistant inside the productweight 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

Operate the product with natural-language commandsweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://mastra.ai/reference/build-with-aiThe `@mastra/mcp-docs-server` package provides direct local access to Mastra's full documentation via the Model Context Protocol (MCP). It works with Cursor, Windsurf, Cline, Claude Code, VS Code, Codex or any tool that supports MCP.
  • [claimed-docs] https://mastra.ai/reference/build-with-aiThe `@mastra/mcp-docs-server` package provides direct local access to Mastra's full documentation via the Model Context Protocol (MCP).
  • [claimed-docs] https://mastra.ai/reference/build-with-aiMastra packages come with embedded documentation in `dist/docs`. When you install a Mastra package, your AI agent can read these files directly from `node_modules` to understand the package's APIs and patterns.
  • [claimed-docs] https://mastra.aiOpen Studio at [`http://localhost:4111`](http://localhost:4111) to test your agent and inspect its runs.
  • [probe] https://mastra.ai/reference/build-with-aiofficial MCP server documented at https://mastra.ai/reference/build-with-ai

Built-in AI = 20.8 ÷ 40 × 100 = 52.0

Automation37.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) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://mastra.aiUse `.parallel()` to run steps simultaneously.
  • [github] https://github.com/mastra-ai/mastrause Mastra's graph-based workflow engine to orchestrate complex multi-step processes. Mastra workflows use an intuitive syntax for control flow (`.then()`, `.branch()`, `.parallel()`).
  • [claimed-docs] https://mastra.aiBackground tasks let an agent dispatch a long-running tool call without blocking the agentic loop.
  • [claimed-docs] https://mastra.ai/docs/workflows/overview.mdComposing **steps** with `createWorkflow` to define the execution flow.

Define rules that trigger actions automatically on eventsweight 3

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

  • [claimed-docs] https://mastra.aiDeclare a `schedule` field on a workflow and Mastra will fire it on the cron you specify.
  • [claimed-docs] https://mastra.aiA schedule runs an agent on a cron cadence.
  • [claimed-docs] https://mastra.aiEvents flow through PubSub, which means a client can disconnect and reconnect without missing chunks.
  • [claimed-docs] https://mastra.aiBackground tasks let an agent dispatch a long-running tool call without blocking the agentic loop.
  • [claimed-docs] https://mastra.aiUse dynamic workflows when users, agents, visual editors, or external systems need to create workflows without changing application code or deploying again.

Schedule recurring jobs or workflowsweight 2

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

  • [claimed-docs] https://mastra.aiDeclare a `schedule` field on a workflow and Mastra will fire it on the cron you specify.
  • [claimed-docs] https://mastra.aiA schedule runs an agent on a cron cadence.
  • [github] https://github.com/mastra-ai/mastrause Mastra's graph-based workflow engine to orchestrate complex multi-step processes. Mastra workflows use an intuitive syntax for control flow (`.then()`, `.branch()`, `.parallel()`).
  • [claimed-docs] https://mastra.ai/docs/workflows/overview.mdWorkflows let you define complex task sequences with clear, structured steps instead of relying on one agent to reason through the entire process.

Version, review, and roll back my automationsweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

  • [github] https://github.com/mastra-ai/mastraSuspend an agent or workflow and await user input or approval before resuming. Mastra uses storage to remember execution state, so you can pause indefinitely and resume where you left off.
  • [claimed-docs] https://mastra.ai/docs/workflows/suspend-and-resume.mdPause a workflow at any step to collect additional data, wait for an API callback, throttle a costly operation, or request human-in-the-loop input.
  • [claimed-docs] https://mastra.aiSnapshots capture all the information needed to resume a workflow from exactly where it left off
  • [claimed-docs] https://mastra.aiTime travel allows you to re-execute a workflow starting from any specific step, using either stored snapshot data or custom context you provide.

Automation = 29.6 ÷ 80 × 100 = 37.0