Skip to main content
Glama

GuardLayer

Check a live Supabase project

check_supabase_snapshot
Read-only

Checks the JSON from get_supabase_snapshot_sql: tables anyone can read, RLS off, policies that only check for a signed-in user (public in practice when sign-ups are open), users who can update their own role or plan columns, exposed SECURITY DEFINER functions, public buckets. Pass auth_config (the project's Auth settings) when you can: it decides whether 'any signed-in user' means anyone. Pass previous_issue_keys from an earlier result to see what is closed, still open or new. Returns each issue with its SQL fix and a fix prompt.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "snapshot": "<snapshot>"
    },
    "name": "check_supabase_snapshot"
  }
}

Input Schema

NameRequiredDescriptionDefault
snapshotYesThe single value returned by the snapshot SQL (the guardlayer_snapshot column), as a JSON string or object.
auth_configNoOptional. The project's Auth settings from the Supabase Management API (GET /v1/projects/{ref}/config/auth). Only these fields are read; everything else is dropped: disable_signup, external_email_enabled, external_anonymous_users_enabled, password_hibp_enabled, password_min_length, mailer_autoconfirm, mailer_otp_exp, mailer_secure_email_change_enabled, security_update_password_require_reauthentication, refresh_token_rotation_enabled, security_captcha_enabled, mfa_totp_verify_enabled, mfa_phone_verify_enabled, mfa_web_authn_verify_enabled
previous_issue_keysNoOptional. issue_keys from the previous check of the same project, to confirm which fixes landed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the description's job is context, and it delivers: the auth_config dependency materially changes findings ("it decides whether 'any signed-in user' means anyone"), and it discloses the return shape (each issue comes with a SQL fix and a fix prompt). It stops short of describing issue object fields or limits on snapshot size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the source of input, and every clause maps to a real finding category. The middle sentence is dense with parentheticals but nothing is filler; slightly tighter phrasing of the policy clause would earn a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by saying results pair each issue with a SQL fix and a fix prompt, plus the delta mode. It is adequate for a 3-parameter analysis tool, though it leaves the issue record structure and severity/ordering unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains the analytical consequence of auth_config rather than just restating its field list, and it clarifies that previous_issue_keys yields a closed/still-open/new delta rather than a simple confirmation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Checks") and a specific input ("the JSON from get_supabase_snapshot_sql") and then enumerates exactly what classes of findings it produces: public-read tables, RLS off, weak policies, self-service role/plan escalation, exposed SECURITY DEFINER functions, public buckets. It also distinguishes itself from the sibling by consuming its output rather than producing a snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance for both optional parameters: pass auth_config "when you can" because it changes the verdict, and pass previous_issue_keys "from an earlier result" to get closed/still-open/new classification. It does not state any when-not-to-use case or a hard precondition ordering, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.