ClawLink

How to connect Supabase to Hermes Agent

Connect Supabase to Hermes with ClawLink in one click — 116 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Supabase
Supabase
SupabaseOAUTH2MCP

Query and manage Postgres databases. Once connected, Hermes Agent can read and act on Supabase from chat — pairing, token refresh, and tool wiring handled for you.

116 tools

Most guides for giving Hermes Agent Supabase access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Supabase setup: pair once in the browser and your always-on Hermes agent can act on Supabase for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to Supabase.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Supabase

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Supabase?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect Supabase in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Use supabase_run_read_only_query to return the last 50 rows of my orders table ordered by created_at desc, then summarize what is in them: totals by status, biggest order, and how many are older than 30 days.

Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Supabase is connected in the dashboard, that agent calls the same 116 Supabase tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Supabase MCP for Hermes

Looking for a Supabase MCP server for Hermes Agent? ClawLink connects Supabase to Hermes Agent and exposes 116 Supabase tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Supabase integration works the same way.

The search results for connecting Supabase to Hermes teach a localhost ritual: create a Supabase OAuth app with a website URL of http://localhost, paste the client secret into a .env file, run four hermes config set commands, then hermes mcp reauth supabase. Every step of that exists because the setup is asking you to run your own MCP server. ClawLink connects Supabase to Hermes Agent through Supabase's hosted OAuth instead: you approve in the browser, and 116 tools work from chat with no OAuth app, no callback URL, and no client secret. There are no anon or service_role keys in this flow at all; the connection is an OAuth grant for your Supabase account, and what that means for row-level security is covered in the FAQ before you connect anything.

What the Hermes Agent Supabase integration can do

116 Supabase tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 116.

30 of 116 Supabase tools for Hermes

ToolWhat it does
Beta run SQL query supabase_beta_run_sql_queryExecute a database SQL query
Create function supabase_create_functionCreate a new Edge Function
Deploy function supabase_deploy_functionDeploy an Edge Function
Get function supabase_get_functionRetrieve an Edge Function
Get health supabase_get_healthGet API health status
Get organization supabase_get_organizationGet organization information
Get project supabase_get_projectGet a Supabase project by ref
Get project logs supabase_get_project_logsGet project logs
Get table schemas supabase_get_table_schemasGet table schemas
Gets project s auth config supabase_gets_project_s_auth_configGet project's auth config
List all organizations supabase_list_all_organizationsList all organizations
List all projects supabase_list_all_projectsList all Supabase projects
List backups supabase_list_backupsList project database backups
List database branches supabase_list_database_branchesList database branches
List functions supabase_list_functionsList all Edge Functions
List migration history supabase_list_migration_historyList migration history
List secrets supabase_list_secretsList all project secrets
List tables supabase_list_tablesList database tables
Run read only query supabase_run_read_only_queryExecute a read-only SQL query
Select from table supabase_select_from_tableSelect rows from a table
Alpha get third party integration supabase_alpha_get_third_party_integrationRetrieves the detailed configuration for a specific third-party authentication (TPA) provider
Alpha list third party auth integrations supabase_alpha_list_third_party_auth_integrationsLists all configured third-party authentication provider integrations for an existing Supabase
Beta authorize user through oauth supabase_beta_authorize_user_through_oauthGenerates a Supabase OAuth 2.0 authorization URL for user redirection
Beta check vanity subdomain availability supabase_beta_check_vanity_subdomain_availabilityChecks if a specific vanity subdomain is available for a Supabase project; this action does not
Beta get project custom hostname config supabase_beta_get_project_custom_hostname_configRetrieves a Supabase project's custom hostname configuration, including its status, SSL
Beta get project network bans supabase_beta_get_project_network_bansRetrieves the list of banned IPv4 addresses for a Supabase project using its unique project
Beta get project network restrictions supabase_beta_get_project_network_restrictionsRetrieves the network restriction settings (IP allowlists) for a Supabase project
Beta get project pgsodium config supabase_beta_get_project_pgsodium_configRetrieves the PGSodium configuration, including the root encryption key, for an existing
Beta get project ssl enforcement config supabase_beta_get_project_ssl_enforcement_configRetrieves the SSL enforcement configuration for a specified Supabase project, indicating if SSL
Beta get vanity subdomain config supabase_beta_get_vanity_subdomain_configFetches the current vanity subdomain configuration, including its status and custom domain

Try it: find the Supabase tool you need

Browse the 30 Supabase tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Use supabase_run_read_only_query to return the last 50 rows of my orders table ordered by created_at desc, then summarize what is in them: totals by status, biggest order, and how many are older than 30 days.

Run supabase_list_tables and supabase_get_table_schemas for the tables I mention, and show me the columns and types. Then draft the read-only query you would run and wait for my approval before executing it.

Insert a row into my events table with the fields I give you. If it fails with "new row violates row-level security policy", tell me which policy is missing instead of retrying.

Invoke my edge function with supabase_invoke_edge_function using the payload I paste, and report the status code and response body.

What the 116 Supabase tools cover

The set grouped, with the data access mechanics stated first because they are what the errors hinge on.

  • Data: supabase_run_read_only_query and supabase_select_from_table run as the supabase_read_only_user role with read-only operations; supabase_beta_run_sql_query executes the SQL you send against the project database and is the write-capable path.
  • Edge functions: create, update, deploy, and invoke functions, and read function bodies and logs.
  • Projects and databases: create projects, database branches, read replicas, migrations, point-in-time restore, and project health and upgrade status.
  • Auth and SSO: project auth configuration, SSO providers, third-party auth integrations, and the OAuth token exchange endpoint.
  • Security and keys: read-only views of project API keys and signing keys, network bans and restrictions, and SSL enforcement config.
  • Storage: list buckets, resumable upload options, and upload signing.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Supabase working from chat.

