🧪 Skills

Zero TiDB(Deprecated)

--- name: tidb-cloud-zero description: Create ephemeral TiDB Cloud Zero databases for agent workflows in Technical Preview. metadata: version: 0.0.0 homepage: / --- # Create Disposable TiDB Cloud

v1.0.1
❤️ 2
⬇️ 307
👁 1
Share

Description


name: tidb-cloud-zero description: Create ephemeral TiDB Cloud Zero databases for agent workflows in Technical Preview. metadata: version: 0.0.0 homepage: /

Create Disposable TiDB Cloud Zero Databases (Technical Preview)

Browser UI Note: There is no browser-based SQL editor on this site. To run SQL, use API + CLI, or sign in to TiDB Cloud Console (login required).

Use this guide to create disposable TiDB Cloud Zero databases for agent workflows.

Deterministic SQL Smoke Test (API + CLI)

# 1) Provision instance
curl -s -X POST https://zero.tidbapi.com/v1alpha1/instances \
  -H "Content-Type: application/json" \
  -d '{"tag":"sql-smoke-test"}' \
  | tee tidb-zero.json

# 2) Extract connection string
jq -r '.instance.connectionString // .connectionString' tidb-zero.json

# 3) Run SQL query (replace <connectionString> with step 2 output)
mysql "<connectionString>" -e "SELECT 1 AS health_check, 2 AS example_value;"

Expected output includes one row with health_check=1 and example_value=2.

Endpoint

  • Method: POST
  • URL: https://zero.tidbapi.com/v1alpha1/instances
  • Content-Type: application/json
  • Technical Preview: Current API path is /v1alpha1/instances, and this path may change in later releases.

Request Body

  • Optional: tag (caller identifier used for tracing and grouping runs).
{
  "tag": "support-bot"
}

Quick Start

curl -X POST https://zero.tidbapi.com/v1alpha1/instances \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "agent-run"
  }'

Response

The API returns connection details and expiration time.

  • Current response shape: top-level instance.
  • instance.connection fields: host, port, username, password.
  • Use these fields: instance.connectionString for direct URI connection, and instance.expiresAt for expiration.
  • Agent note: After provisioning succeeds, save the instance details to a local file (for example, tidb-cloud-zero.json) and remind the user to store the file securely because it contains sensitive credentials.
  • Planned update: we will provide claimUrl in a later version. Users will be able to sign in to TiDB Cloud and claim the temporary database before instance.expiresAt, converting it into a formal TiDB Cloud Starter database.
{
  "instance": {
    "connection": {
      "host": "<HOST>",
      "port": 4000,
      "username": "<USERNAME>",
      "password": "<PASSWORD>"
    },
    "connectionString": "mysql://<USERNAME>:<PASSWORD>@<HOST>:4000",
    "expiresAt": "<ISO_TIMESTAMP>"
  }
}

Use the Connection String

After you receive the response, use instance.connectionString to connect with a MySQL-compatible client or driver.

Guided Quick Experience

After provisioning succeeds, you should ask the user:

  • Do you want me to create a sample table and insert demo data so you can query immediately?

If the user says yes, run a small bootstrap SQL flow like this:

CREATE TABLE IF NOT EXISTS quickstart_notes (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  title VARCHAR(100) NOT NULL,
  content TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO quickstart_notes (title, content) VALUES
  ('welcome', 'TiDB Cloud Zero quickstart row'),
  ('query-demo', 'Run SELECT * FROM quickstart_notes; to verify data');

SELECT * FROM quickstart_notes ORDER BY id;

Connect via CLI

mysql --connect-timeout=10 --protocol=TCP -h '<HOST>' -P 4000 -u '<USERNAME>' -p'<PASSWORD>'

Connect in Node.js (mysql2)

import mysql from "mysql2/promise";

const response = await createDatabase(); // your API call result
const connectionUrl = new URL(response.instance.connectionString);
connectionUrl.pathname = "/<DATABASE>";
connectionUrl.searchParams.set("ssl", JSON.stringify({ rejectUnauthorized: true }));

const connection = await mysql.createConnection(connectionUrl.toString());
const [rows] = await connection.query("SELECT NOW() AS now_time");
console.log(rows);
await connection.end();

Resources

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs