execute_postgresql
Execute PostgreSQL queries on Supabase databases with safety controls. Perform read, write, and schema operations, supported by transaction handling and automatic version-controlled migrations. Use UNSAFE mode for write and schema changes; confirm high-risk actions.
Instructions
Execute PostgreSQL statements against your Supabase database.
IMPORTANT: All SQL statements must end with a semicolon (;).
OPERATION TYPES AND REQUIREMENTS:
READ Operations (SELECT, EXPLAIN, etc.):
Can be executed directly without special requirements
Example: SELECT * FROM public.users LIMIT 10;
WRITE Operations (INSERT, UPDATE, DELETE):
Require UNSAFE mode (use live_dangerously('database', True) first)
Example: INSERT INTO public.users (email) VALUES ('user@example.com');
SCHEMA Operations (CREATE, ALTER, DROP):
Require UNSAFE mode (use live_dangerously('database', True) first)
Destructive operations (DROP, TRUNCATE) require additional confirmation
Example: CREATE TABLE public.test_table (id SERIAL PRIMARY KEY, name TEXT);
MIGRATION HANDLING: All queries that modify the database will be automatically version controlled by the server. You can provide optional migration name, if you want to name the migration.
Respect the following format: verb_noun_detail. Be descriptive and concise.
Examples:
create_users_table
add_email_to_profiles
enable_rls_on_users
If you don't provide a migration name, the server will generate one based on the SQL statement
The system will sanitize your provided name to ensure compatibility with database systems
Migration names are prefixed with a timestamp in the format YYYYMMDDHHMMSS
SAFETY SYSTEM: Operations are categorized by risk level:
LOW RISK: Read operations (SELECT, EXPLAIN) - allowed in SAFE mode
MEDIUM RISK: Write operations (INSERT, UPDATE, DELETE) - require UNSAFE mode
HIGH RISK: Schema operations (CREATE, ALTER) - require UNSAFE mode
EXTREME RISK: Destructive operations (DROP, TRUNCATE) - require UNSAFE mode and confirmation
TRANSACTION HANDLING:
DO NOT use transaction control statements (BEGIN, COMMIT, ROLLBACK)
The database client automatically wraps queries in transactions
The SQL validator will reject queries containing transaction control statements
This ensures atomicity and provides rollback capability for data modifications
MULTIPLE STATEMENTS:
You can send multiple SQL statements in a single query
Each statement will be executed in order within the same transaction
Example: CREATE TABLE public.test_table (id SERIAL PRIMARY KEY, name TEXT); INSERT INTO public.test_table (name) VALUES ('test');
CONFIRMATION FLOW FOR HIGH-RISK OPERATIONS:
High-risk operations (DROP TABLE, TRUNCATE, etc.) will be rejected with a confirmation ID
The error message will explain what happened and provide a confirmation ID
Review the risks with the user before proceeding
Use the confirm_destructive_operation tool with the provided ID to execute the operation
IMPORTANT GUIDELINES:
The database client starts in SAFE mode by default for safety
Only enable UNSAFE mode when you need to modify data or schema
Never mix READ and WRITE operations in the same transaction
For destructive operations, be prepared to confirm with the confirm_destructive_operation tool
WHEN TO USE OTHER TOOLS INSTEAD:
For Auth operations (users, authentication, etc.): Use call_auth_admin_method instead of direct SQL The Auth Admin SDK provides safer, validated methods for user management
For project configuration, functions, storage, etc.: Use send_management_api_request The Management API handles Supabase platform features that aren't directly in the database
Note: This tool operates on the PostgreSQL database only. API operations use separate safety controls.
Input Schema
Name | Required | Description | Default |
---|---|---|---|
migration_name | No | ||
query | Yes |