Natural language SQL queries with intelligent database management
What this app can do
26 tools registered
Add Connection30 tok
Add a new MySQL/MariaDB connection. Tests connectivity before saving.
List Connections10 tok
List all saved database connections with their status.
Resolve Connection By Database10 tok
Resolve connection_id for a database or connection name. Use as the first step in automations before run_query/execute_sql, e.g. resolve_connection_by_database(database_name='ijodghbk_test') -> pass the returned connection_id into the next step.
Test Connection20 tok
Test connectivity for an existing saved connection.
Select Connection10 tok
Switch the active database connection.
Delete Connection30 tok
Delete a saved database connection permanently.
Run Query50 tok
Run a read-only SQL query (SELECT/WITH/SHOW). PREREQUISITE: you must know the EXACT table name AND column names. If you only know the table name — call get_table_detail(table='name') first to get columns. If you don't know the table name — call list_tables(search='keyword') first. NEVER guess column names. Use execute_sql for INSERT/UPDATE/DELETE/DDL.
Get Schema20 tok
Get full schema for ALL tables at once (columns, indexes). WARNING: for databases with >50 tables the response may be large. PREFER: list_tables(search=...) to find a table, then get_table_detail() for its columns. Use get_schema() only when user explicitly asks for the full schema overview.
Explain Query30 tok
Run EXPLAIN on a query to see execution plan.
Dry Run30 tok
Dry-run a DML statement: execute in transaction, count affected rows, then ROLLBACK.
Count Table20 tok
Get the EXACT row count of a table via SELECT COUNT(*). Use this when the user asks how many rows are in a table — get_schema() returns INFORMATION_SCHEMA estimates which can be wrong. This is the only call that returns a guaranteed-accurate row count.
List Tables20 tok
Search for tables by name. Use this FIRST when user mentions a table by name or asks to find a table — returns just table names, very fast, never truncated. Examples: search='tbl' finds all tables starting with 'tbl', search='invoice' finds invoice-related tables. Then call get_table_detail() for column structure of the specific table you found.
Get Table Detail20 tok
Get columns, indexes, and foreign keys for ONE specific table. Use after list_tables() to get the structure of a table you found. Returns exact column names and types needed before running run_query().
Execute Sql80 tok
Execute a write statement (INSERT, UPDATE, DELETE, REPLACE, ALTER, CREATE, DROP, TRUNCATE). Use this for all database mutations including automation-triggered inserts.
Run Editor Sql50 tok
Run any SQL from the editor. Auto-detects: SELECT goes to query, DML/DDL goes to execute.
Execute Batch150 tok
Run MULTIPLE SQL statements at once, sequentially, in ONE transaction. Use this when the user asks to create a table AND fill it, create several tables, or run a multi-statement script — instead of multiple execute_sql calls (execute_sql rejects multi-statement). Pass the whole script in `sql` (statements separated by ';'). Note: DDL (CREATE/ALTER/DROP) auto-commits and cannot be rolled back; DML is transactional.
Nl To Sql60 tok
Convert a natural language question to SQL. Automatically fetches schema if needed — use this when user asks a question about data in natural language and you need to generate the SQL query. Then call run_query() with the generated SQL.
List History10 tok
List recent query history for the active connection.
Save Query20 tok
Save a query for later use.
List Saved10 tok
List saved queries for the active connection.
Run Saved50 tok
Run a previously saved query.
Delete Saved20 tok
Delete a saved query.
Pulse Sql ExecutedFree
Internal side-channel: emit sql.executed after a panel-direct DML so the sidebar schema refreshes. Do not call from chat — for extension-internal use only.
Insert Row30 tok
Insert a new row into a table. Values as JSON object of column -> value.
Update Row30 tok
Update a single row identified by primary key. Changes as JSON object of column -> new value.
Delete Row30 tok
Delete a single row identified by primary key. Requires confirmation.