{"serverId":"mcp-registry/io.github.jadesparrow/sqlai-dev-sql-verifier","tools":[{"name":"explain_plan","fixed":{"name":"explain_plan","description":"Return the engine-native query plan for a query (SQLite: EXPLAIN QUERY PLAN) plus full-table-scan warnings. Use it to check whether an index would be used before recommending one. Example: \"SELECT * FROM orders WHERE status=?\" on an unindexed column → plan [\"SCAN orders\"], warning about the full scan.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["schema","query"],"properties":{"query":{"type":"string","description":"ONE SQL statement to explain."},"engine":{"enum":["sqlite","duckdb"],"type":"string","description":"Engine. Server-side supports 'sqlite' (default). 'duckdb' runs in the browser demo at sqlai.dev only."},"schema":{"type":"string","description":"DDL statements (include your indexes!)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"run_sql","fixed":{"name":"run_sql","description":"Execute a SQL query against a fresh ephemeral in-memory database built from your schema (and optional seed rows). Returns real rows (max 500, truncation flagged), column names+types, row_count, and dialect notes. Errors come back as structured JSON with type/position/suggestion — a failed query is a useful answer, not a failure of this tool. Example: schema \"CREATE TABLE t(id INTEGER, name TEXT);\", query \"SELECT name FROM t WHERE id=1\", seed {\"t\":[{\"id\":1,\"name\":\"ada\"}]} → rows [[\"ada\"]].","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["schema","query"],"properties":{"seed":{"type":"object","description":"Optional seed rows: {\"table_name\": [{\"col\": value, ...}, ...]}. Max 10MB total.","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"query":{"type":"string","description":"ONE SQL statement to execute. Stacked statements are rejected."},"engine":{"enum":["sqlite","duckdb"],"type":"string","description":"Engine. Server-side supports 'sqlite' (default). 'duckdb' runs in the browser demo at sqlai.dev only."},"schema":{"type":"string","description":"DDL statements (CREATE TABLE ...; multiple statements allowed)."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":362,"tokensAfter":362},{"name":"run_sql_batch","fixed":{"name":"run_sql_batch","description":"Run up to 10 queries against the same schema+seed. Each query executes in its OWN fresh database — writes in one query are NOT visible to the next (use this for testing variants, not for multi-statement transactions). Returns an array of run_sql results in order.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["schema","queries"],"properties":{"seed":{"type":"object","description":"Optional seed rows: {\"table_name\": [{\"col\": value, ...}, ...]}. Max 10MB total.","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"engine":{"enum":["sqlite","duckdb"],"type":"string","description":"Engine. Server-side supports 'sqlite' (default). 'duckdb' runs in the browser demo at sqlai.dev only."},"schema":{"type":"string","description":"DDL statements."},"queries":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Up to 10 statements, one per entry."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":287,"tokensAfter":287},{"name":"validate_sql","fixed":{"name":"validate_sql","description":"Validate a SQL query against a schema WITHOUT executing it (parse + name/type binding via EXPLAIN). Returns ok with referenced tables, or a structured error: {type: unknown_column|unknown_table|syntax|..., message, position, suggestion}. The suggestion is rule-based (edit distance against your schema). Example: query \"SELECT nmae FROM users\" → error type unknown_column, suggestion 'did you mean \"name\"?'.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["schema","query"],"properties":{"query":{"type":"string","description":"ONE SQL statement to validate."},"engine":{"enum":["sqlite","duckdb"],"type":"string","description":"Engine. Server-side supports 'sqlite' (default). 'duckdb' runs in the browser demo at sqlai.dev only."},"schema":{"type":"string","description":"DDL statements."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254}],"toolsChanged":4,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}