Overview
Add Supabase to any ModuleX agent or workflow. Open-source Firebase alternative providing a Postgres database, authentication, instant APIs, and realtime subscriptions via the Supabase PostgREST API (https://<subdomain>.supabase.co/rest/v1/).
Categories : Databases · Database · Backend · Developer Tools & Infrastructure · Auth : Supabase Service Key · Actions : 8
Authentication
Supabase Service Key
Authenticate using your Supabase project subdomain and service role key
Step 2
Navigate to Project Settings > API
Step 3
Copy your Project URL subdomain (the part before .supabase.co)
Step 4
Copy the service_role key (NOT the anon key)
Step 5
Paste both values below
Required Credentials
Field Description Required Format Project Subdomain Your Supabase project subdomain (the part before .supabase.co in your project URL) Yes abcdefghijklmnopqrstService Role Key Your Supabase service_role key from Project Settings > API Yes eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Available Actions
select_row — Select row(s) from a Supabase database table with optional filtering and ordering
Parameters Name of the table to query
Column name to filter by (required if filter and value are provided)
Filter operator: eq, neq, gt, gte, lt, lte, like, ilike
Value to filter the column by
Column name to order results by
Sort direction: ascending or descending (Default: ascending)
Maximum number of rows to return (Default: 20)
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"count" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Count"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "SelectRowOutput" ,
"type" : "object"
}
insert_row — Insert a new row into a Supabase database table
Parameters Name of the table to insert into
Column names and values as key/value pairs for the new row
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "InsertRowOutput" ,
"type" : "object"
}
update_row — Update row(s) in a Supabase database table matching a column value
Parameters Name of the table to update
Column name to match rows for update
Value to match in the specified column
Column names and new values as key/value pairs
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "UpdateRowOutput" ,
"type" : "object"
}
upsert_row — Insert a row or update it if it already exists in a Supabase database table
Parameters Name of the table to upsert into
Column names and values as key/value pairs
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "UpsertRowOutput" ,
"type" : "object"
}
delete_row — Delete row(s) from a Supabase database table matching a column value
Parameters Name of the table to delete from
Column name to match rows for deletion
Value to match in the specified column
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "DeleteRowOutput" ,
"type" : "object"
}
batch_insert_rows — Insert multiple rows into a Supabase database table at once
Parameters Name of the table to insert rows into
Array of objects, each representing a row with column names and values as key/value pairs
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"items" : {
"additionalProperties" : true ,
"type" : "object"
},
"title" : "Data" ,
"type" : "array"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "BatchInsertRowsOutput" ,
"type" : "object"
}
remote_procedure_call — Call a Postgres function (RPC) in a Supabase database
Parameters Name of the Postgres function to call
Arguments to pass to the function as key/value pairs
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"data" : {
"default" : null ,
"title" : "Data"
},
"status" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status"
},
"status_text" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Status Text"
}
},
"required" : [
"success"
],
"title" : "RemoteProcedureCallOutput" ,
"type" : "object"
}
count_rows — Count rows in a Supabase database table with optional filtering
Parameters Name of the table to count rows from
Column name to filter by (optional)
Filter operator: eq, neq, gt, gte, lt, lte, like, ilike
Value to filter the column by
Response {
"additionalProperties" : false ,
"properties" : {
"success" : {
"title" : "Success" ,
"type" : "boolean"
},
"error" : {
"anyOf" : [
{
"type" : "string"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Error"
},
"count" : {
"anyOf" : [
{
"type" : "integer"
},
{
"type" : "null"
}
],
"default" : null ,
"title" : "Count"
}
},
"required" : [
"success"
],
"title" : "CountRowsOutput" ,
"type" : "object"
}
Limits & Quotas
Free tier : 500 MB database, 2 GB bandwidth, 50 MB file storage.
Pro tier : 8 GB database, 250 GB bandwidth, 100 GB file storage.
Rate limits : Supabase does not publish hard API rate limits; PostgREST is limited by connection pool size (default: 60 connections on free tier, higher on paid plans).
Error model : non-2xx responses and timeouts are caught and returned as success=False + error rather than raising.
Links