Skip to content

docs: document recent chart, filter, and MCP features from cubejs-enterprise - #11510

Open
keydunov wants to merge 1 commit into
masterfrom
claude/gallant-ramanujan-x9l6bc
Open

docs: document recent chart, filter, and MCP features from cubejs-enterprise#11510
keydunov wants to merge 1 commit into
masterfrom
claude/gallant-ramanujan-x9l6bc

Conversation

@keydunov

@keydunov keydunov commented Aug 9, 2026

Copy link
Copy Markdown
Member

Check List

  • Docs have been added / updated if required (this PR is docs-only)
  • Tests have been run in packages where changes have been made if available (N/A — no code changes)
  • Linter has been run for changed code (N/A — no code changes)
  • Tests for the changes have been added if not covered yet (N/A — no code changes)

Description of Changes Made

Routine sweep cross-checking recently shipped Cube Cloud (cubejs-enterprise) features against docs-mintlify, per the customer-facing-criteria bar. These were shipped and already announced in the in-app changelog but had no docs-mintlify coverage (or stale coverage). One larger cross-cutting feature (tenant-wide time zone policy, CUB-852) was filed as a Linear ticket instead, since it needs its own page rather than a surgical edit.

  • docs/explore-analyze/charts/chart-types/pie.mdx — the Style tab's inner-radius slider was replaced by a Pie/Donut shape toggle; added sections for data labels (value/percent/category, position, font size), concentric rings (rendered when a query has 2+ dimensions), and the tooltips control.
  • docs/explore-analyze/charts/chart-types/kpi.mdx — added a "Styling blocks" section covering the Style tab's per-block alignment, background, and color controls (previously only vaguely described on the Number block).
  • docs/explore-analyze/dashboards/widgets/controls.mdx — added the new calendar-period filter operators (in/not in the month/quarter/year) and a note that filter changes on a published dashboard are now reflected in (and restorable from) the URL.
  • docs/explore-analyze/workbooks/querying-data.mdx — period-over-period comparison can now anchor to a time dimension the query only filters on (not just one it groups by); "Save and Run" now reformats hand-edited Semantic SQL.
  • reference/data-modeling/view.mdx — documented the same new calendar-period operators as accepted values for default_ui_filters.
  • docs/integrations/mcp-server.mdx — added the new centralized /mcp endpoint and four MCP tools that existed in the server but weren't listed (getBranchDiff, getDeploymentEnv, getPreAggregationStatus, buildPreAggregation).

Verified each change against the current cubejs-enterprise source (component code, i18n strings, MCP tool registrations) rather than relying on commit subjects alone.

🤖 Generated with Claude Code

https://claude.ai/code/session_019bMVxieG2qCBLtaD6MGP8d


Generated by Claude Code

…erprise

- Pie/donut: shape toggle (replaces the old inner-radius slider), data
  labels (value/percent/category, position, font size), concentric rings
  for multi-dimension queries, and the tooltips control.
