← Files AI2SQLARCHIVED FILE
.codex-plugin/plugin.json
6.8 KB · Nov 3, 2026 · 19:05 UTC
{
"author": {
"name": "Crossregions"
},
"description": "AI2SQL turns plain-English requests into correct SQL for PostgreSQL, MySQL, SQL Server, SQLite, Oracle, Snowflake and BigQuery, and helps with the SQL you already have: fix a failing statement, optimize a slow one, explain an inherited query, or convert between dialects.\n\nConnect your databases at ai2sql.io and ChatGPT can read their schema and run read-only queries against them. Writes and DDL are blocked, so nothing in your database can be changed from a chat.\n\nSign in with your existing AI2SQL account to use it in ChatGPT.\n\nNo database yet? Every account can try the shared demo_shop sample store and see real rows.",
"interface": {
"capabilities": [
"Read",
"Write"
],
"category": "Developer Tools",
"defaultPrompt": [
"Write a PostgreSQL query for monthly revenue by product category",
"Fix this SQL: SELECT categry, SUM(total) FROM orders GROUP BY category",
"Explain what this query does"
],
"developerName": "Crossregions",
"displayName": "AI2SQL",
"longDescription": "AI2SQL turns plain-English requests into correct SQL for PostgreSQL, MySQL, SQL Server, SQLite, Oracle, Snowflake and BigQuery, and helps with the SQL you already have: fix a failing statement, optimize a slow one, explain an inherited query, or convert between dialects.\n\nConnect your databases at ai2sql.io and ChatGPT can read their schema and run read-only queries against them. Writes and DDL are blocked, so nothing in your database can be changed from a chat.\n\nSign in with your existing AI2SQL account to use it in ChatGPT.\n\nNo database yet? Every account can try the shared demo_shop sample store and see real rows.",
"privacyPolicyURL": "https://ai2sql.io/privacy-policy",
"shortDescription": "Write, fix and run SQL",
"supportURL": "https://ai2sql.io/contact",
"termsOfServiceURL": "https://ai2sql.io/termsandconditions",
"websiteURL": "https://ai2sql.io",
"logo": "./assets/logo.png",
"logoDark": "./assets/logo-dark.png",
"composerIcon": "./assets/composer.png"
},
"name": "ai2sql-sql",
"version": "1.0.2",
"mcpServers": "./.mcp.json",
"homepage": "https://ai2sql.io",
"keywords": [
"sql",
"postgresql",
"mysql",
"sql server",
"database",
"query",
"text to sql"
],
"extensions": {
"com.openai": {
"review": {
"test_cases": {
"positive": [
{
"description": "Generate SQL from a plain-English request in a chosen dialect.",
"prompt": "Use AI2SQL to write a PostgreSQL query that returns the top 5 customers by total order value in the last 30 days. Tables: customers(id, name) and orders(id, customer_id, total, created_at).",
"tools_triggered": "generate_sql",
"expected_behavior": "Returns a PostgreSQL SELECT that joins customers and orders, filters the last 30 days, sums total per customer, orders by that sum descending and limits to 5. Nothing is executed."
},
{
"description": "Repair a failing statement.",
"prompt": "Use AI2SQL to fix this SQL: SELECT categry, SUM(total) FROM orders GROUP BY category HAVING SUM(total) > 100",
"tools_triggered": "fix_sql",
"expected_behavior": "Returns corrected SQL that selects category (typo fixed) with SUM(total), GROUP BY category and HAVING SUM(total) > 100."
},
{
"description": "Convert SQL between dialects.",
"prompt": "Use AI2SQL to convert this MySQL query to PostgreSQL: SELECT * FROM orders WHERE created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)",
"tools_triggered": "convert_sql",
"expected_behavior": "Returns the PostgreSQL version using NOW() - INTERVAL '7 days' (or equivalent) in place of DATE_SUB."
},
{
"description": "Explain an unfamiliar query in plain English.",
"prompt": "Use AI2SQL to explain what this query does: SELECT customer_id, total, RANK() OVER (PARTITION BY customer_id ORDER BY total DESC) AS r FROM orders",
"tools_triggered": "explain_sql",
"expected_behavior": "A step-by-step plain-English explanation: for each customer, orders are ranked by total from highest to lowest; no rewritten SQL is required."
},
{
"description": "List the databases in the account and read a schema.",
"prompt": "Which databases do I have in AI2SQL, and what tables and columns does the Demo Store have?",
"tools_triggered": "list_connections, describe_schema",
"expected_behavior": "list_connections returns the shared demo_shop sample (runnable on every plan) and the review account's Demo Store sample (schema-only, 3 tables); describe_schema returns the Demo Store's customers, orders and products tables with their columns."
},
{
"description": "Run a read-only query on the shared demo_shop sample, which works on every plan including free.",
"prompt": "Use AI2SQL to show the top 5 customers by revenue in the demo_shop sample database.",
"tools_triggered": "describe_schema, run_query",
"expected_behavior": "describe_schema(connection_id \"demo-shop\") returns customers, orders, order_items and products; run_query on \"demo-shop\" returns 5 rows of fake sample customers with their revenue. Read-only; nothing is changed."
}
],
"negative": [
{
"description": "Requests to change data are refused: run_query accepts only a single SELECT or WITH statement and rejects writes and DDL with read_only_violation. ChatGPT must not claim the data was deleted.",
"prompt": "Use AI2SQL to delete all rows from the orders table in my database."
},
{
"description": "Running queries is part of the paid plans. On the free review account run_query returns payment_required; ChatGPT should say so plainly and not retry or show a checkout link.",
"prompt": "Use AI2SQL to run SELECT * FROM customers on my Demo Store database."
},
{
"description": "Unrelated requests should not trigger AI2SQL tools.",
"prompt": "Book me a flight to Paris next Friday."
}
]
},
"demo_recording_url": "https://youtu.be/RYbZ7BY4Mas",
"commerce": false,
"commerce_description": "AI2SQL does not sell products or process payments in ChatGPT."
},
"publication": {
"release_notes": "1.0.2: adds the shared demo_shop sample (read-only, every plan) so users without a database can see real rows. No other behaviour changes."
}
}
},
"apps": "./.app.json"
}
SHA-256: d554479736b613da6703a61ef944736871c0bafea1b5ebd548b6d7509b72add5