{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m57vgtjads9gxbg8cbtq2gjg",
 "ids": {
  "org": "org_01m57vgtjand5gw5h3ne8rsssr",
  "surfaces": {
   "web": "srf_01m59e1da6q6cbek5w7handq5g",
   "api": "srf_01m59e1da6cctyszw8bxt4agsk",
   "mcp": "srf_01m59e1da6jrjq4a4py6rcap5n",
   "cli": "srf_01m59e1da674qmpzr5yxwts0kv"
  },
  "slugs": [
   "clickhouse"
  ],
  "domain": "clickhouse.com",
  "wikidata": "Q27825826"
 },
 "slug": "clickhouse",
 "name": "ClickHouse Cloud",
 "url": "https://clickhouse.com",
 "domain": "clickhouse.com",
 "category": "databases",
 "category_name": "Databases",
 "tested_at": "2026-10-19",
 "run": "20261019T052707Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261019T052707Z",
   "date": "2026-10-19",
   "level": 4,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 4,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip"
   },
   "stop": "delete"
  }
 ],
 "level": 4,
 "level_name": "Runs on its own",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [],
 "not_counted": null,
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: MCP sign-in, sign-up in a browser",
   "way": "email_password"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Card checkout",
   "value": "not_tried",
   "route": "card_checkout",
   "why": "no_card"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; deletes its data, but the login stays",
   "at": "delete",
   "left": "data_only",
   "delete": {
    "state": "part",
    "text": "Deletes its data, but the login stays",
    "why": "Services, databases, users and API keys were deleted headless (DELETE /services/{id}, DELETE /keys/{id}; the last active key was deleted in the console, after which it got 401)."
   }
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Learn",
   "state": "yes",
   "text": "Docs it can act on: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: MCP sign-in, sign-up in a browser",
   "way": "email_password",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Card checkout",
   "value": "not_tried",
   "route": "card_checkout",
   "why": "no_card",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; deletes its data, but the login stays",
   "at": "delete",
   "left": "data_only",
   "delete": {
    "state": "part",
    "text": "Deletes its data, but the login stays",
    "why": "Services, databases, users and API keys were deleted headless (DELETE /services/{id}, DELETE /keys/{id}; the last active key was deleted in the console, after which it got 401)."
   },
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "mcp_signin",
   "label": "MCP sign-in",
   "routes": [
    "oauth_consent"
   ],
   "minutes": 4,
   "core": "1/9"
  },
  {
   "key": "browser_signup",
   "label": "Sign-up in a browser",
   "routes": [
    "email_password",
    "device_login"
   ],
   "minutes": 2,
   "core": "9/9",
   "by_route": {
    "email_password": "9/9",
    "device_login": "0/9"
   }
  }
 ],
 "minutes": 2,
 "next": {
  "to": 5,
  "text": "Next: pay without a person"
 },
 "stop": "delete",
 "core": "9/9",
 "scores": {
  "coverage": 88,
  "reliability": 83,
  "resilience": 59,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": 71,
  "docs_match": null,
  "setup": 100,
  "security": "private",
  "standards": [
   {
    "standard": "MCP",
    "state": "behind",
    "behind": 1,
    "value": "2025-11-25"
   },
   {
    "standard": "MCP discovery",
    "state": "behind",
    "behind": null,
    "value": "legacy"
   },
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.1"
   },
   {
    "standard": "A2A",
    "state": "behind",
    "behind": 1,
    "value": "0.3"
   }
  ]
 },
 "reliability_method": "pass^k",
 "resilience": {
  "parts": {
   "error_legibility": 86,
   "recovery": 90,
   "idempotency": 0
  },
  "summary": null
 },
 "stress": [
  {
   "capability": "Insert or update data in a table",
   "probe": "insert into a column that does not exist",
   "outcome": "500 Code: 16. DB::Exception: No such column nope in table ad_st.t (108c6fc8-1915-4e02-9be3-3b8adf44dd36). (NO_SUCH_COLUMN_IN_TABLE) (version 26.6.1.2326 (official build))\n",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Run a database query",
   "probe": "select from a missing table",
   "outcome": "404 Code: 60. DB::Exception: Unknown table expression identifier 'ad_st.nosuch' in scope SELECT * FROM ad_st.nosuch. (UNKNOWN_TABLE) (version 26.6.1.2326 (official build))\n",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Query a database over a REST API",
   "probe": "create query endpoint without required apiKeyIds/roles",
   "outcome": "400 {\"error\": \"Request failed endpoint validation for queryApiEndpointCreate:\\n\\u2716 Required\\n  \\u2192 at apiKeyIds\\n\\u2716 Required\\n  \\u2192 at roles\", \"issues\": [{\"path\": [\"apiKeyIds\"], \"code\": \"",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Sync external data into a table",
   "probe": "get a ClickPipe id that does not exist",
   "outcome": "404 {\"requestId\": \"27ebcf5a-ecc7-4dac-8938-b6c5a5b29c32\", \"error\": \"NOT_FOUND: 00000000-0000-4000-8000-000000000000\", \"status\": 404}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Sync external data into a table",
   "probe": "bad enum in ClickPipe source type",
   "outcome": "400 {\"requestId\": \"f3b1f5cd-0255-4bfa-9dad-9cd4f67b582c\", \"error\": \"BAD_REQUEST: request body.source.objectStorage.type: 's4'\", \"status\": 400}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Insert or update data in a table",
   "probe": "repeat the same INSERT twice",
   "outcome": "200,200; count id=7 -> 1 (duplicates; separate requests are not deduplicated on a non-replicated-dedup insert by default)",
   "grade": "clear",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "Query a database over a REST API",
   "probe": "repeat the same Query endpoint create",
   "outcome": "201 then 201 {\"status\": 201, \"requestId\": \"e5ab73b5-ae04-4b0d-8531-a879bafba7bf\", \"result\": {\"id\": \"b7670c47-e5be-4ab6-bd65-b9a8fdeb1952\", \"name\": \"ad_dupe\", \"sql\": \"SELECT number AS n FROM numbers({l",
   "grade": "silent",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "credentials",
   "probe": "wrong API secret",
   "outcome": "401 {\"requestId\": \"4e7bbb69-4a80-4fdc-96ac-ea665584f413\", \"error\": \"UNAUTHORIZED: Key is not found\", \"status\": 401}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Run a database query",
   "probe": "wrong database password",
   "outcome": "401 Code: 194. DB::Exception: default: Authentication failed: password is incorrect, or there is no user with such name\n\nIf you use ClickHouse Cloud, the password can be reset at https://clickhouse.cl",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "credentials",
   "probe": "burst of 15 quick GET /v1/whoami",
   "outcome": "15x 200; headers on 200: x-ratelimit-limit: 40, x-ratelimit-remaining: 38, x-ratelimit-reset: 0.395, x-ratelimit-policy: 40;w=10;comment=\"fixed window\" (legacy X-RateLimit-* names; no 429 reached)",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Insert or update data in a table",
   "probe": "multi-row insert with one bad row in the middle",
   "outcome": "400 Code: 27. DB::Exception: Cannot parse input: expected ',' before: 'bad,row\\n101,ok': (at row 2)\n: \nRow 1:\nColumn 0,   name: id, type: UInt32, parsed text: \"100\"\nColumn 1,   name: s,  type: String,",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": null,
 "coverage_core": 100,
 "coverage_own": 100,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 4,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "2f233581a23a",
  "kb_version": "3+overlay-fb2c175349",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 24,
 "rules_date": "2026-10-20",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 4,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "skip"
 },
 "same_level_drives": 2,
 "drives": 2,
 "same_stop_drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "newer_drives": {
  "count": 1,
  "newest": "2026-10-23"
 },
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "robots",
   "kind": "signup",
   "at": "2026-10-23"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": "closed",
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt, /docs/llms.txt, SKILL.md, an AI Catalog (/.well-known/ai-catalog.json), an RFC 9727 API catalog pointing to the OpenAPI 3.1.1 spec, and markdown for every docs page (Accept: text/markdown and .md URLs)."
  },
  "signup": {
   "status": "browser",
   "note": "Auth0 web form at auth.clickhouse.cloud (business email, password, company, terms box); no CAPTCHA; agentdrives.com address accepted. The CLI's `cloud auth signup` only prints the web URL. console.clickhouse.cloud robots.txt is a rule for all user agents (Disallow: /), so this was done as an account step.",
   "way": "email_password"
  },
  "verify": {
   "status": "browser",
   "note": "Verification link arrived in under a minute and was opened in the browser; it lands on the sign-in page with \"Email verified\"."
  },
  "credentials": {
   "status": "browser",
   "note": "The first API key is made in the console (Organization > API keys > New API key; secret shown once). Further keys can be made without a browser with POST /v1/organizations/{id}/keys. The CLI's OAuth device login and MCP OAuth give tokens without the console key page, but both are read-only.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /v1/whoami and GET the service with the API key: 200.",
   "route": "account"
  },
  "first_action": {
   "status": "headless",
   "note": "CREATE DATABASE over the HTTPS SQL interface after resetting the default user's password with PATCH /services/{id}/password. The console onboarding made us create a first service in the browser before the rest of the console opened."
  },
  "pay": {
   "status": "",
   "grade": "P2",
   "rails": [
    "card form in the console (Stripe.js / Elements)",
    "Stripe Projects (catalog listing, not tried)"
   ],
   "rail_ids": [
    "stripe-elements",
    "stripe-projects"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "route": "card_checkout",
   "checkout": {
    "reached": "plan_page",
    "processor": "stripe_elements",
    "captcha": "invisible",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "",
    "currency": "USD",
    "period": "usage",
    "plan": "Basic",
    "last_button": "Account details"
   },
   "person": "none",
   "ours": "no billing address (the wizard's address step precedes the card step; our identity has no postal address)",
   "note": "No 402, x402 or MPP anywhere; our payment check paid nothing. The trial (30 days, $300 credits) needed no card. To leave the trial you add a card in Billing: a 3-step wizard (billing address, account details, card) with Stripe.js and invisible reCAPTCHA Enterprise loaded; we stopped at step 1 because our identity has no postal address. Plans are switched in the console (Switch to Basic); the API's Billing operations are read-only. Stripe Projects lists ClickHouse in its catalog; we have no Stripe Projects account, so it was not tried."
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent started no paid plan.",
   "docs_note": "Nothing to cancel: the drive ran on the no-card trial. Plans are changed on the console Plans page; closing the account goes through a support case (docs: products/cloud/reference/account-close).",
   "docs_grade": "",
   "nothing": "no_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Services, databases, users and API keys were deleted without a browser (DELETE /services/{id}, DELETE /keys/{id}; the last active key was deleted in the console, after which it got 401). There is no self-serve account or organization delete: the docs send you to a support case, which was not filed. The login still works.",
   "left": "data_only",
   "after_hours": null,
   "account": true
  }
 },
 "routes": [
  {
   "route": "local",
   "offered": "documented",
   "tried": false,
   "not_tried": "policy",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": null,
   "minutes": null,
   "browser": null
  },
  {
   "route": "email_password",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 10,
   "browser": true
  },
  {
   "route": "device_login",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": false,
   "minutes": 2,
   "browser": true
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": false,
   "minutes": 4,
   "browser": true
  },
  {
   "route": "enterprise",
   "offered": "documented",
   "tried": false,
   "not_tried": "assisted_only",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": null,
   "minutes": null,
   "browser": null
  }
 ],
 "checkout": {
  "reached": "plan_page",
  "processor": "stripe_elements",
  "captcha": "invisible",
  "three_ds": "not_seen",
  "phone_field": "none",
  "rail_offer": "none",
  "period": "usage",
  "card_form": false,
  "plan": "Basic",
  "last_button": "Account details"
 },
 "docs": {
  "at": "2026-10-19",
  "read": 600,
  "listed": 25356,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "some",
  "freshness": "fresh",
  "newest": "2026-10-16",
  "core_pages": "8 of 9",
  "capabilities": "most"
 },
 "claims": {
  "claimed": 19,
  "tried": 19,
  "held": 19,
  "broken": 0,
  "unclear": 0,
  "not_tried": 0,
  "undocumented_works": 0
 },
 "pay_options": {
  "checked": "2026-10-19",
  "source": "probe",
  "options": [
   {
    "id": "stripe-projects",
    "name": "Stripe Projects",
    "kind": "agent-rail",
    "first_party": true,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [
   "stripe-projects"
  ],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": false,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST Cloud API, 102 paths (services, keys, members, invitations, backups, ClickPipes, Query API endpoints, saved queries, Postgres, UDFs); SQL over HTTPS on each service",
  "openapi": "3.1.1 at https://api.clickhouse.cloud/v1; key create still documents `roles`, the live API wants `assignedRoleIds`",
  "mcp": "official remote, 16 tools, the 25 Nov 2025 MCP spec, OAuth (DCR) or API key",
  "cli": "clickhousectl 0.4.2: cloud service/query/auth, device-flow login read-only",
  "llms_txt": "/llms.txt and /docs/llms.txt; robots.txt carries Cloudflare Content-Signal: ai-train=yes, search=yes, ai-input=yes (no aipref Content-Usage)"
 },
 "can_do": [
  "Create, rename and drop databases and tables over the HTTPS SQL interface",
  "Insert, update (ALTER UPDATE) and delete rows, and read them back",
  "Run full-text search with a text index and vector search with an HNSW index",
  "Create, update, run and delete Query API endpoints through the Cloud API",
  "Load external data with an S3 ClickPipe through the Cloud API",
  "Create database users and row policies",
  "Resize compute and add replicas through the Cloud API",
  "Create, use and revoke scoped API keys through the Cloud API",
  "Invite a member, list members, read usage cost and Prometheus metrics",
  "Query and list schemas through the remote MCP server with OAuth",
  "Run queries through clickhousectl with an API key"
 ],
 "cannot_do": [
  {
   "what": "Sign up without a browser",
   "why": "Sign-up is a web form only; the CLI sign-up command opens the form."
  },
  {
   "what": "Create the first API key without a browser",
   "why": "The first key is made in the console; OAuth (CLI device flow, MCP) tokens are read-only."
  },
  {
   "what": "Use remote MCP service tools with an API key",
   "why": "Every service-level tool answered \"Service not found ... or your credentials do not grant access\" with an Admin key, also with MCP enabled on the service."
  },
  {
   "what": "Take an on-demand backup or restore within the drive",
   "why": "No backup-create call in the API; the first automatic backup comes after the backup period."
  },
  {
   "what": "Delete the account",
   "why": "Account closure and data deletion go through a support case."
  },
  {
   "what": "Buy a plan without a person's card",
   "why": "No agent payment rail; the console card form asks for a billing address and a card."
  }
 ],
 "blockers": [
  "first API key only in the console",
  "account deletion only through a support case"
 ],
 "tips_for_agents": [
  "Get an Admin API key once in the console, then do everything else through the Cloud API (OpenAPI at https://api.clickhouse.cloud/v1) and SQL over https://<host>:8443.",
  "Reset the default user's password with PATCH /services/{id}/password to get database access without a browser.",
  "On Cloud, system.query_log is per replica: query clusterAllReplicas('default', system.query_log).",
  "Lightweight UPDATE is off by default on new tables; ALTER TABLE ... UPDATE with mutations_sync=2 works.",
  "POST /keys wants assignedRoleIds (role ids from GET /roles), not roles.",
  "Remote MCP works with OAuth (DCR + PKCE) and is SELECT-only; with an API key the service tools were refused.",
  "The active API key cannot delete itself; delete it in the console or with another key.",
  "clickhousectl reads CLICKHOUSE_CLOUD_API_KEY/SECRET from the environment; `cloud service query` provisions its own Query API key on the service."
 ],
 "selfhost": {
  "install": {
   "status": "skipped",
   "minutes": 0,
   "note": "no docker in the drive sandbox; the open-source ClickHouse server (clickhousectl local) was not installed: self-hosted editions are off"
  }
 },
 "summary": "An agent can run ClickHouse Cloud almost entirely through its Cloud API, SQL over HTTPS, the clickhousectl CLI and an OAuth remote MCP server: all nine core tasks were done and read back three times on the no-card trial. The browser is needed for sign-up, the email link and the first API key, and deleting the account takes a support case. There is no agent payment rail; buying a plan needs a card and a billing address in the console.",
 "wall": "First API key only available in console",
 "plan_scope": "no-card trial (30 days, $300 credits, Scale plan)",
 "robots_stop": null,
 "robots": null,
 "terms": null,
 "plain": {
  "summary": "ClickHouse Cloud is a managed analytics database. An agent could do all nine core database tasks (creating tables, querying, full-text and vector search, loading data, etc.) entirely on its own once inside the account, reading its own work back three times. It stopped needing a person for the sign-up form, the email verification link, and the very first API key, which can only be created in the web console.",
  "can_do": [
   "Create and manage databases and tables, and run queries, entirely through code once logged in",
   "Search text and run vector similarity search without any human help",
   "Load outside data into a new table and clean it up afterward",
   "Make new, narrower API keys itself once it has one starting key"
  ],
  "cannot_do": [
   {
    "what": "Sign up and verify an account without a browser",
    "why": "The only sign-up path is a web form; no code-only route exists"
   },
   {
    "what": "Get its very first API key without a browser",
    "why": "The first key can only be created on a console page"
   },
   {
    "what": "Buy a paid plan on its own",
    "why": "Billing needs a card and a billing address typed into the console"
   },
   {
    "what": "Close or delete the account",
    "why": "Account closure only happens by writing to human support; nothing was actually deleted"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Run a database query",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /",
    "mcp": "run_select_query",
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "system.query_log shows the submitted query_id with type QueryFinish",
   "capability_id": "cap_hw0v5ga0",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/getting-started/intro; https://clickhouse.com/docs/products/cloud/guides/sql-console/query-endpoints",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-02",
   "capability": "Create a database",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /",
    "mcp": "list_databases (read)",
    "cli": "clickhouse-client CREATE DATABASE",
    "ui": "SQL console / Create service"
   },
   "check": "SHOW DATABASES lists the new database",
   "capability_id": "cap_9a3jhdb4",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/statements/create/database",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-03",
   "capability": "Create a table",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /",
    "mcp": "list_tables (read)",
    "cli": "clickhouse-client CREATE TABLE",
    "ui": "SQL console"
   },
   "check": "system.tables shows the new table with its engine",
   "capability_id": "cap_ec6ajdnd",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-04",
   "capability": "Insert or update data in a table",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST / (INSERT)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console / data import"
   },
   "check": "SELECT count on the table reflects the inserted rows",
   "capability_id": "cap_m34x9t4v",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-05",
   "capability": "Delete a record",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST / (DELETE/ALTER TABLE DELETE)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "SELECT on the table no longer returns the deleted rows",
   "capability_id": "cap_z5zsc472",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/backups/review-and-restore-backups",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-06",
   "capability": "Query a database over a REST API",
   "weight": "core",
   "plan": "trial",
   "surfaces": {
    "api": "GET/POST /query-endpoints/{queryEndpointId}/run",
    "mcp": null,
    "cli": null,
    "ui": "SQL console → Share → API Endpoint"
   },
   "check": "curl to the generated endpoint returns the saved query's result set",
   "capability_id": "cap_53z76bgf",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/sql-console/query-endpoints",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-07",
   "capability": "Run a full-text search",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST / (hasToken/search with text index)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "EXPLAIN indexes=1 shows the text index used and matching rows returned",
   "capability_id": "cap_0gwx7zby",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-08",
   "capability": "Run a vector search",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST / (ORDER BY distance function)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "EXPLAIN indexes=1 shows the vector_similarity index used, returning the N nearest rows",
   "capability_id": "cap_een15d28",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-09",
   "capability": "Sync external data into a table",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "ClickPipes OpenAPI",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → ClickPipes"
   },
   "check": "destination table row count increases as the ClickPipe runs and its status shows Running",
   "capability_id": "cap_yr6whrah",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/integrations/clickpipes/home; https://clickhouse.com/docs/products/cloud/getting-started/intro",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-10",
   "capability": "List databases and read their schema",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST / (SHOW TABLES/DESCRIBE)",
    "mcp": "list_databases, list_tables",
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "MCP list_tables response includes schema, comment and row count for the table",
   "capability_id": "cap_xqrrtrx2",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/guides/use-cases/ai-ml/MCP; https://clickhouse.com/docs/products/cloud/features/ai-ml/remote-mcp",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-11",
   "capability": "Back up a database",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Cloud API",
    "mcp": "list_service_backups (read)",
    "cli": null,
    "ui": "Cloud console → Backups"
   },
   "check": "Backups tab lists a new restore point with status Done",
   "capability_id": "cap_drp5sav8",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/backups/review-and-restore-backups",
   "result": "partial",
   "via": "api"
  },
  {
   "id": "cap-12",
   "capability": "Restore a database",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Cloud API",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Backups → Restore"
   },
   "check": "A new service appears as Provisioning then Running, containing the backed-up data",
   "capability_id": "cap_ykvspbps",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/backups/review-and-restore-backups",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-13",
   "capability": "Add a read replica",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Cloud API / Terraform",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Warehouses"
   },
   "check": "system.clusters / service replica count increases after the change",
   "capability_id": "cap_j8kyym81",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/features/infrastructure/warehouses",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-14",
   "capability": "Resize database compute",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "Cloud API / Terraform",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Service settings"
   },
   "check": "service settings show the new replica memory/CPU size after the resize completes",
   "capability_id": "cap_jajhkrq5",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/features/infrastructure/warehouses",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-15",
   "capability": "Create a database user",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST / (CREATE USER)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "system.users lists the new user name",
   "capability_id": "cap_z3zzc2bd",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/statements/create/user",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-16",
   "capability": "Set row-level security policies",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST / (CREATE ROW POLICY)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "SELECT as the restricted user only returns rows matching the policy's USING condition",
   "capability_id": "cap_49bc6r5r",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/statements/create/row-policy",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-17",
   "capability": "Add or change a table field",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST / (ALTER TABLE)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console"
   },
   "check": "DESCRIBE TABLE shows the added/modified column",
   "capability_id": "cap_47me9ba3",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-18",
   "capability": "Export data to a warehouse",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "ClickPipes export / table functions",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → ClickPipes"
   },
   "check": "destination warehouse (e.g. BigQuery, S3/Iceberg) shows the exported rows",
   "capability_id": "cap_vg87a3nt",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/integrations/clickpipes/home",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-19",
   "capability": "Build a dashboard over table data",
   "weight": "secondary",
   "plan": "trial",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "SQL console → query visualizations"
   },
   "check": "saved query shows a rendered chart in the SQL console that persists on reload",
   "capability_id": "cap_k7ny6322",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/getting-started/intro",
   "result": "done",
   "via": "browser"
  },
  {
   "id": "cap-20",
   "capability": "Find slow database queries",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST / (system.query_log)",
    "mcp": null,
    "cli": "clickhouse-client",
    "ui": "SQL console / Cloud console monitoring"
   },
   "check": "query against system.query_log ordered by query_duration_ms surfaces the slow query",
   "capability_id": "cap_fz6spk4z",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/reference/engines/table-engines/mergetree-family/annindexes",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-21",
   "capability": "Read service metrics",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Prometheus endpoint",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Monitoring"
   },
   "check": "Prometheus scrape of the service endpoint returns ClickHouse metric series",
   "capability_id": "cap_njb0a49e",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/guides/use-cases/observability",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-22",
   "capability": "Stream database changes via CDC",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "ClickPipes Postgres/MySQL/MongoDB CDC",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → ClickPipes"
   },
   "check": "destination table reflects inserts/updates/deletes committed on the source database shortly after they occur",
   "capability_id": "cap_d7xy2ewe",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/managed-postgres/overview; https://clickhouse.com/docs/integrations/clickpipes/home",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-23",
   "capability": "Configure SAML SSO",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Organization settings → SSO"
   },
   "check": "organization member list shows users provisioned via the SSO identity provider",
   "capability_id": "cap_pz4pecfg",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/getting-started/intro",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-24",
   "capability": "Set a member's role or permissions",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "Cloud API",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Organization → Members"
   },
   "check": "member list shows the updated role for the user",
   "capability_id": "cap_bs3hvrpm",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/features/admin-features/api/api-overview",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-25",
   "capability": "Restrict access by IP address",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "Cloud API",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Service settings → Security"
   },
   "check": "a curl from outside the allow list is refused while one from inside succeeds",
   "capability_id": "cap_wrzp7nnm",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/security/connectivity/setting-ip-filters",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-26",
   "capability": "Encrypt data with your own key",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Service settings → Encryption"
   },
   "check": "service settings show the configured customer KMS key ARN/Resource Path as the active encryption key",
   "capability_id": "cap_se1tg3g2",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/guides/security/cmek",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-27",
   "capability": "Create an API key",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/organizations/{id}/keys",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → API Keys"
   },
   "check": "new API key appears in the organization's key list and authenticates a Cloud API request",
   "capability_id": "cap_wbg916v9",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/features/admin-features/api/api-overview",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-28",
   "capability": "Read usage and quotas",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "get_organization_cost",
    "mcp": "get_organization_cost",
    "cli": null,
    "ui": "Cloud console → Usage"
   },
   "check": "usage screen / API response shows compute and storage cost broken down by service for the date range",
   "capability_id": "cap_n0zefvzh",
   "unmapped": null,
   "source": "https://clickhouse.com/pricing",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-29",
   "capability": "Invite a member",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "Cloud API",
    "mcp": null,
    "cli": null,
    "ui": "Cloud console → Organization → Members → Invite"
   },
   "check": "organization member list shows the invited email with status Pending",
   "capability_id": "cap_3w8sjh12",
   "unmapped": null,
   "source": "https://clickhouse.com/docs/products/cloud/features/admin-features/api/api-overview",
   "result": "done",
   "via": "api"
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/clickhouse.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [
    "signup",
    "verify",
    "first_action"
   ],
   "stop": "pay",
   "why": null,
   "tone": "neutral",
   "text": "Signs up, confirms its email and does all of the core work. Payment wasn't tried."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [],
   "stop": "signup",
   "why": "it works only in a browser",
   "tone": "wall",
   "text": "Stops at sign-up: it works only in a browser."
  }
 },
 "stop_evidence": {
  "at": "delete",
  "date": "2026-10-19",
  "line": "Services, databases, users and API keys were deleted without a browser (DELETE /services/{id}, DELETE /keys/{id}; the last active key was deleted in the console, after which it got 401). There is no self-serve account or organization delete: the docs send you to a support case, which was not filed."
 },
 "stop_shot": null,
 "attempts_count": 206,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": "ClickHouse Cloud is a managed analytics database.",
 "rules_version": "rules-2026-10-20-24",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-20-24",
 "category_median": {
  "holds_up": {
   "median": 72,
   "n": 7
  }
 },
 "verdict": "Our agent runs ClickHouse Cloud on its own: L4 · Runs on its own. It passed every checkpoint through delete, where it stopped: removing the organization needs a support case, so the login still works. Through the Cloud API and SQL over HTTPS, our agent created a database, reset the default user's password, and deleted services and keys; the console still made it create the first service in a browser, and the remote MCP server and CLI device login stayed read-only. Sign-up, the email verification link and the first API key need a browser. No agent payment rail exists; buying a plan needs a card and a billing address, so our agent started no paid plan and had nothing to cancel.",
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261019T052707Z",
    "date": "2026-10-19",
    "level": 4,
    "stop": "delete",
    "entry": "self-start",
    "driver": 4,
    "listed": true
   },
   {
    "run": "20261023T224044Z",
    "date": "2026-10-23",
    "level": 4,
    "stop": "delete",
    "entry": "self-start",
    "driver": 4,
    "listed": true
   }
  ],
  "events": [],
  "feed": "https://agentdrives.com/api/tools/clickhouse/changes.json"
 },
 "agreement": {
  "drives": 2,
  "agree": 2
 },
 "method_release": "2026-Q4.9",
 "rank": 1,
 "rank_of": 7,
 "rank_change": 0,
 "rank_since": "2026-10-24",
 "capability_matrix": [
  {
   "id": "cap-01",
   "name": "Run a database query",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Create a database",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Create a table",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Insert or update data in a table",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Delete a record",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Query a database over a REST API",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Run a full-text search",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-08",
   "name": "Run a vector search",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "Sync external data into a table",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "List databases and read their schema",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Back up a database",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "partial",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "Restore a database",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-13",
   "name": "Add a read replica",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-14",
   "name": "Resize database compute",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-15",
   "name": "Create a database user",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-16",
   "name": "Set row-level security policies",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Add or change a table field",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Export data to a warehouse",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Build a dashboard over table data",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "done"
   }
  },
  {
   "id": "cap-20",
   "name": "Find slow database queries",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-21",
   "name": "Read service metrics",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-22",
   "name": "Stream database changes via CDC",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-23",
   "name": "Configure SAML SSO",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-24",
   "name": "Set a member's role or permissions",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-25",
   "name": "Restrict access by IP address",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-26",
   "name": "Encrypt data with your own key",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-27",
   "name": "Create an API key",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-28",
   "name": "Read usage and quotas",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-29",
   "name": "Invite a member",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  }
 ],
 "category_place": {
  "category": "databases",
  "products": 11,
  "higher": 0,
  "same_level": 3,
  "as_of": "2026-10-22",
  "stop": "delete",
  "rivals_by": "stop",
  "rivals": []
 },
 "page": "https://agentdrives.com/tools/clickhouse?via=api"
}