{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_8n95pf399ycm","handle":"safe-migrations-mcp","url":"https://wellknown.network/agents/safe-migrations-mcp","links":{"self":"https://wellknown.network/agents/safe-migrations-mcp/record.json","html":"https://wellknown.network/agents/safe-migrations-mcp","markdown":"https://wellknown.network/agents/safe-migrations-mcp/record.md","api":"https://wellknown.network/api/v1/agents/safe-migrations-mcp","status":"https://wellknown.network/api/v1/agents/safe-migrations-mcp/status","claim":"https://wellknown.network/agents/safe-migrations-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/safe-migrations-mcp/claim.json","badge":"https://wellknown.network/agents/safe-migrations-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:safe-migrations-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"safe-migrations-mcp","summary":"MCP server that stops AI agents from breaking DB schemas and config files. Diff, risk-flag, and require explicit confirmation before any write.","description":"# Safe Migrations MCP\n\n**The safety layer the agent ecosystem needs.**\n\nStops Claude Code, Cursor, OpenClaw, and other AI coding agents from quietly breaking your database schema or config files.\n\nEvery proposed change is diffed, risk-flagged, and requires a fresh simulation-issued confirmation token before a single byte is written.\n\nAn MCP server that gives AI coding agents a safe, auditable, human-in-the-loop way to propose and execute DB schema changes **and** everyday config edits — the exact class of change that silently corrupts production when an agent gets overconfident.\n\n---\n\n## Why this exists\n\nAgents are great at *proposing* changes and terrible at *understanding the\nblast radius* of those changes. A one-word YAML typo, a helpful `DROP COLUMN`,\na missing `WHERE` in an `UPDATE` — any of these can take a project down while\nthe agent cheerfully reports success.\n\nSafe Migrations MCP puts a mandatory checkpoint between the agent and your\ndisk:\n\n1. **Propose** — agent sends an intent (natural language or raw SQL, or a\n   new config file); server returns a `proposal_id` plus a redacted preview\n   and SHA-256 hash of the SQL/edit and its rollback. Full payload is stored\n   server-side, never echoed back.\n2. **Simulate** — dry-run inside a rolled-back transaction; count affected\n   rows; surface every DROP, TRUNCATE, NOT-NULL-without-default, secret-key\n   removal, etc. On success, returns a one-time `confirmation_token` bound\n   to the proposal's fingerprint.\n3. **Apply** — only runs with that fresh `confirmation_token`. Snapshots\n   the file or DB first. Logs everything to an append-only audit trail.\n\nLocal-first. Zero cloud dependency. ~2k LOC of Python, hardened against the usual footguns (symlink writes, silent SQLite creation, MySQL DDL auto-commit, token replay, secret leakage in diffs).\n\nBorn from watching an OpenClaw agent break its own config file trying to make a \"small\" change. The fix is universal: any agent that can edit anything should have to slow…","publisher":{"name":"Gavin May","url":null},"homepage":"https://github.com/possibly6/safe-migrations-mcp","repository":"https://github.com/possibly6/safe-migrations-mcp","version":"0.1.0","license":"MIT","protocols":["mcp"],"tags":["claude","config","cursor","database","mcp","migrations","safety"],"pricing":null,"endpoints":[{"url":"pypi:safe-migrations-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"code.refactoring","name":"Refactoring","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":1,"provenance":"declared"}],"categories":["code","data"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"safe-migrations-mcp","registry":"pypi","observedAt":"2026-09-10T11:28:40.457Z","publishedAt":"2026-04-14T20:54:47.879651Z","latestVersion":"0.1.0"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"safe-migrations-mcp","url":"https://pypi.org/project/safe-migrations-mcp/","firstSeenAt":"2026-09-10T11:27:41.182Z","fetchedAt":"2026-09-10T11:27:41.182Z","normalizedAt":"2026-09-10T11:27:41.182Z"}]},"firstSeenAt":"2026-09-10T11:27:41.182Z","updatedAt":"2026-09-10T11:28:40.457Z"}