- KPI: per-block Style tab controls (alignment, background, and each
  block's own colors/font size).
- Dashboard filter controls: calendar-period time operators (in/not in
  the month, quarter, year) and default_ui_filters reference; bookmarkable
  filter URLs on published dashboards.
- Workbooks: period-over-period comparison anchoring to a filtered (not
  grouped) time dimension; Save and Run reformats hand-edited Semantic SQL.
- MCP server: the new centralized /mcp endpoint, and four previously
  undocumented tools (getBranchDiff, getDeploymentEnv,
  getPreAggregationStatus, buildPreAggregation).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019bMVxieG2qCBLtaD6MGP8d
@mintlify

mintlify Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
cubed3 🟢 Ready View Preview Aug 9, 2026, 12:23 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@claude

claude Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Claude finished @keydunov's task in 2m 50s —— View job


Review: docs-only, no blockers — 0 high, 3 medium, 2 low

Docs-only PR; the substance is good and the tool count now checks out (20 tools listed = 20 claimed). Five inline comments posted, mostly editorial/consistency. One naming-convention violation is worth fixing before merge.

Full review — findings, verification notes, and checklist

Checklist

  • Gather context (diff vs origin/master, all 6 changed files read in full)
  • Classify request → code review (no implementation requested)
  • Check repo conventions (CLAUDE.md, docs-mintlify/CLAUDE.md)
  • Verify internal consistency (anchors, tool counts, cross-references)
  • Check for stale cross-doc references to removed sections/anchors
  • Post inline comments
  • Final summary

Findings

# Severity File Issue
1 Medium docs/integrations/mcp-server.mdx:25-26 "Cube Cloud" is legacy naming — docs-mintlify/CLAUDE.md explicitly forbids it in new content. Also <console-domain> is unresolvable for the reader, which undercuts the "one fixed URL" value prop. Inline
2 Medium docs/integrations/mcp-server.mdx:242 "See … for how these three work together" is now stale — the table has four rows, and getDeploymentEnv isn't part of deployment/agent selection. Also flagged: no Access column in that group, and no role-gating note for a tool that returns env vars. Inline
3 Medium reference/data-modeling/view.mdx:368-389 The canonical operator list above reads as exhaustive but omits the six new operators; readers scanning it will never reach the new paragraph. Also unclear whether these take value or values — a wrong guess silently drops the filter entry. Inline
4 Low docs/explore-analyze/dashboards/widgets/controls.mdx:23 `in`/`not in the month` renders as operators named in and not in the month; contradicts the prose directly below, which spells them out in full. Suggestion included. Inline
5 Low docs/explore-analyze/charts/chart-types/kpi.mdx:32,46,67,84,100 Five repeated "See [Styling blocks] below…" pointers, three verbatim — against the "say it once" guidance. Inline

What I verified

  • Tool count. Counted the tool tables under ## Available actions: 4 + 2 + 2 + 5 + 7 = 20, matching the updated 16 → 20. ✅
  • Destructive-tool claim. "the four destructive ones" at line 228–231 is still accurate — the two new pre-aggregation tools are Read-only / Write, not Destructive. ✅
  • getBranchDiff placement. Correctly inside the role-gated Data model editing group, so it inherits the "Admin and Developer by default" note. ✅
  • Anchors. #styling-blocks matches ## Styling blocks. No cross-doc links to the removed pie.mdx anchors (#variants, #inner-radius) anywhere in docs-mintlify, and no remaining "inner radius" references — so the rewrite leaves no dangling links. ✅
  • Internal consistency, kpi.mdx. The Fields-table rows removed (Number's font size/color, Comparison's positive/negative colors) are all re-covered in the new Styling blocks table; the Sparkline "colors live in the Fields tab" caveat matches the retained Fields row. ✅
  • Arithmetic, querying-data.mdx. Filter-based comparison example (Q1 2026 → previous period Q4 2025) is correct. ✅
  • Product-facing behavior claims (Style-vs-Fields tab placement, ring ordering, non-additive-measure warning, /mcp proxy behavior, new filter operators) are not verifiable from this repo — none of these operators or components exist in the OSS packages, so they live in cubejs-enterprise. I'm taking the PR description's statement that each was checked against enterprise source at face value.

Not applicable

No code changed, so no tests, linting, or build were run — correct for a docs-only PR, and consistent with the author's checklist.

Nice work

The pie.mdx rewrite is a real upgrade: replacing the stale "Variants + Inner radius" structure with Shape/Data labels/Concentric rings/Tooltips matches how the Style tab is actually organized, and the concentric-rings section is honest about the non-additive-measure limitation instead of glossing over it. The getPreAggregationStatus / buildPreAggregation entries calling out warehouse cost is exactly the caveat an MCP client author needs.

· [Branch `claude/gallant-ramanujan-x9l6bc`](https://github.com/cube-js/cube/tree/claude/gallant-ramanujan-x9l6bc)

Comment on lines +25 to +29
- **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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in this bullet:

  1. Naming convention violation. docs-mintlify/CLAUDE.md says "Cube Cloud — legacy naming, do not use in new content". This is the only occurrence of "Cube Cloud" in the file (it only escapes grep because the line wrap splits it across lines 25–26).

  2. The placeholder defeats the feature. The value proposition is "one fixed URL … for clients that require one server URL registered up front", but the reader is given <console-domain> with no way to resolve it. If the URL really is fixed and public, spell it out; if it varies, say where to find it (e.g. "the host you see in your browser when signed in to Cube").

Suggested change
- **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.
- **Centralized endpoint:** `https://<console-domain>/mcp` — one fixed URL, on the Cube
console domain (the host in your browser's address bar when you're signed in) 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 +240 to 243
| `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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The 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 getDeploymentEnv has nothing to do with deployment/agent selection, so it shouldn't be swept into that cross-reference.

Suggested change
| `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.
| `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
`listDeployments`, `chat`, and `loadQueryResults` work together.

Separately: this group's table has no Access column, so getDeploymentEnv's read-only status is smuggled into the description. And unlike the data-model group, there's no note on who can call it. Environment variables are sensitive even redacted (hostnames, database/account names, bucket paths), and "secret-looking" is a heuristic, not a guarantee. If the tool is role-gated, say so; if it isn't, that's worth stating explicitly too.

Comment on lines +383 to +389
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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The 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: is, is not, … is not null") and doesn't include the six new operators. A reader scanning for accepted values will stop at that list and never reach this paragraph — worth adding them there too (this paragraph can then just carry the semantics).

Also: the paragraph doesn't say whether these take value or values. Every other operator in this section is explicit about that, and the entry gets dropped with a console warning if you guess wrong.

| **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` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

`in`/`not in the month` reads as two operators named in and not in the month — the shared the month suffix isn't visible in the code spans. The prose immediately below spells them out in full (in the month / in the quarter / in the year), so the table contradicts it. Spell them out here too:

Suggested change
| **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` |
| **Time** | `is`, `is not`, `before date`, `before or on date`, `after date`, `after or on date`, `between`, `relative date`, `in the month`, `not in the month`, `in the quarter`, `not in the quarter`, `in the year`, `not in the year`, `is null`, `is not null` |

| **Font size / color** | Text appearance |
| **Alignment** | Left, center, or right |

See [Styling blocks](#styling-blocks) below for font size, color, background, and alignment.

Copy link
Copy Markdown
Contributor

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.md asks 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants