-
Notifications
You must be signed in to change notification settings - Fork 2.1k
docs: document recent chart, filter, and MCP features from cubejs-enterprise #11510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -20,7 +20,9 @@ The available operators depend on the type of the underlying dimension: | |||||
| |---|---| | ||||||
| | **String** | `is`, `is not`, `contains`, `not contains`, `starts with`, `not starts with`, `ends with`, `not ends with`, `is null`, `is not null` | | ||||||
| | **Number** | `is`, `is not`, `greater than`, `greater than or equal`, `less than`, `less than or equal`, `is null`, `is not null` | | ||||||
| | **Time** | `is`, `is not`, `before date`, `before or on date`, `after date`, `after or on date`, `between`, `relative date`, `is null`, `is not null` | | ||||||
| | **Time** | `is`, `is not`, `before date`, `before or on date`, `after date`, `after or on date`, `between`, `relative date`, `in`/`not in the month`, `in`/`not in the quarter`, `in`/`not in the year`, `is null`, `is not null` | | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| The `in the month` / `in the quarter` / `in the year` operators (and their negations) match a fixed calendar period — pick a month, quarter, or year and every row in that period matches, regardless of when the dashboard is viewed. This differs from `relative date` values like `this month`, which resolve against the current date each time the dashboard loads. | ||||||
|
|
||||||
| ### Single vs. multiple selection | ||||||
|
|
||||||
|
|
@@ -68,6 +70,10 @@ Empty, `null`, or unresolvable attribute values are skipped — the filter falls | |||||
|
|
||||||
| The user attribute default only seeds the filter's *initial* value. Viewers can still change the filter unless its [visibility](#visibility) is set to **Disabled**, in which case the resolved attribute value is locked in for that viewer. Values passed via URL parameters also take precedence over user attribute defaults, so deep links continue to work. | ||||||
|
|
||||||
| ### Bookmarking and sharing | ||||||
|
|
||||||
| On a published dashboard, changing a filter's value updates the page URL to match. A viewer can bookmark or share that URL, and opening it re-applies the same filter values — no extra setup required. | ||||||
|
|
||||||
| ### Faceted filters | ||||||
|
|
||||||
| When multiple filters target dimensions from the same semantic view, you can mark them as **faceted**. Faceted filters scope each other's value lists — selecting a value in one filter narrows the options shown in the others, so viewers only see combinations that exist in the data. | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -22,6 +22,11 @@ Model Context Protocol (MCP) is an open standard that enables AI assistants to s | |||||||||||||||||||||
| Cube hosts an MCP server endpoint for your tenant. MCP clients connect over HTTPS and authenticate via OAuth. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - **Endpoint:** `https://<cube-mcp-server-host>/api/mcp` | ||||||||||||||||||||||
| - **Centralized endpoint:** `https://<console-domain>/mcp` — one fixed URL, on the Cube | ||||||||||||||||||||||
| Cloud console domain rather than your tenant's own host, that proxies to the same | ||||||||||||||||||||||
| server. Use it for MCP connector directories and clients that require one server URL | ||||||||||||||||||||||
| registered up front, since the per-tenant endpoint above can vary by region or BYOC | ||||||||||||||||||||||
| domain. | ||||||||||||||||||||||
|
Comment on lines
+25
to
+29
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Two issues in this bullet:
Suggested change
|
||||||||||||||||||||||
| - **OAuth discovery:** `https://<cube-mcp-server-host>/.well-known/oauth` | ||||||||||||||||||||||
| - **OAuth flow:** Authorization Code + PKCE, `client_id` = `cube-mcp-client`, scope = `mcp-agent-access` | ||||||||||||||||||||||
| - **Deployment selection:** On connect, the client lands on the tenant **default deployment** set by your admin (or the first deployment you can access). Clients can also target a specific deployment and agent per request — see [Select a deployment and agent](#select-a-deployment-and-agent). | ||||||||||||||||||||||
|
|
@@ -211,7 +216,7 @@ neither `listDeployments` nor the `chat` selection can reach an excluded deploym | |||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Available actions | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| The MCP server exposes 16 tools, grouped below. | ||||||||||||||||||||||
| The MCP server exposes 20 tools, grouped below. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Every tool runs as the authenticated user. Queries respect the same | ||||||||||||||||||||||
| [permissions][ref-roles] as the rest of Cube, including row-level security — MCP is a new | ||||||||||||||||||||||
|
|
@@ -232,6 +237,7 @@ a dashboard or your data model happens without an explicit approval. | |||||||||||||||||||||
| | `listDeployments` | Lists the deployments and agents you can reach over MCP. | | ||||||||||||||||||||||
| | `chat` | Asks a question of a Cube agent, optionally targeting a specific deployment and agent. | | ||||||||||||||||||||||
| | `loadQueryResults` | Paginates through the results of a previous query. | | ||||||||||||||||||||||
| | `getDeploymentEnv` | Lists a deployment's environment variables, with secret-looking values redacted. Read-only — it cannot change them. | | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| See [Select a deployment and agent](#select-a-deployment-and-agent) for how these three | ||||||||||||||||||||||
| work together. | ||||||||||||||||||||||
|
Comment on lines
+240
to
243
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Adding a fourth row makes the sentence below stale — "these three work together" now has no clear referent, and
Suggested change
Separately: this group's table has no Access column, so |
||||||||||||||||||||||
|
|
@@ -246,6 +252,13 @@ work together. | |||||||||||||||||||||
| Call `searchDataModel` before `runQuery` to find exact view and member names rather than | ||||||||||||||||||||||
| guessing them. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### Pre-aggregations | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| | Tool | Description | Access | | ||||||||||||||||||||||
| | --- | --- | --- | | ||||||||||||||||||||||
| | `getPreAggregationStatus` | Lists the data model's pre-aggregations with their definitions and, for each, how many partitions exist, how many have been built, when the newest build landed, and the error if a build failed. | Read-only | | ||||||||||||||||||||||
| | `buildPreAggregation` | Queues an on-demand build of one pre-aggregation and returns once it's accepted; poll `getPreAggregationStatus` for the result. Runs real queries against your data source, so it consumes warehouse resources. | Write | | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### Dashboard authoring | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| These tools build [workbooks][ref-workbooks] and [dashboards][ref-dashboards] | ||||||||||||||||||||||
|
|
@@ -277,6 +290,7 @@ default. Users without it never see them. | |||||||||||||||||||||
| | `writeDataModelFile` | Creates or overwrites a model source file on the dev branch (whole-file replacement). Recompiles the model and reports `valid` plus any `validationError`. | Destructive — prompts | | ||||||||||||||||||||||
| | `deleteDataModelFile` | Deletes a model source file on the dev branch. | Destructive — prompts | | ||||||||||||||||||||||
| | `getDataModelChanges` | Shows the diff of the dev branch against its parent — the pending changes, for review before committing. | Read-only | | ||||||||||||||||||||||
| | `getBranchDiff` | Shows what any branch changed against an arbitrary base (the deploy branch by default) — the changed-file list with insertion/deletion counts plus the unified diff. Broader than `getDataModelChanges`, which only compares your own dev branch to its immediate parent. | Read-only | | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| #### How model edits stay safe | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -380,6 +380,14 @@ value's grain, not a range — `is yesterday` matches yesterday only (e.g. | |
| `is this month` matches the current month. For a rolling window, use `between` | ||
| with two bounds. | ||
|
|
||
| A date or time member also accepts `in the month`, `in the quarter`, `in the | ||
| year`, and their negations `not in the month`, `not in the quarter`, `not in | ||
| the year`. These take a single fixed date (e.g. `"2026-03-01"`) and match | ||
| every row whose value falls in that date's calendar month, quarter, or year — | ||
| `DATE_TRUNC('quarter', created_at) = DATE_TRUNC('quarter', DATE '2026-03-01')`. | ||
| Unlike `is this month`, the reference date is fixed rather than resolved | ||
| against the current date on every run. | ||
|
Comment on lines
+383
to
+389
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The canonical operator list at line 368–373 presents itself as the complete set ("what you see in the filter bar is what you type: Also: the paragraph doesn't say whether these take |
||
|
|
||
| ##### Relative date values | ||
|
|
||
| A `between` filter always takes an explicit two-element `[start, end]` pair. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit (conciseness): this "See [Styling blocks] below…" pointer is repeated five times (lines 32, 46, 67, 84, 100), three of them verbatim.
docs-mintlify/CLAUDE.mdasks for "say it once" — the Styling blocks table already lists which controls each block type has, so it's the single source of truth. Consider dropping the four per-block pointers and instead adding one line right before the block list (near the "Block types" heading) saying every block also has a Style panel, documented in Styling blocks. Purely editorial — the content itself is a genuine improvement over the old vague Fields-table rows.