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.txt“PROBE 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.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [probe] https://openrouter.ai/docs/guides/overview/mcp-server.md“official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md”
- [claimed-docs] https://openrouter.ai/docs/guides/overview/mcp-server.md“The 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.md“OpenRouter 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.md“You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.”
- [claimed-docs] https://openrouter.ai/docs/quickstart.md“You 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.md“The 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/models“PROBE 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.json“PROBE 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.md“The 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.md“The **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.md“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.”
- [probe] https://openrouter.ai/docs/guides/overview/mcp-server.md“official MCP server documented at https://openrouter.ai/docs/guides/overview/mcp-server.md”
- [claimed-docs] https://openrouter.ai/docs/guides/features/tool-calling.md“OpenRouter 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.md“The 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.md“The **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.md“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.”
- [probe] https://openrouter.ai/docs/guides/overview/mcp-server.md“official 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/docs“OpenRouter gives you access to hundreds of AI models through a single API endpoint.”
- [claimed-docs] https://openrouter.ai/docs/api_reference/streaming.md“The 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.md“OpenRouter 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/docs“Browse 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.txt“PROBE 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.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [probe] https://openrouter.ai/api/v1/models“PROBE 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=49364559“Happy 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=48338660“One 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.md“OpenRouter 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.md“Workspace 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=48338660“They 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=48338660“One 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.md“You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement.”
- [claimed-docs] https://openrouter.ai/docs/quickstart.md“You can also use the [OpenAI SDK](#using-the-openai-sdk) pointed at OpenRouter as a drop-in replacement.”
- [probe] https://openrouter.ai/openapi.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [claimed-docs] https://openrouter.ai/docs“You 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/docs“You can use the interactive Request Builder to generate OpenRouter API requests in the language of your choice.”
- [probe] https://openrouter.ai/openapi.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [claimed-docs] https://openrouter.ai/docs“Browse 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.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [probe] https://openrouter.ai/llms.txt“PROBE 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/docs“You 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.md“OpenRouter 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.md“Workspace 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.md“You 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.md“You can customize how your requests are routed using the `provider` object in the request body for [Chat Completions]”
- [claimed-docs] https://openrouter.ai/docs“Browse 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.json“PROBE openapi: HTTP 200 at https://openrouter.ai/openapi.json — contains "openapi" key”
- [probe] https://openrouter.ai/api/v1/models“PROBE 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=48338660“One 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.md“The 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.md“The **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.md“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.”
- [probe] https://openrouter.ai/docs/guides/overview/mcp-server.md“official 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