ManualClawLink
Connection flowRegister a Supabase app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Supabase through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Supabase.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Supabase actions to the runtime in a format your agent can reliably use.116 tools for Supabase are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Supabase to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Supabase in the browser, and the 116 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

Hermes paired but still can't use Supabase

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

Connection succeeds but no tools appear

Reconnect Supabase from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Supabase tools

Supabase tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Supabase call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Supabase returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

Supabase returns "new row violates row-level security policy"

This is a Postgres error, and it means the acting role has no policy permitting the insert. Two mechanics trip people up. First, an insert checks both the INSERT policy and the SELECT policy on the table, because Postgres must be able to read back what it wrote; a table with an INSERT policy but no SELECT policy fails on this exact error. Second, the acting role matters: the read tools run as supabase_read_only_user, and a write attempt through supabase_beta_run_sql_query runs as the role the connection maps to, so a policy written for authenticated users may not cover either. The fix is a policy change in the Supabase dashboard, and it is the one error in this list that no reconnect will cure, because the connection is not bypassing RLS on purpose.

Supabase API 401 invalid API key

The manual-flow answers teach key mechanics: wrong key type (anon vs service_role), malformed apikey header, or a key revoked on the dashboard. None of those exist here, because no key is stored on your side. A 401 on a connected account means the OAuth grant is stale: it was revoked in your Supabase account, the refresh failed, or the account was changed. Reconnect Supabase from the ClawLink dashboard to re-run the consent flow and replace the grant. If reads work but one specific tool 401s, check that tool's requirement instead, since some platform endpoints expect project-level access the grant may not carry.

Supabase OAuth "redirect_url not allowed" or "Required parameter: client_secret"

Both of these are errors from the manual MCP + OAuth setup, and their presence is how you can tell which world you are in. "redirect_url not allowed" is Supabase refusing a callback URL that was not registered on the OAuth app, which is exactly the localhost callback pain the search results teach. "Required parameter: client_secret" is the token exchange failing because the secret never made it into the local config, which is the known pain point behind the NousResearch hermes-agent GitHub issue titled "MCP OAuth fails with Supabase". A hosted connection cannot produce either error, because there is no OAuth app to register and no callback URL in the flow. If your agent reports them, you are running a local MCP setup and this page's flow is the alternative.

Supabase MCP tool not found

Search results blame an expired OAuth session, silent authentication failures, or missing access tokens in a local MCP configuration. There is no local MCP configuration here, so the cause is lazy schema loading: Supabase tool schemas hydrate on demand the first time a tool runs, and a call in a fresh chat can arrive before the catalog does. Retrying once resolves it. If the same name fails twice, the name is wrong rather than missing, and the error message lists the closest real tools. Reconnect from the dashboard if every Supabase call keeps failing in a fresh chat.

OAuth finished in the browser but the account is still missing

Try reconnecting Supabase and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Supabase integration?

Yes. ClawLink is the fastest way to connect Hermes to Supabase: link your Supabase account once in the browser and Hermes Agent can call the Supabase API through 116 ready-made tools — no custom code or token handling.

How do I connect Supabase to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Supabase in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect Supabase to Hermes Agent?

About two minutes. Sign in, click Connect next to Supabase in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Supabase up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Supabase working from chat.

Does this use my anon key or service role key?

Neither. The anon key and service_role key are the two credentials of the manual setup: you paste one into an env file and hope it never leaks, and the service_role key in the wrong hands is the danger every safety answer warns about. This connection is an OAuth grant against your Supabase account, so no key string ever sits in a file next to your agent. The data tools use their own narrow roles: supabase_run_read_only_query and supabase_select_from_table execute as the supabase_read_only_user role with read-only operations, and supabase_beta_run_sql_query runs the SQL you send against the project database. There is nothing to leak, because there is no key.

Does row-level security still apply?

Yes, and this is the sentence the engines keep omitting: a connected account does not bypass row-level security. The read tools run as the supabase_read_only_user role, and Postgres applies RLS policies to that role exactly as it does to any other. If a query returns no rows when you expect data, or an insert fails with "new row violates row-level security policy", the missing piece is a policy for that role, not a broken connection. Supabase's default is deny-all when RLS is enabled with no matching policy, so an empty result is frequently the policy working as designed.

Is it safe to connect Supabase to an AI agent?

The standard answer is "yes if you use strict RLS and never expose the service_role key", and this connection removes the second condition by never holding the key in the first place. What you get instead is an account-level grant, which is broader than a narrow database role: the agent can administer projects, deploy edge functions, run migrations, and manage branches through the platform tools, while table data stays guarded by RLS. Treat the connection as admin-level, keep RLS strict, and treat prompt injection the same way you would for any agent that can write: the agent reading a database row is reading text written by someone, and that text can contain instructions aimed at it.

Does this work with a self-hosted Supabase instance?

No. The connection targets supabase.com hosted projects through Supabase's platform OAuth. A self-hosted Supabase instance needs its own database credentials and a network path to it, which this flow does not provide.

Hermes paired but still can't use Supabase

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.