Skip to main content
Glama

Veto — SQL Safety & Cost Oracle

Server Details

Deterministic safety & cost gate that vets Postgres SQL before your AI agent runs it.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 3 of 3 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: analyze_sql for SQL analysis, get_policies for reading policies, set_policies for writing policies. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case: analyze_sql, get_policies, set_policies. No deviations.

Tool Count5/5

With 3 tools, the set is well-scoped for the server's purpose of SQL safety analysis and policy management. Each tool is essential and the count is appropriate.

Completeness5/5

The tool surface covers SQL analysis (analyze_sql) and full CRUD for custom policies (get_policies and set_policies). There are no obvious gaps for the stated purpose.

Available Tools

3 tools
analyze_sqlAnalyze SQL safety & costAInspect

Analyze Postgres SQL/migrations for destructive operations, locking risk, anti-patterns, and query cost. Returns a deterministic verdict (ok/warn/block) with findings. Pass the optional schema argument (your CREATE TABLE/INDEX DDL) to also get EXPLAIN-based cost analysis run on a throwaway scratch Postgres — no separate tool or DB connection needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesThe SQL to analyze (one or more statements).
schemaNoOptional CREATE TABLE/INDEX DDL. Providing it enables EXPLAIN-based cost analysis (seq scans on large tables, etc.) on a throwaway scratch Postgres; omit it for static safety analysis only.
dialectNo
rowCountHintsNoOptional map of table name to estimated row count for realistic cost estimates.
Behavior4/5

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

With no annotations, the description discloses that the tool returns a verdict with findings, that schema enables cost analysis on a throwaway Postgres, and that no separate tool is needed. It implies read-only behavior but could be more explicit about non-destructive nature.

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

Conciseness5/5

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

Two sentences with no wasted words. First sentence states the core purpose; second explains the key optional parameter and its benefit. Front-loaded and efficient.

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?

The description covers the two modes of operation (static vs cost analysis), explains the optional schema and rowCountHints, and mentions the output verdict. Lacks specifics on findings format but is adequate for the tool's complexity.

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

Parameters4/5

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

Schema description coverage is high (75%), and the description adds meaning by explaining that schema enables cost analysis and that rowCountHints affects cost estimates. The dialect is constrained to 'postgres' as per schema.

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?

The description clearly states the tool analyzes Postgres SQL for destructive operations, locking risk, anti-patterns, and query cost, and returns a deterministic verdict. This distinguishes it from sibling tools which are policy-related.

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?

The description explains when to include the optional schema for cost analysis versus static analysis only. It doesn't explicitly compare to siblings, but the context of policy tools makes the use case clear.

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

get_policiesGet custom org policies (Pro)AInspect

Return the custom org policy set currently stored for your Pro key — the same rules analyze_sql enforces on top of the built-ins. Read-only; returns an empty list if none are set. Use set_policies to change them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Discloses read-only behavior and empty list case, but lacks specifics on return format or structure of policies, though context from analyze_sql helps.

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

Conciseness5/5

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

Three sentences, front-loaded purpose, minimal yet informative, no wasted words.

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?

Adequate for a zero-parameter read-only tool; could optionally describe return format, but not essential given sibling context.

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

Parameters4/5

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

No parameters, so schema coverage is 100%; description adds no param info but it is unnecessary.

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?

Clearly states it returns the custom org policy set, explicitly links to analyze_sql, and distinguishes from sibling set_policies.

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

Usage Guidelines5/5

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

Explicitly describes when to use (retrieve current policies), notes read-only nature, and directs to set_policies for changes.

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

set_policiesSet custom org policies (Pro)AInspect

Replace the stored custom org policy set for your Pro key (this is also how you update or clear them: send the full new set to update, or an empty array to remove all). Each policy blocks or warns on an operation against matching tables (e.g. no DELETE on payments). Policies are declarative data — validated, never executed — and apply transparently to every later analyze_sql call made with this key. Use get_policies to read the current set.

ParametersJSON Schema
NameRequiredDescriptionDefault
policiesYesThe full policy set (replaces any previously stored set; max 50).
Behavior4/5

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

With no annotations, the description discloses key behaviors: the tool replaces the entire set, validates policies without executing them, and applies transparently to analyze_sql calls. It also mentions a maximum of 50 policies. It does not address authentication requirements, rate limits, or error handling scenarios.

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

Conciseness5/5

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

The description is concise: four short sentences with clear structure. The first sentence states the core action, the second gives an example of a policy, the third clarifies behavior, and the fourth directs to a sibling. No extraneous content.

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?

Given the complexity of the tool (nested policy objects, no output schema), the description explains the policy concept and its effect on analyze_sql. It mentions the Pro key requirement and validation. It could be more complete by noting the return value or potential errors, but it adequately covers the essential context.

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

Parameters4/5

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

The schema provides full parameter names and types. The description adds semantic value by explaining that an empty array clears all policies, that the set is a replacement, and hints at the 'max 50' constraint. This goes beyond the raw schema.

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?

The description clearly states that the tool replaces, updates, or clears custom org policies for a Pro key. It specifies the verb 'Replace' and the resource 'custom org policy set', and distinguishes from sibling 'get_policies' by directing to read the current set.

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?

The description explains how to update (send full new set) and clear (send empty array) policies, and references analyzing_sql as the context where policies apply. It tells when to use get_policies instead. However, it does not explicitly state when not to use this tool or mention alternatives for non-Pro users.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources