@bicharts/chart-mcp 0.6.122 → 0.6.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bicharts/chart-mcp",
3
- "version": "0.6.122",
3
+ "version": "0.6.123",
4
4
  "description": "AI Data Components for Power BI, Excel, Fabric Apps and the web, over MCP: working what-if apps, interactive tables and bivariate maps first, plus about 90 everyday chart types, with selection and cross-filtering already wired. It profiles your table locally; the code it writes is yours and runs with no license.",
5
5
  "keywords": [
6
6
  "mcp",
@@ -51,8 +51,8 @@
51
51
  },
52
52
  "// dependencies": "NONE, deliberately. dist/ bundles every module the server uses, so a runtime dependency installs nothing it needs - it only makes npx fetch that package (and its tree) before the first start. Everything the bundle carries is a devDependency; scripts/verify-package.mjs fails the release if a dependency appears or a shipped file imports anything but Node's built-ins.",
53
53
  "devDependencies": {
54
- "@bicharts/chart-host": "^0.6.121",
55
- "@bicharts/shape-core": "^0.6.121",
54
+ "@bicharts/chart-host": "^0.6.123",
55
+ "@bicharts/shape-core": "^0.6.123",
56
56
  "@modelcontextprotocol/sdk": "^1.32.1",
57
57
  "@types/node": "^26.6.5",
58
58
  "@types/papaparse": "^5.3.14",
@@ -624,8 +624,10 @@ column repeated on every fact row (a country's population on each sale) sums to
624
624
 
625
625
  **When the chart is about the records themselves, its grain IS the records.** A scatter of customers, a
626
626
  distribution, customer segments or a map of accounts takes one row per customer, account or order - the raw facts -
627
- and the engine does the shaping. For totals (revenue by region, a monthly trend) keep the chart's grain: given raw rows
628
- for a total, the engine reads the repeats as a spread to show, and bar, card and donut charts drop out of what fits.
627
+ and the engine does the shaping. For totals (revenue by region, a monthly trend) the chart's grain is the simplest
628
+ request. Raw rows work too where the list offers grains: the types that draw totals are then listed under "Fits once the
629
+ rows are totalled", once per grain, and the person picks one (step 4). Where a list shows no such heading, raw rows for a
630
+ total lose the bar, card and donut charts: query the chart's grain.
629
631
  Ratio measures (a growth %, an attainment %, a share) and measures from different fact tables stay as the model
630
632
  computes them: raw rows can't rebuild them.
631
633
 
@@ -779,6 +781,13 @@ without naming:
779
781
  If the list doesn't offer what you expected, read its notes: it names a type refused on a count
780
782
  when your table is small, and it says when `name_filter` hid description matches.
781
783
 
784
+ **A grain is the person's choice, like the chart's form.** When the rows are finer than a type draws (raw rows where
785
+ it wants one per category), the list offers that type under "Fits once the rows are totalled", once per grain: each row
786
+ says how the rows are totalled first and carries a `projection` key, and a type listed twice is the same chart at two
787
+ grains. Don't pick one yourself and don't re-query to total the rows in DAX: ask which grain they want in their own
788
+ words ("revenue per country, or per region?"), then pass that row's name as `chart_type` and its key, copied exactly,
789
+ as `projection`. The chart is drawn at that grain and says so.
790
+
782
791
  The Interactive table and the Variance grid are preview types too, so either may be missing from the list. When the person asked for one and it isn't listed, say so and ask how to go on; don't build a table by hand in its place.
783
792
 
784
793
  The Selection explainer is a preview type: the server offers it only where it's switched on, so it may be missing from the