Skip to content

How Supabase’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 Score45/100

Agent-ready 63.7 × 0.30 = 19.11

API quality 44.0 × 0.20 = 8.80

Openness 58.4 × 0.20 = 11.68

Built-in AI 24.4 × 0.15 = 3.66

Automation 11.3 × 0.15 = 1.70

(19.11 + 8.80 + 11.68 + 3.66 + 1.70) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 44.95 ÷ 1.00 = 44.9

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-ready63.7/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://supabase.com/llms.txtPROBE llms.txt: HTTP 200 at https://supabase.com/llms.txt # Supabase Docs For the complete documentation in a single file, see [Full Documentation](https://supabase.com/llms-ful
  • [claimed-docs] https://supabase.com/docsStart with a quickstart guide to connect your project in minutes.
  • [probe] https://supabase.com/docs/guides/ai-tools/mcpofficial MCP server documented at https://supabase.com/docs/guides/ai-tools/mcp

Run the product headlessly / in CI for automationweight 2

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

  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedThe Supabase CLI enables you to run the entire Supabase stack locally, on your machine or in a CI environment.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedWith two commands, you can set up and start a new local project: 1. `supabase init` to create a new local project 2. `supabase start` to launch the Supabase services

Plug MCP servers into this product so it can use their toolsweight 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

Connect an agent via an official MCP serverweight 3

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

  • [claimed-docs] https://supabase.com/docs/guides/ai-tools/mcpOnce connected, your AI assistants can interact with and query your Supabase projects on your behalf.
  • [probe] https://supabase.com/docs/guides/ai-tools/mcpofficial MCP server documented at https://supabase.com/docs/guides/ai-tools/mcp
  • [probe] https://mcp.supabase.com/mcpPROBE mcp-handshake: POST JSON-RPC initialize to https://mcp.supabase.com/mcp → HTTP 401 {"message":"Unauthorized"} — live remote MCP server, auth-gated (hands-on, keyless)
  • [community] https://news.ycombinator.com/item?id=44502318Supabase engineer: 'A few weeks ago we added mitigations to help with prompt injections - encourage read-only by default, wrap SQL responses with prompting that discourages following injected instructions, and E2E tests... this significantly lowered the chances of LLMs falling for attacks.'
  • [community] https://news.ycombinator.com/item?id=44502318The cursor assistant operates the Supabase database with elevated access via the service_role, which bypasses all row-level security (RLS) protections. This is too bad.

Use an official CLIweight 2

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

  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedThe Supabase CLI enables you to run the entire Supabase stack locally, on your machine or in a CI environment.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedofficial CLI documented at https://supabase.com/docs/guides/local-development/cli/getting-started
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedWith two commands, you can set up and start a new local project: 1. supabase init to create a new local project 2. supabase start to launch the Supabase services

Drive the product through a documented public APIweight 3

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

  • [claimed-docs] https://supabase.comInstant ready-to-use REST APIs.
  • [github] https://github.com/supabase/supabaseAuto-generated APIs. - [x] REST. [Docs] - [x] GraphQL. [Docs] - [x] Realtime subscriptions.
  • [probe] https://supabase.com/openapi.jsonPROBE openapi: HTTP 200 at https://supabase.com/openapi.json — contains "openapi" key
  • [claimed-docs] https://supabase.com/docs/guides/api/rest/generating-typesSupabase APIs are generated from your database, which means that we can use database introspection to generate type-safe API definitions.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [claimed-docs] https://supabase.com/docs/guides/ai-tools/mcpyour AI assistants can interact with and query your Supabase projects on your behalf.

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

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

  • [claimed-docs] https://supabase.com/docs/guides/database/postgres/row-level-securityPostgres Row Level Security (RLS) gives you granular authorization rules that run inside the database.
  • [claimed-docs] https://supabase.com/docs/guides/database/postgres/row-level-securitycreate policy "Individuals can view their own todos." on todos for select to authenticated using ( (select auth.uid()) = user_id );
  • [community] https://news.ycombinator.com/item?id=44502318Supabase engineer: 'A few weeks ago we added mitigations to help with prompt injections - encourage read-only by default, wrap SQL responses with prompting that discourages following injected instructions, and E2E tests... this significantly lowered the chances of LLMs falling for attacks.'
  • [community] https://news.ycombinator.com/item?id=44502318The cursor assistant operates the Supabase database with elevated access via the service_role, which bypasses all row-level security (RLS) protections. This is too bad.
  • [probe] https://mcp.supabase.com/mcpPROBE mcp-handshake: POST JSON-RPC initialize to https://mcp.supabase.com/mcp → HTTP 401 {"message":"Unauthorized"} — live remote MCP server, auth-gated (hands-on, keyless)

Build against official SDKsweight 2

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

  • [claimed-docs] https://supabase.com/docs/guides/api/rest/generating-typesGenerate types for your project to produce the `database.types.ts` file
  • [claimed-docs] https://supabase.com/docs/guides/api/rest/generating-typesSupabase APIs are generated from your database, which means that we can use database introspection to generate type-safe API definitions.
  • [github] https://github.com/supabase/supabaseAuto-generated APIs. - [x] REST. [Docs] - [x] GraphQL. [Docs] - [x] Realtime subscriptions.
  • [claimed-docs] https://supabase.com/docsStart with a quickstart guide to connect your project in minutes.
  • [claimed-docs] https://supabase.comInstant ready-to-use REST APIs.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedofficial CLI documented at https://supabase.com/docs/guides/local-development/cli/getting-started
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)

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 = 114.6 ÷ 180 × 100 = 63.7

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

  • [probe] https://supabase.com/openapi.jsonPROBE openapi: HTTP 200 at https://supabase.com/openapi.json — contains "openapi" key
  • [claimed-docs] https://supabase.comInstant ready-to-use REST APIs.
  • [claimed-docs] https://supabase.comInstant ready-to-use **REST APIs**.
  • [github] https://github.com/supabase/supabaseAuto-generated APIs. - [x] REST. [Docs] - [x] GraphQL. [Docs] - [x] Realtime subscriptions.

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://supabase.com/openapi.jsonPROBE openapi: HTTP 200 at https://supabase.com/openapi.json — contains "openapi" key
  • [claimed-docs] https://supabase.comInstant ready-to-use REST APIs.
  • [claimed-docs] https://supabase.com/docs/guides/api/rest/generating-typesSupabase APIs are generated from your database, which means that we can use database introspection to generate type-safe API definitions.
  • [github] https://github.com/supabase/supabaseAuto-generated APIs. - [x] REST. [Docs] - [x] GraphQL. [Docs] - [x] Realtime subscriptions.

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 8 (quality) × 1.0 (full) = 8.0 of 10 max

  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingYou can use these branching environments to create and test changes like new configurations, database schemas, or features without affecting your production setup.
  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingSupabase branches create separate environments that spin off from your main project. You can use these branching environments to create and test changes like new configurations, database schemas, or features without affecting your production setup.
  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingSupabase branches create separate environments that spin off from your main project.
  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedThe Supabase CLI enables you to run the entire Supabase stack locally, on your machine or in a CI environment.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [community] https://news.ycombinator.com/item?id=36004925The local development & database migration story is Supabase's biggest weakness. I hate having to do migrations live in prod. The admin dashboard is just so much better than any alternative Postgres tooling that it's been worth using despite that.

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 = 30.8 ÷ 70 × 100 = 44.0

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

  • [claimed-docs] https://supabase.comInstant ready-to-use REST APIs.
  • [github] https://github.com/supabase/supabaseAuto-generated APIs. - [x] REST. [Docs] - [x] GraphQL. [Docs] - [x] Realtime subscriptions.
  • [probe] https://supabase.com/openapi.jsonPROBE openapi: HTTP 200 at https://supabase.com/openapi.json — contains "openapi" key
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedofficial CLI documented at https://supabase.com/docs/guides/local-development/cli/getting-started
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE cli-runtime: npx -y supabase --version → "2.116.0" — official Supabase CLI installs from npm and runs headlessly (hands-on, keyless)
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [community] https://news.ycombinator.com/item?id=36004925I also ended up with 3 user tables due to RLS limitations: auth users, public user profile info, and private user info... PostgREST's limitations also had me going back to an API server architecture.
  • [community] https://news.ycombinator.com/item?id=36004925The Supabase CLI is updated every single time I run `brew upgrade`. It makes me feel like I'm trying to swing a bat around, except it's made of water.

Export all of my data in open formats and leaveweight 3

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

  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements that prevent you from using managed services, or want to run Supabase in an isolated environment.
  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements...
  • [github] https://github.com/supabase/supabaseWe're building the features of Firebase using enterprise-grade open source tools.
  • [community] https://news.ycombinator.com/item?id=40083807How easy is it to self host Supabase? Is it more like 'we're open-source, but good luck getting this deployed!'... I wonder if people are doing that.

Read the product's source under an open licenseweight 2

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

  • [github] https://github.com/supabase/supabaseWe're building the features of Firebase using enterprise-grade open source tools.
  • [github] https://github.com/supabase/supabaseOur aim is to give developers a Firebase-like developer experience using open source tools.
  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements that prevent you from using managed services, or want to run Supabase in an isolated environment.
  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements...

Self-host the core productweight 3

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

  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements that prevent you from using managed services, or want to run Supabase in an isolated environment.
  • [claimed-docs] https://supabase.com/docs/guides/self-hostingSelf-hosting is a good fit if you need full control over your data, have compliance requirements...
  • [claimed-docs] https://supabase.com/docs/guides/local-development/cli/getting-startedThe Supabase CLI enables you to run the entire Supabase stack locally, on your machine or in a CI environment.
  • [probe] https://supabase.com/docs/guides/local-development/cli/getting-startedPROBE headless-init: npx supabase init in an empty directory scaffolds supabase/config.toml with no login or key — an agent can provision a local project entirely from a script (hands-on)
  • [community] https://news.ycombinator.com/item?id=40083807How easy is it to self host Supabase? Is it more like 'we're open-source, but good luck getting this deployed!'... I wonder if people are doing that.

Openness = 58.4 ÷ 100 × 100 = 58.4

Built-in AI24.4/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) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://supabase.com/docs/guides/ai-tools/mcpOnce connected, your AI assistants can interact with and query your Supabase projects on your behalf.
  • [claimed-docs] https://supabase.com/docs/guides/aiSupabase provides an open source toolkit for developing AI applications using Postgres and pgvector.
  • [probe] https://supabase.com/docs/guides/ai-tools/mcpofficial MCP server documented at https://supabase.com/docs/guides/ai-tools/mcp
  • [probe] https://mcp.supabase.com/mcpPROBE mcp-handshake: POST JSON-RPC initialize to https://mcp.supabase.com/mcp → HTTP 401 {"message":"Unauthorized"} — live remote MCP server, auth-gated (hands-on, keyless)

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) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

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

Operate the product with natural-language commandsweight 2

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

  • [claimed-docs] https://supabase.com/docs/guides/ai-tools/mcpOnce connected, your AI assistants can interact with and query your Supabase projects on your behalf.
  • [claimed-docs] https://supabase.com/docs/guides/ai-tools/mcpyour AI assistants can interact with and query your Supabase projects on your behalf.
  • [probe] https://supabase.com/docs/guides/ai-tools/mcpofficial MCP server documented at https://supabase.com/docs/guides/ai-tools/mcp
  • [probe] https://mcp.supabase.com/mcpPROBE mcp-handshake: POST JSON-RPC initialize to https://mcp.supabase.com/mcp → HTTP 401 {"message":"Unauthorized"} — live remote MCP server, auth-gated (hands-on, keyless)
  • [community] https://news.ycombinator.com/item?id=44502318Supabase engineer: 'A few weeks ago we added mitigations to help with prompt injections - encourage read-only by default, wrap SQL responses with prompting that discourages following injected instructions, and E2E tests... this significantly lowered the chances of LLMs falling for attacks.'
  • [community] https://news.ycombinator.com/item?id=44502318The cursor assistant operates the Supabase database with elevated access via the service_role, which bypasses all row-level security (RLS) protections. This is too bad.

Built-in AI = 22.0 ÷ 90 × 100 = 24.4

Automation11.3/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) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max

  • [claimed-docs] https://supabase.com/docs/guides/realtimeBroadcast: Send low-latency messages between clients... Presence: Track and synchronize user state across clients... Postgres Changes: Listen to database changes in real-time.
  • [claimed-docs] https://supabase.com/docs/guides/functionsEdge Functions are server-side TypeScript functions, distributed globally at the edge—close to your users.
  • [claimed-docs] https://supabase.com/docs/guides/realtimeBroadcast: Send low-latency messages between clients. Perfect for real-time messaging, database changes, cursor tracking, game events, and custom notifications.
  • [claimed-docs] https://supabase.com/docs/guides/realtimePresence: Track and synchronize user state across clients. Ideal for showing who's online, or active participants.

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) × 3 (quality) × 0.6 (partial) = 1.8 of 10 max

  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingYou can use these branching environments to create and test changes like new configurations, database schemas, or features without affecting your production setup.
  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingSupabase branches create separate environments that spin off from your main project. You can use these branching environments to create and test changes like new configurations, database schemas, or features without affecting your production setup.
  • [claimed-docs] https://supabase.com/docs/guides/deployment/branchingSupabase branches create separate environments that spin off from your main project.

Automation = 9.0 ÷ 80 × 100 = 11.3