mcp-registry/com.vetosql/veto · v0.4.0
As of 2026-10-23 22:04 UTC, the Vetosql Veto MCP server is up with a Glimind reliability score of 97/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 15 outages in 90 days, with a median recovery of 3 minutes.
Deterministic safety, correctness & cost gate that vets Postgres SQL before your AI agent runs it.
Claude Code
claude mcp add --transport http vetosql-veto-mcp-server https://vetosql.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"vetosql-veto-mcp-server": {
"type": "http",
"url": "https://vetosql.com/mcp"
}
}
}
Third-party server, listed as discovered. Review its source before installing.
3 of 3 tool(s) carry no readOnlyHint/destructiveHint annotations.
Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →
1 parameter(s) across 1 tool(s) have no description.
Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call. How to fix →
1 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.
Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads. How to fix →
No tool declares an outputSchema.
Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 1 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fcom.vetosql%2Fveto/fixes
{
"name": "analyze_sql",
"description": "Analyze Postgres SQL/migrations for destructive operations, locking risk, correctness traps (NULL handling that silently returns wrong results), 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.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sql"
],
"properties": {
"sql": {
"type": "string",
"description": "The SQL to analyze (one or more statements)."
},
"schema": {
"type": "string",
"description": "Optional 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."
},
"dialect": {
"type": "string",
"const": "postgres"
},
"rowCountHints": {
"type": "object",
"description": "Optional map of table name to estimated row count for realistic cost estimates.",
"additionalProperties": {
"type": "number"
}
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true
},
"title": "Analyze SQL safety & cost"
}{
"name": "get_policies",
"description": "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.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
},
"annotations": {
"readOnlyHint": true
},
"title": "Get custom org policies (Pro)"
}{
"name": "set_policies",
"description": "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.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"policies"
],
"properties": {
"policies": {
"type": "array",
"items": {
"type": "object",
"required": [
"table",
"operations",
"action"
],
"properties": {
"table": {
"type": "string",
"description": "Exact table name or glob, e.g. \"payments\", \"audit_*\", \"*\"."
},
"action": {
"enum": [
"block",
"warn"
],
"type": "string"
},
"message": {
"type": "string",
"description": "Optional human message shown in the finding."
},
"operations": {
"type": "array",
"items": {
"enum": [
"select",
"insert",
"update",
"delete",
"truncate",
"drop",
"alter"
],
"type": "string"
},
"description": "Operations this rule applies to."
}
},
"additionalProperties": false
},
"description": "The full policy set (replaces any previously stored set; max 50)."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true
},
"title": "Set custom org policies (Pro)"
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/com.vetosql/veto"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/com.vetosql/veto"}) over MCP.
set_policies ~357 tokensanalyze_sql ~319 tokensget_policies ~98 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fcom.vetosql%2Fveto?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fcom.vetosql%2Fveto?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.vetosql%2Fveto.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fcom.vetosql%2Fveto.svg :target: https://glimind.com/server/mcp-registry%2Fcom.vetosql%2Fveto?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:9bcde5fca1035b35…, first seen 2026-10-17, included at leaf 4407 of 54,854. Version history · verify what your client received.
Compare: most reliable code servers · most reliable security servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-23 22:04 UTC, the Vetosql Veto MCP server is up with a Glimind reliability score of 97/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 15 outages in 90 days, with a median recovery of 3 minutes.
Vetosql Veto MCP server advertises 3 tools, including analyze_sql, get_policies, set_policies.
Point your MCP client at this streamable-http endpoint: https://vetosql.com/mcp
Glimind scanned all 3 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.