# AX Check: clickhouse.com
Checked 2026-11-08.

Agents can install, query, and price ClickHouse with zero guesswork.
All 23 checklist items passed: docs, CLI, API, MCP, and skills are all machine-readable, and pricing is published as exact USD rates with clear units.

## Onboarding needs a login

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) completed and correctly reported Cloud pricing, citing region, compute-unit size, and the $300/30-day trial; two pulled live rates from the pricing page while one relied on memorized figures.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/aec295f8-2e2e-4a62-a919-b5da69f57b33) · [Read transcript](https://www.ax-check.com/clickhouse.com/sessions/deepseek.json)
Quoted Cloud prices from the billing docs and named the basis: AWS us-east-1, plan tier, active hours per day, replica RAM/vCPU size, TB stored, and a 30-day trial with $300 in credits. (seq 49, seq 70, seq 72)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: No ClickHouse Cloud credentials existed in the sandbox and none were obtained during the session. The agent used the public, unauthenticated ClickHouse Playground (user 'play', no password) via both raw HTTP and the official clickhouse-connect SDK, and successfully ran read queries against a real hosted dataset. That demonstrates a working hosted-product query, but it is anonymous access, not self-service credential acquisition, and no write/provisioning operation (the actual authenticated product action) was ever achieved — the playground explicitly rejected DDL/DML with permission errors.
  Event 7:

  ```text
  === env vars (ClickHouse-related) ===
  === all env var names ===
  AI_AGENT
  ALG_INFERENCE_MODEL...
  ```
  Event 26:

  ```text
  db	usr	ro
  default	play	1
  ```
  Event 26:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default.demo_tmp_x. (ACCESS_DENIED)
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Playground is read-only, blocking any write/provisioning example**: The only reachable ClickHouse endpoint without human-supplied credentials is the public play.clickhouse.com instance, which is strictly read-only (readonly=1) and denies CREATE TABLE, CREATE TEMPORARY TABLE, and multi-statement writes. This is expected product behavior for a public demo, not a defect, but it capped the example at read-only analytics and prevented demonstrating a real provisioning or write workflow.
  Event 26:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default.demo_tmp_x. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 30:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TEMPORARY TABLE ON *.*. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
- **No ClickHouse Cloud credentials available in the sandbox**: The environment had zero ClickHouse-related environment variables, config files, or API keys. Provisioning a real writable ClickHouse Cloud service requires interactive account signup and console/API-key generation, which the agent correctly identified as out of scope rather than attempting a workaround.
  Event 7:

  ```text
  === env vars (ClickHouse-related) ===
  === all env var names ===
  AI_AGENT
  ALG_INFERENCE_MODEL
  ALG_INFERENCE_PROVIDER...
  ```
  Event 72:

  ```text
  I cannot provision or write to a real ClickHouse Cloud service from here. There are no ClickHouse credentials in this environment, and the public playground is strictly read-only
  ```

#### Suggested Changes
- **Add a scripted/self-service Cloud trial provisioning path to docs**: The quickstart docs page (clickhouse.com/docs/get-started/setup/cloud) points to the $300/30-day trial but offers no CLI or API-only path to create a writable trial service non-interactively. Adding a documented API-key-based or CLI provisioning flow would let automated agents and first-time developers get a writable service without browser-based signup. Verify by confirming a non-interactive command can create a running Cloud service and return connection credentials.
  Event 70:

  ```text
  $300 credits
  $300 in credits
  30-day free trial
  ```
  Event 72:

  ```text
  Creating a writable service requires an account signup and an API key or console access, which is interactive and out of scope for me.
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/3ae0c37a-ff4b-4dc7-bb18-7a9dbbb5b856) · [Read transcript](https://www.ax-check.com/clickhouse.com/sessions/kimi.json)
Gave a Cloud cost figure with its basis: consumption-based compute units plus storage per compressed TB, a dev tier from about $1/day, and a $300/30-day trial. These came from memory, not a fetched pricing page. (seq 54)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never attempted ClickHouse Cloud onboarding (no account or API key creation). It used the public, unauthenticated play.clickhouse.com playground with the built-in 'play' user and no password. It states no ClickHouse Cloud credentials exist and provisioning a private service wasn't attempted. No self-service credential acquisition occurred and no authenticated write operation was performed, so verified status is not met; since no login blocked task completion, login_required does not apply either.
  Event 11:

  ```text
  The environment has no ClickHouse Cloud credentials, but ClickHouse runs a free public hosted playground at `play.clickhouse.com` — a real hosted ClickHouse reachable over its HTTP API/SDK with no signup.
  ```
  Event 52:

  ```text
  Global average max temperature by year (NOAA dataset):
    2022  avg max    6.4°C   record   53.0°C   (7,320,954 obs)
  ```
  Event 54:

  ```text
  **Not blocked.** The only limitation: no ClickHouse Cloud credentials exist in this environment, so I couldn't provision a private service — but that wasn't needed for a working example.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Demo dataset schema differs from agent's initial assumptions**: The agent guessed table/column names (uk.uk_price_paid, github.github_events, temp_max) that do not exist in the current playground schema, causing two failed query runs (UNKNOWN_DATABASE, then UNKNOWN_IDENTIFIER). This was agent error based on outdated assumptions about the playground's demo datasets, not a product defect. The agent self-corrected by querying system.tables and DESCRIBE to find the real schema and then succeeded.
  Event 26:

  ```text
  clickhouse_connect.driver.exceptions.DatabaseError: Received ClickHouse exception, code: 81, server response: Code: 81. DB::Exception: Database uk does not exist. (UNKNOWN_DATABASE)
  ```
  Event 40:

  ```text
  Code: 47. DB::Exception: Unknown expression or function identifier `temp_max`. Maybe you meant: ['tempMax']. In scope SELECT toYear(date) AS year, round(avg(temp_max), 1) AS avg_max_c
  ```
- **No ClickHouse Cloud credentials available for private provisioning**: The sandbox environment had no ClickHouse Cloud API keys or account credentials, so the agent could not provision a private managed service and instead relied on the public read-only playground. This is a test-environment limitation, not something the agent needed to overcome to complete the requested task.
  Event 11:

  ```text
  The environment has no ClickHouse Cloud credentials, but ClickHouse runs a free public hosted playground at `play.clickhouse.com`
  ```
  Event 54:

  ```text
  **Not blocked.** The only limitation: no ClickHouse Cloud credentials exist in this environment, so I couldn't provision a private service — but that wasn't needed for a working example.
  ```

#### Suggested Changes
- **Publish an up-to-date schema reference for the playground demo datasets**: The agent's first two query attempts failed on assumed dataset/column names (uk.uk_price_paid, github.github_events, snake_case temp_max) that do not match the playground's actual tables (blogs.noaa with camelCase tempMax, git_clickhouse.commits). Publish a current list of playground databases, tables, and column names near the play.clickhouse.com page or quickstart docs so a new developer skips the trial-and-error seen at seq 26 and seq 40. Verify by confirming a fresh query against the documented schema succeeds on the first try.
  Event 26:

  ```text
  DB::Exception: Database uk does not exist. (UNKNOWN_DATABASE) (for url https://play.clickhouse.com:443)
  ```
  Event 40:

  ```text
  Code: 47. DB::Exception: Unknown expression or function identifier `temp_max`. Maybe you meant: ['tempMax'].
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/91ef00ff-324f-4ad9-b0d4-d0bbd72381a8) · [Read transcript](https://www.ax-check.com/clickhouse.com/sessions/qwen.json)
The agent used live rates from the pricing page. It named the us-east-1 region, the 2 vCPU / 8 GiB compute unit, a 730-hour always-on Basic unit (~$159/mo), and the $300, 30-day trial. (seq 34, seq 38, seq 118, clickhouse-demo/README.md)
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained ClickHouse Cloud credentials; it only used the public, credential-less play.clickhouse.com playground (user 'play', no password) for read-only queries. The write lifecycle (CREATE TABLE, INSERT, DROP) that would demonstrate an authenticated product operation was written but never executed because the playground returned ACCESS_DENIED for all DDL. No self-service signup or credential retrieval occurred during the session.
  Event 20:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default._probe_pi. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 78:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default.nope_from_demo. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 118:

  ```text
  Part 2 (CREATE → INSERT 5,000 rows → aggregate → `ARRAY JOIN` → `Map` access → `DROP`) is written but never executed. I validated every statement against the live server's parser via `EXPLAIN AST`/`EXPLAIN SYNTAX` (all OK) and dry-ran the insert payload for column/type shape. To actually run it, give me a host/user/password (the $300 trial suffices)
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Playground account lacks DDL rights, blocking the write-path demo**: The public play.clickhouse.com account ('play' user) is hard read-only: every CREATE DATABASE, CREATE TABLE, and even CREATE TEMPORARY TABLE attempt returned ACCESS_DENIED (code 497). This is expected product behavior for the free anonymous playground, not a product defect. The agent correctly recognized this, validated the write statements via EXPLAIN AST/SYNTAX instead, and clearly documented that Part 2 of the demo never actually ran against a writable instance.
  Event 20:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default._probe_pi. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 68:

  ```text
  CREATE DATABASE pi_demo: denied -> code 497
  ```
- **No ClickHouse Cloud credentials available in the sandbox**: The sandbox environment had no ClickHouse Cloud host/user/password set (environment variable search returned nothing), so the agent could not sign up for or obtain a hosted instance with write privileges. This is a test-environment/credential limitation rather than a product flaw, since ClickHouse Cloud normally requires a human to create an account and get an API/connection credential.
  Event 9:

  ```text
  env | grep -iE 'click|ch_|CLICKHOUSE' | sed 's/=.*/=<set>/'; echo "(end env)"
  ```
  Event 118:

  ```text
  no ClickHouse Cloud credentials exist in this environment
  ```
- **Playground also restricts several system tables and session settings**: Beyond DDL, the playground denied SELECT on system.numbers, system.query_log, system.parts, system.clusters, and system.processes, and rejected SETTINGS changes like max_threads in readonly mode. The agent adapted the http_api.sh script to avoid these restricted paths rather than treating it as a blocking failure.
  Event 82:

  ```text
  numbers       Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant SELECT ON system.numbers. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 78:

  ```text
  Code: 164. DB::Exception: Cannot modify 'max_threads' setting in readonly mode. (READONLY) (version 26.10.3.7 (official build))
  ```

#### Suggested Changes
- **Offer a free, scoped sandbox database with write access on the public playground**: On play.clickhouse.com, every CREATE DATABASE/CREATE TABLE attempt by the 'play' user returned ACCESS_DENIED (code 497), so first-time developers following a quickstart cannot exercise the full create-insert-query-drop lifecycle without first signing up for ClickHouse Cloud. Consider granting the anonymous playground user a personal, auto-expiring scratch database (e.g. a per-session or per-IP namespace) with DDL rights, verifiable by running CREATE TABLE/INSERT/SELECT/DROP as the 'play' user and confirming it returns success instead of code 497.
  Event 20:

  ```text
  Code: 497. DB::Exception: play: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON default._probe_pi. (ACCESS_DENIED) (version 26.10.3.7 (official build))
  ```
  Event 68:

  ```text
  CREATE TEMPORARY TABLE tmp_probe (x UInt8): denied -> code 497
  ```

### Task given to each agent
Help me build a simple example using ClickHouse. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: A · 100/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Pass** — Homepage answers Markdown requests

  ```text
  Homepage returned text/markdown (200) when requested with Accept: text/markdown.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt links docs index, install, quick start, API, MCP, skills and site indexes.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt gives agent guidance: fetch docs index, use clickhousectl, MCP auth steps.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt lists Cloud API/OpenAPI, three MCP servers, and agent skills.
  ```

- **Pass** — A compact guide representation exists

  ```text
  SKILL.md is a standalone Markdown getting-started guide for ClickHouse, linked from llms.txt.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  SKILL.md fetched directly at clickhouse.com/SKILL.md with install, run and query steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  SKILL.md is 1022 tokens, well under the 8000-token budget, and keeps the full workflow.
  ```

- **Pass** — Product-docs links survive format changes

  ```text
  SKILL.md and llms.txt keep working docs links such as /docs and the CLI reference.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  SKILL.md gives concrete install, run, query steps with clickhousectl and Cloud auth.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Fetched install, CLI, Cloud quickstart and API key pages all returned 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  llms.txt links Cloud quick start and install pages; docs nav lists quickstarts.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Install commands shown: curl install script, npm, uv, pipx, pip, cargo.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Quickstart and CLI pages show SQL, JSON and shell examples inline.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Prerequisites and auth boundaries explicit: OAuth read-only, API key for writes.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing page renders full plan and per-region rate tables as static Markdown, no interaction needed.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Concrete USD rates published: compute $/unit/hr, storage $/TB/mo, egress $/GB, Postgres $/hr.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Units explicit: compute-unit-hour = 8 GiB RAM/2 vCPU, TB-months, per-GB egress, plan limits.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Quoted Cloud prices from the billing docs and named the basis: AWS us-east-1, plan tier, active hours per day, replica RAM/vCPU size, TB stored, and a 30-day trial with $300 in credits. (seq 49, seq 70, seq 72) Kimi K3: Gave a Cloud cost figure with its basis: consumption-based compute units plus storage per compressed TB, a dev tier from about $1/day, and a $300/30-day trial. These came from memory, not a fetched pricing page. (seq 54) Qwen 3.8 Max: The agent used live rates from the pricing page. It named the us-east-1 region, the 2 vCPU / 8 GiB compute unit, a 730-hour always-on Basic unit (~$159/mo), and the $300, 30-day trial. (seq 34, seq 38, seq 118, clickhouse-demo/README.md) This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  Cloud API OpenAPI 3.1 spec served at api.clickhouse.cloud/v1; API reference docs also fetched.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  Remote MCP documented with endpoint, OAuth/API-key auth, tool list, and per-client setup.
  ```

- **Pass** — A CLI install path is documented

  ```text
  clickhousectl install documented via curl script, npm, uv, pipx, pip, cargo.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  npm and PyPI registry lookups for clickhousectl both returned HTTP 200.
  ```

- **Pass** — Agent skills are published

  ```text
  Agent skills published: SKILL.md, skills index JSON, and agent-skills repo with install commands.
  ```



[Full report data](https://www.ax-check.com/clickhouse.com/report.json)
