Editing content in Supabase means a SQL console and a steady hand, or a service-role script that bypasses Row-Level Security and writes with no review at all. Cursor would rather have a folder, and you would rather read a diff. The pass you want, trim every blurb to 60 words and fill the empty meta_description, should not be a raw UPDATE against production.
Scratch pulls a table down, one file per row. Cursor edits the prose columns on your laptop; Scratch shows each change as a diff; it commits only the rows you approve, through the standard Postgres driver. Keys, constraints, and the auth and storage schemas stay untouched, so the parts of the database you cannot afford to nudge never enter the picture.
How it works
- Scratch pulls a table into files. Pick a table and each row becomes a local file on your laptop, prose columns laid out to edit.
- Cursor edits the rows. Open the folder in Cursor. Cmd+K a few rows to settle the prompt, then turn on Agent mode for the table. Rewrite every product blurb to under 60 words and fill the empty meta_description column. Cursor works the files, never the live table.
- You review every diff and publish. Scratch shows each changed column beside the original, word by word. Approve what holds up, and Scratch updates only those rows through the Postgres driver.
What people use it for
The content edits that turn into hand-written SQL because there is no CMS in front:
- Rewrite product copy or blog posts that live straight in the database.
- Fill empty meta_description, slug, or title columns across a content table.
- Trim every blurb to the length your UI actually expects.
- Normalize a JSONB content field across rows.
- Clean a knowledge-base table before it backs search.
Cmd+K 50 rows to feel the loop, then let Agent mode take the table.
Why not an MCP server?
A Supabase MCP server, or a service-role script, hands Cursor a live connection to your database. One bad query rewrites every row at once, with no review in between and Row-Level Security bypassed.
Scratch gives Cursor the same full read and write access against a local copy instead. The write-back is lifted out and handed to you. Cursor can change anything; only you can commit it. On a production database, that gap is the whole point.
What Cursor edits in Supabase
- Text and rich-text columns in any user-defined table
- JSON and JSONB columns
- Slug, title, and description fields
- Row-level edits, no schema changes
Primary keys, foreign keys, timestamps, computed columns, and check constraints stay where they are. The auth and storage schemas are excluded from discovery, so user accounts and uploaded files are out of scope, and validators enforce your column constraints so Cursor cannot write a value the database would reject. The full picture lives on Scratch for Supabase.
Questions people ask
Is this an MCP server or a direct database connection?
Neither. An MCP or a service-role script hands Cursor a live write path to your database. Scratch keeps it. Cursor gets the same access, and writing back is a separate step you approve, one row at a time.
Does it change my schema or my keys?
No. Primary keys, foreign keys, timestamps, computed columns, and check constraints stay locked, and the auth and storage schemas are excluded entirely. Cursor edits content columns only, and validators reject anything the database would.
Can I roll a change back after it writes?
Yes. Scratch keeps the original beside the rewrite, so every written row reverts per row. You decide which version stays.
How is this different from a raw UPDATE or a migration?
A hand-written UPDATE does exactly what you spelled out and nothing smarter, and it writes straight to the live table with no row-by-row review. Cursor handles the rows a single statement cannot, and Scratch still holds every change for review before it commits.
Can it handle a whole table?
Yes, that is the use case. Cmd+K 50 rows to feel the flow, then let Agent mode take the whole table.
Do I need to be technical?
Connecting Supabase takes a connection string, so the setup is a developer step. After that the loop is the same as any Scratch source: edit in Cursor, then approve the diffs.
See it on your own table
The fastest way to trust it is to watch it run on your data. See it run on your Supabase tables →, or download Scratch free and take the first pass yourself.