Skip to main content
Glama
stand-out-of-my-sun

Diogenes Database Intelligence, SQL Engine & Schema Guard MCP

Database Schema Migration Differ & Breaking Change Linter

detect_breaking_migrations
Read-onlyIdempotent

Compare current and target DDL schemas to detect breaking changes, destructive column drops, and lock-inducing mutations before production deployment, preventing downtime.

Instructions

Compares source and target DDL schemas to identify breaking changes, destructive column drops, and lock-inducing mutations. Use when verifying CI/CD migration scripts before production deployment to prevent downtime; for verifying relational normal form, use validate_schema_normalization instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'current_schema' and 'target_schema' ('risk_tolerance' defaults to 'zero_downtime_strict'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

Input Schema

NameRequiredDescriptionDefault
target_schemaYesProposed new database DDL schema representing target migration state.
current_schemaYesCurrent production database DDL schema representing live tables and columns.
risk_toleranceNoDeployment safety policy: zero downtime strict, allow transient locks, or permissive dev.

Output Schema

NameRequiredDescriptionDefault
risk_levelYesCategorical migration risk assessment (LOW, MEDIUM, HIGH_LOCK_RISK, CRITICAL_DATA_LOSS).
breaking_operationsYesList of destructive changes (e.g., column dropped, non-null without default, type narrowing).
breaking_changes_detectedYesTrue if breaking changes or destructive table mutations were identified.
migration_steps_safe_orderYesRecommended zero-downtime phased rollout steps (expand, migrate, contract).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuinely non-redundant operational traits: statelessness, a 32 KB payload cap, 60 RPM rate limiting, the 'zero_downtime_strict' default, a demo bypass or L402 payment of 15 sats, and HTTP 400 on invalid input. These are failure modes and cost constraints an agent cannot infer from the annotations.

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?

Two sentences, purpose front-loaded, then routing advice, then operational constraints. The second sentence is a dense run-on stacking size limit, rate limit, params, payment, and error code, which makes it slightly harder to scan than it could be, but nothing is wasted.

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

Completeness5/5

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

With an output schema present the description need not explain return values, and it already covers inputs, defaults, alternative tool, limits, and error behavior. Nothing an agent needs to invoke this correctly is missing.

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 coverage is 100%, so the baseline is 3; the description earns above that by disclosing the default value of 'risk_tolerance' ('zero_downtime_strict'), which the schema does not state, and by naming both required inputs. The enum values themselves are still only explained by the 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?

States a precise verb and resource pair ('Compares source and target DDL schemas to identify breaking changes, destructive column drops, and lock-inducing mutations'), and explicitly names the sibling it is not (validate_schema_normalization for normal-form checks). An agent can distinguish this from detect_openapi_breaking_changes and recommend_database_indexes on the description alone.

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?

Gives an explicit trigger ('Use when verifying CI/CD migration scripts before production deployment to prevent downtime') and an explicit exclusion with the correct alternative (validate_schema_normalization for relational normal form). Both when-to-use and when-not-to-use are covered.

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