{"apiVersion":"v1","directorySlug":"vetosql-mcp-194fcde523","title":"Veto","description":"A deterministic safety & cost check your AI agent calls before it runs SQL — with stable verdicts you can gate CI on. No LLM in the loop. Never connects to your database.","pageUrl":"https://www.mcpbundles.com/skills/vetosql-mcp-194fcde523","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://vetosql.com/mcp","hostedMcpUrl":null,"toolCount":3,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.vetosql/vetosql-mcp-194fcde523","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"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"},"schema":{"type":"string"},"dialect":{"type":"string","const":"postgres"},"rowCountHints":{"type":"object","additionalProperties":{"type":"number"}}},"additionalProperties":false},"title":"Analyze SQL safety & cost","logicalName":"analyze_sql","displayName":"Analyze SQL safety & cost","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"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"},"action":{"enum":["block","warn"],"type":"string"},"message":{"type":"string"},"operations":{"type":"array","items":{"enum":["select","insert","update","delete","truncate","drop","alter"],"type":"string"}}},"additionalProperties":false}}},"additionalProperties":false},"title":"Set custom org policies (Pro)","logicalName":"set_policies","displayName":"Set custom org policies (Pro)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"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":{}},"title":"Get custom org policies (Pro)","logicalName":"get_policies","displayName":"Get custom org policies (Pro)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Veto&config=eyJ1cmwiOiAiaHR0cHM6Ly92ZXRvc3FsLmNvbS9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Veto%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fvetosql.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Veto%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fvetosql.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Veto&connectorUrl=https%3A%2F%2Fvetosql.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Veto\" --url \"https://vetosql.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/vetosql-mcp-194fcde523","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/vetosql-mcp-194fcde523/tools/{tool}","mcpServerUrl":"https://vetosql.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/vetosql-mcp-194fcde523?live=1"}