Read-only VibeRaven guides: explain a finding, search launch guides, get a Supabase checklist.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants their Supabase migrations checked for RLS gaps before launch, asks whether the Supabase October 30, 2026 Data API grants change will break their tables, or asks whether a security definer function is callable by anon or by signed-in users. Pass the SQL text: sql for one migration, or files with path and content for several, in the repo's file names. It runs the SQL rules of the VibeRaven 1.6.12 CLI and returns each finding with id, severity, file and line in the text passed, a one-line fix and a guide link. Finding ids: rls_disabled (table without RLS), rls_no_policies (RLS on, no policies), rls_policy_allows_all_read and rls_policy_allows_all_write (using (true) or with check (true) for anon, authenticated or public), security_definer_function_executable (EXECUTE not revoked from anon or authenticated), data_api_grant_without_rls (table granted to anon or authenticated with RLS off), data_api_grant_missing (the browser queries a table that has no grant once default grants are off). data_api_grant_missing needs the migration that revokes default privileges or supabase/config.toml, plus the browser files that call supabase.from(...) (a "use client" file, or src files with package.json for a Vite app). It is a static read of the text passed: it does not connect to the database, does not run the SQL and does not see the rest of the repository. Up to 200 KB in 50 files. The text is processed in memory, not stored and not logged.
The SQL text of one migration file.
Several files: .sql migrations, and optionally supabase/config.toml, package.json and browser code files.
Use this when the user wants their Supabase migrations checked for RLS gaps before launch, asks whether the Supabase October 30, 2026 Data API grants change will break their tables, or asks whether a security definer function is callable by anon or by signed-in users. Pass the SQL text: sql for one migration, or files with path and content for several, in the repo's file names. It runs the SQL rules of the VibeRaven 1.6.12 CLI and returns each finding with id, severity, file and line in the text passed, a one-line fix and a guide link. Finding ids: rls_disabled (table without RLS), rls_no_policies (RLS on, no policies), rls_policy_allows_all_read and rls_policy_allows_all_write (using (true) or with check (true) for anon, authenticated or public), security_definer_function_executable (EXECUTE not revoked from anon or authenticated), data_api_grant_without_rls (table granted to anon or authenticated with RLS off), data_api_grant_missing (the browser queries a table that has no grant once default grants are off). data_api_grant_missing needs the migration that revokes default privileges or supabase/config.toml, plus the browser files that call supabase.from(...) (a "use client" file, or src files with package.json for a Vite app). It is a static read of the text passed: it does not connect to the database, does not run the SQL and does not see the rest of the repository. Up to 200 KB in 50 files. The text is processed in memory, not stored and not logged.
| Argument | Type | Description |
|---|---|---|
| sql | string | The SQL text of one migration file. |
| files | array | Several files: .sql migrations, and optionally supabase/config.toml, package.json and browser code files. |
{
"type": "object",
"properties": {
"sql": {
"type": "string",
"minLength": 1,
"description": "The SQL text of one migration file."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The file path in the repo, for example supabase/migrations/20260101000000_init.sql. Migrations run in file name order."
},
"content": {
"type": "string",
"description": "The full text of the file."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1,
"description": "Several files: .sql migrations, and optionally supabase/config.toml, package.json and browser code files."
}
},
"additionalProperties": false
}Use this when the user asks what a VibeRaven finding id means, for example rls_disabled or env_var_drift, or pastes a finding from a VibeRaven 1.6.12 report. Returns what the rule detects in repository files, why it matters, how to fix it and what it does not check, quoted from viberaven.dev with a source link for each part. It does not read the user's repository, database or Vercel project. Known ids: rls_disabled, rls_no_policies, rls_policy_allows_all_read, rls_policy_allows_all_write, security_definer_function_executable, pooler_port_mismatch, service_role_key_in_client_code, env_var_drift. An unknown id returns found: false and the list of known ids.
| Argument | Type | Description |
|---|---|---|
| gap_id* | string | The finding id as printed by VibeRaven, for example rls_disabled. |
{
"type": "object",
"required": [
"gap_id"
],
"properties": {
"gap_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The finding id as printed by VibeRaven, for example rls_disabled."
}
},
"additionalProperties": false
}Use this when the user wants a manual pre-launch checklist for a Lovable + Supabase app or a Next.js + Supabase app on Vercel. Returns the checklist published on viberaven.dev for that stack with its sources, and the one optional local VibeRaven step (`npx -y [email protected] check`), which is advice, not a gate. The items are manual checks the user does in their dashboards and code; this tool does not run any of them.
| Argument | Type | Description |
|---|---|---|
| stack* | string | lovable-supabase for a Lovable app with Supabase, nextjs-supabase-vercel for a Next.js app with Supabase deployed on Vercel. |
{
"type": "object",
"required": [
"stack"
],
"properties": {
"stack": {
"enum": [
"lovable-supabase",
"nextjs-supabase-vercel"
],
"type": "string",
"description": "lovable-supabase for a Lovable app with Supabase, nextjs-supabase-vercel for a Next.js app with Supabase deployed on Vercel."
}
},
"additionalProperties": false
}Use this when the user has a launch question about an AI-built app on Vercel + Supabase, such as Supabase RLS, env vars on Vercel, a Stripe webhook after deploy or a client handoff. Searches the launch guides published on viberaven.dev by keyword and returns up to 5 matches, each with its title, URL and the short answer from the page. It only searches those published pages: it does not browse the web or read the user's project. No match returns an empty list.
| Argument | Type | Description |
|---|---|---|
| query* | string | A few keywords from the question, for example "supabase tables missing rls". |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A few keywords from the question, for example \"supabase tables missing rls\"."
}
},
"additionalProperties": false
}