{
 "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
 "name": "com.clawhard/deadbolt",
 "title": "Deadbolt",
 "version": "1.0.0",
 "description": "Deadbolt checks Supabase access control. Paste migration SQL or a read-only catalog snapshot and get a per-table matrix of what signed-out and signed-in users can read and write, the leaks ranked by severity, and the fix SQL. Runs in your browser, no account.",
 "websiteUrl": "https://deadbolt.clawhard.com",
 "documentationUrl": "https://deadbolt.clawhard.com/llms.txt",
 "iconUrl": "https://clawhard.com/icon-512.png",
 "serverInfo": {
  "name": "com.clawhard/deadbolt",
  "title": "Deadbolt",
  "version": "1.0.0"
 },
 "protocolVersion": "2025-06-18",
 "transport": "streamable-http",
 "endpoint": "https://deadbolt.clawhard.com/mcp",
 "remotes": [
  {
   "type": "streamable-http",
   "url": "https://deadbolt.clawhard.com/mcp"
  }
 ],
 "authentication": {
  "required": false
 },
 "capabilities": {
  "tools": {
   "listChanged": false
  },
  "prompts": {
   "listChanged": false
  },
  "resources": {
   "subscribe": false,
   "listChanged": false
  }
 },
 "tools": [
  {
   "name": "deadbolt_check_supabase_access",
   "title": "Check who can read and write Supabase tables (RLS, policies, grants)",
   "description": "Use when you write, review or are about to apply Supabase / PostgreSQL migration SQL (CREATE TABLE, RLS, CREATE POLICY, GRANT, views, SECURITY DEFINER functions, storage buckets), or when a user asks whether their Supabase data is exposed, whether RLS is set up right, or why a query returns 42501 permission denied or no rows. Replays the SQL with real Postgres rules and returns, per table, what signed-out (anon) and signed-in (authenticated) users can SELECT/INSERT/UPDATE/DELETE (all rows, own rows, some rows, none, or denied for a missing grant), plus findings with severity and ready-to-run fix SQL: RLS off, policies written but RLS never enabled, using(true) writes, personal columns readable by anyone, views that bypass RLS, SECURITY DEFINER functions anyone can call, user_metadata in policies, public bucket listing, grants missing after the Oct 30 2026 default change. Also accepts the JSON produced by deadbolt_catalog_query for the live database. Deterministic; never connects to any database. Run it before telling a user their schema is safe. Up to 200,000 characters."
  },
  {
   "name": "deadbolt_catalog_query",
   "title": "Get the read-only SQL that snapshots a live Supabase database for Deadbolt",
   "description": "Use when you need to check a live Supabase project rather than migration files: returns a read-only SQL query that reads table RLS settings, grants for anon and authenticated, policies, SECURITY DEFINER functions and storage buckets (never row data) and returns one JSON value. Run it with the user's Supabase SQL Editor or a Supabase MCP execute_sql tool, then pass the JSON to deadbolt_check_supabase_access."
  }
 ],
 "prompts": [
  {
   "name": "deadbolt_audit_supabase",
   "title": "Audit Supabase access",
   "description": "Check migration SQL for who can read and write each table, list the leaks and give the fix SQL."
  }
 ],
 "publisher": {
  "name": "Clawhard Studio",
  "url": "https://clawhard.com",
  "contact": "support@clawhard.com"
 }
}