Published 2026-09-22 · Tested 2026-09-22

Supabase

A

Supabase received 12 PASS votes and passed 5 of five agent surface checks. The clearest finding came from the verify a webhook task.

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Read as markdown (opens in a new tab)

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Supabase’s public documentation independently and attempted five first-hour developer jobs: query the first table, find the exact limits, recover from a policy denial, verify a webhook, use the JavaScript client.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check. Preflight substitutions: T3: A documented 42501 row-level security denial replaces HTTP 429 because the database and client documentation states no request rate limit.

Freshness

How rechecks work
Tested
Quotes verified
Surface rechecked
Not yet rechecked
Supabase Custom Next.js · published
A

96.2% · 77/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt PASS
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Query the first table PASSPASSPASS PASS
Find the exact limits PARTIALPASSPASS PASS
Recover from a policy denial PASSPASSPASS PASS
Verify a webhook PASSPARTIALPARTIAL PARTIAL
Use the JavaScript client PASSPASSPASS PASS

docs platform: Custom Next.js (unscored) · verified 2026-09-22

What to fix first

This fix could add up to 2 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works

  1. 1
    +2 points Verify a webhook PARTIAL

    Found: The Database Webhooks page documents creation and the insert payload but names no signing secret, signature header, or procedure for verifying who sent a delivery.

    Fix: Document on the Database Webhooks page how a receiver authenticates a delivery, and carry the Dashboard steps through the URL and HTTP headers fields.

    Evidence: supabase.com/docs/guides/database/webhooks (opens in a new tab)

What the docs get right

  • Query the first table: 3 PASS votes. The React quickstart covers project creation, seeded table setup, RLS, client initialization, selection, and browser output.
  • Recover from a policy denial: 3 PASS votes. The 42501 troubleshooting page identifies RLS insert denials, while the RLS guide supplies grants, an insert policy, and tests.
  • 5 of 5 agent surface checks. Present: llms.txt, llms-full.txt, markdown mirrors, an MCP server, docs AI.

Query the first table

PASS

PASS consensus from 3 PASS.

The React quickstart covers project creation, seeded table setup, RLS, client initialization, selection, and browser output. One numbered page carries the whole path from project creation through the SQL that creates the table, grants, and the RLS policy, to createClient and a supabase.from('instruments').select() call rendered on the page. The React quickstart walks from project creation through SQL Editor table creation, RLS policy, Vite scaffolding, supabase-js install, client init, and a select query in one linear page.

Find the exact limits

PASS

PASS consensus from 2 PASS, 1 PARTIAL.

Database counts end at 16XL; Realtime limits and billing quotas use separate scopes, leaving 24XL and 48XL connection counts undocumented. A single table gives Database Max Connections and Connection Pooler Max Clients for all eleven compute sizes (Nano 60/200 through 16XL 500/12,000), and the pooling page names which limit each number governs without restating any value. Connection limits per compute size are listed in a single table with footnoted caveats. Plan-level quotas (MAU, egress, bandwidth) are on the pricing page and cover different scopes; no contradictory numbers were found.

Recover from a policy denial

PASS

PASS consensus from 3 PASS.

The 42501 troubleshooting page identifies RLS insert denials, while the RLS guide supplies grants, an insert policy, and tests. A dedicated 42501 page enumerates five causes with a log query and grant-inspection SQL, and the RLS guide supplies the with check insert-policy form plus pgTAP tests that assert the denial. The RLS page explains the grant-vs-policy distinction and pinpoints 42501 as a missing-grant indicator. A dedicated troubleshooting page for 42501 lists the three causes (missing privilege, restricted schema, column access) with SQL fixes. The error codes reference confirms 42501 maps to 'insufficient privileges' with HTTP 401/403.

Verify a webhook

PARTIAL

PARTIAL consensus from 1 PASS, 2 PARTIAL.

The push example shows the insert trigger, receiver payload parsing, secret-key validation, auth-header setup, and a test insert. Creation and the INSERT payload shape are documented, but no page states how a delivery is authenticated: there is no signing secret, signature header, or verification procedure, and the Dashboard steps stop at selecting events without reaching the URL or headers fields. Creating the webhook (via Dashboard or SQL) and the payload shape are documented. However, delivery authentication is not covered: no webhook signing secret, HMAC signature header, or verification procedure is described, so an agent cannot confirm who sent the payload.

Use the JavaScript client

PASS

PASS consensus from 3 PASS.

The API quickstart aligns cURL and JavaScript reads; the JavaScript reference .md URL failed to load. The reference gives await supabase.from('characters').select() and the Data REST API guide describes the same surface as PostgREST at https://<project_ref>.supabase.co/rest/v1/, with both the reference and the quickstart using the publishable key. The JS select reference gives a minimal example. The API overview (rest/v1/) and SQL-to-API page confirm the REST endpoint mapping. The React quickstart uses the same pattern to query an instruments table, matching the REST form shown in the API quickstart's curl and browser examples.

The receipt

We currently support HTTP webhooks. These can be sent as POST or GET requests with a JSON payload.

Creation and the INSERT payload shape are documented, but no page states how a delivery is authenticated: there is no signing secret, signature header, or verification procedure, and the Dashboard steps stop at selecting events without reaching the URL or headers fields.

Agent surface notes

Initialize returned HTTP 401 with WWW-Authenticate Bearer and resource_metadata naming the resource Supabase MCP (Beta).

Opening the docs command menu and choosing Ask Supabase AI revealed an "Ask Supabase AI a question..." input.

Show the score

AI Agent Readiness Score 96.2%, grade A

Paste this into a readme:

[![AI Agent Readiness Score 96.2%](https://docsforagents.com/badge/supabase.svg)](https://docsforagents.com/reports/supabase-docs-ai-agent-readiness/)

Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-22.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site