Skip to content

How OpenRouter’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 Score30/100

Agent-ready 47.8 × 0.30 = 14.34

API quality 48.6 × 0.20 = 9.72

Openness 10.3 × 0.20 = 2.06

Built-in AI 24.0 × 0.15 = 3.60

Automation 0.0 × 0.15 = 0.00

(14.34 + 9.72 + 2.06 + 3.60 + 0.00) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 29.72 ÷ 1.00 = 29.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-ready47.8/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://openrouter.ai/llms.txtPROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of models, with > routing, fallbacks, and cost
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [probe] https://openrouter.ai/docs/guides/overview/mcp-server.mdofficial MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.

Run the product headlessly / in CI for automationweight 2

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

  • [claimed-docs] https://openrouter.ai/docs/guides/overview/auth/management-api-keys.mdOpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to distribute or rotate keys automatically.
  • [claimed-docs] https://openrouter.ai/docs/quickstart.mdYou can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
  • [claimed-docs] https://openrouter.ai/docs/quickstart.mdYou can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.
  • [claimed-docs] https://openrouter.ai/docs/api_reference/streaming.mdThe OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI should update as the model generates the response.
  • [probe] https://openrouter.ai/api/v1/modelsPROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live model catalog with pricing/context metadata, no API key required
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key

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

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

  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdOnce connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [probe] https://openrouter.ai/docs/guides/overview/mcp-server.mdofficial MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md
  • [claimed-docs] https://openrouter.ai/docs/guides/features/tool-calling.mdOpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supported model.

Connect an agent via an official MCP serverweight 3

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

  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdOnce connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [probe] https://openrouter.ai/docs/guides/overview/mcp-server.mdofficial MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md

Use an official CLIweight 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

Drive the product through a documented public APIweight 3

3 (weight) × 10 (quality) × 1.0 (full) = 30.0 of 30 max

  • [claimed-docs] https://openrouter.ai/docsOpenRouter gives you access to hundreds of AI models through a single API endpoint.
  • [claimed-docs] https://openrouter.ai/docs/api_reference/streaming.mdThe OpenRouter API allows streaming responses from any model. This is useful for building chat interfaces or other applications where the UI should update as the model generates the response.
  • [claimed-docs] https://openrouter.ai/docs/guides/features/tool-calling.mdOpenRouter standardizes the tool calling interface across models and providers, making it easy to integrate external tools with any supported model.
  • [claimed-docs] https://openrouter.ai/docsBrowse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
  • [probe] https://openrouter.ai/llms.txtPROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of models, with > routing, fallbacks, and cost
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [probe] https://openrouter.ai/api/v1/modelsPROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live model catalog with pricing/context metadata, no API key required
  • [community] https://news.ycombinator.com/item?id=49364559Happy for the OpenRouter team... the ability to run any AI model with the same api key and same request has been great to experiment with new models and being able to switch models in prod with minimal effort. They also support fallback by default so you don't have to write wrappers.
  • [community] https://news.ycombinator.com/item?id=48338660One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other providers would make possible/easier.

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

2 (weight) × 7 (quality) × 0.6 (partial) = 8.4 of 20 max

  • [claimed-docs] https://openrouter.ai/docs/guides/overview/auth/management-api-keys.mdOpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to distribute or rotate keys automatically.
  • [claimed-docs] https://openrouter.ai/docs/guides/features/workspaces/workspace-budgets.mdWorkspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — daily, weekly, monthly, or lifetime — and OpenRouter blocks requests automatically once a limit is reached.
  • [community] https://news.ycombinator.com/item?id=48338660They offer billing caps! Most model providers still don't do this, but if you're going to run anything in public it's very useful to have hard limits so it doesn't cost you $1m overnight.
  • [community] https://news.ycombinator.com/item?id=48338660One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other providers would make possible/easier.

Build against official SDKsweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://openrouter.ai/docs/quickstart.mdYou can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.
  • [claimed-docs] https://openrouter.ai/docs/quickstart.mdYou can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [claimed-docs] https://openrouter.ai/docsYou can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.

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 = 100.4 ÷ 210 × 100 = 47.8

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

  • [claimed-docs] https://openrouter.ai/docsYou can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [claimed-docs] https://openrouter.ai/docsBrowse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [probe] https://openrouter.ai/llms.txtPROBE llms.txt: HTTP 200 at https://openrouter.ai/llms.txt # OpenRouter > A unified API for every major LLM. One endpoint, hundreds of models, with > routing, fallbacks, and cost
  • [claimed-docs] https://openrouter.ai/docsYou can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.

Test against a sandbox environment without touching production dataweight 1

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

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

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 = 34.0 ÷ 70 × 100 = 48.6

Openness10.3/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://openrouter.ai/docs/guides/overview/auth/management-api-keys.mdOpenRouter provides endpoints to programmatically manage your API keys, enabling key creation and management for applications that need to distribute or rotate keys automatically.
  • [claimed-docs] https://openrouter.ai/docs/guides/features/workspaces/workspace-budgets.mdWorkspace budgets let you cap how much a workspace can spend on OpenRouter inference. Set a dollar limit on any combination of intervals — daily, weekly, monthly, or lifetime — and OpenRouter blocks requests automatically once a limit is reached.
  • [claimed-docs] https://openrouter.ai/docs/guides/privacy/provider-logging.mdYou can restrict individual requests to only use providers with a certain data policy. This is also available as an account-wide setting in your privacy settings.
  • [claimed-docs] https://openrouter.ai/docs/guides/routing/provider-selection.mdYou can customize how your requests are routed using the `provider` object in the request body for [Chat Completions]
  • [claimed-docs] https://openrouter.ai/docsBrowse the full catalog at openrouter.ai/models, or list every available slug programmatically via the GET /api/v1/models endpoint.
  • [probe] https://openrouter.ai/openapi.jsonPROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key
  • [probe] https://openrouter.ai/api/v1/modelsPROBE keyless-endpoint: GET https://openrouter.ai/api/v1/models returned HTTP 200 application/json with 426 models (unauthenticated) - live model catalog with pricing/context metadata, no API key required
  • [community] https://news.ycombinator.com/item?id=48338660One thing that OpenRouter makes easy is the ability to manage API keys (mint new ones, expiry/limits per key, etc.) that I wish other providers would make possible/easier.

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

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

Self-host the core 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

Openness = 7.2 ÷ 70 × 100 = 10.3

Built-in AI24.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

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

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://openrouter.ai/docs/guides/overview/mcp-server.mdThe OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdThe **OpenRouter MCP server** plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages
  • [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.mdOnce connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
  • [probe] https://openrouter.ai/docs/guides/overview/mcp-server.mdofficial MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md

Built-in AI = 4.8 ÷ 20 × 100 = 24.0

Automation0.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

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

Version, review, and roll back my automationsweight 1

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

Automation = 0.0 ÷ 50 × 100 = 0.0