@axonity-ai/mcp 0.16.0 → 0.17.0

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/README.md CHANGED
@@ -284,6 +284,16 @@ across these routes — the tool parameter names say which.
284
284
  It names the concept it means in `concept`, and the questions it answers
285
285
  in `questions`. `read_measure_design` now returns a table's columns and
286
286
  time axis only; `list_measures({ tableId })` says which measures read it.
287
+ - **A measure is one formula**, `definition.expression`:
288
+ `sum(orders.amount)`, `[revenue_d2c] + [revenue_retail]`,
289
+ `divide([cm1], [net_revenue])`. `get_measure_formula_spec` is the only
290
+ list of its words — the platform's own, the one its editor shows — and
291
+ with `includeWorkspace: true` also this workspace's measures, tables and
292
+ columns. `validate_measure` checks a formula without saving it and answers
293
+ with every problem by code. `read_measure` returns the formula as text
294
+ beside the stored tree and the aggregations it folds down to. The fields
295
+ from before the formula (`tableId`, `clearTable`, `aggregation`,
296
+ `column`, `numerator`, `denominator`) are refused with `legacy_field`.
287
297
  - **Concepts**: `list_concepts`, `create_concept`, `update_concept`,
288
298
  `delete_concept` — kind (concept, state, metric, rule), name, meaning,
289
299
  synonyms, what it refers to, owner. They are rows of one table the
package/dist/contract.js CHANGED
@@ -90,6 +90,8 @@ export const PROBE_VARIANTS = [
90
90
  // validate_workflow — exactly one of the two, never both.
91
91
  { document: undefined },
92
92
  { workflowId: undefined },
93
+ // get_measure_formula_spec — the workspace's vocabulary only when asked.
94
+ { includeWorkspace: true },
93
95
  ];
94
96
  /**
95
97
  * Every route this build's tools call, found by replaying them.
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ import { reportContractSkew } from "./contract.js";
25
25
  import { registerConventions } from "./tools/conventions.js";
26
26
  import { registerDashboardTools, registerDataSourceTools, registerMeasureTools, } from "./tools/dataSources.js";
27
27
  import { registerDataTableTools } from "./tools/dataTables.js";
28
+ import { assertFormulaShape, registerMeasureFormulaTools } from "./tools/measureFormula.js";
28
29
  import { assertPlaceholderCredentials } from "./tools/credentials.js";
29
30
  import { registerAttachTools, registerCatalogTools, registerConnectorTools, registerDependencyTools, registerPersonaTools, } from "./tools/extras.js";
30
31
  import { registerAuthoringSpecTools } from "./tools/authoringSpec.js";
@@ -62,6 +63,41 @@ const PROVENANCE_NOTE = "WHERE THE ROWS COME FROM — `provenance`, for a dynami
62
63
  "\n\nMEASURES ARE NOT ON THE TABLE. A measure is its own entity " +
63
64
  "(create_measure); a table carries only its `timeAxis` " +
64
65
  "(`{ column, grain }`), which every measure over it reads.";
66
+ /**
67
+ * What writing a measure takes (axonity-flow#1908). The contract, not a manual:
68
+ * the words of the formula are in get_measure_formula_spec and nowhere else.
69
+ */
70
+ const MEASURE_NOTE = "READ get_measure_formula_spec FIRST; never write a function, operator or " +
71
+ "grain from memory. A measure is ONE formula, `definition.expression`, " +
72
+ "as text or as the stored tree. Four kinds, one grammar: " +
73
+ "\n- a BASE aggregates one COLUMN of one table: " +
74
+ "`sum(orders.amount) where orders.channel = 'd2c'`. It reads a column, " +
75
+ "never a calculation per row — a value per row belongs in the table's " +
76
+ "source query (`provenance.sql`), as a column of its own; " +
77
+ "\n- a DERIVED measure computes with other measures by name: " +
78
+ "`[revenue_d2c] + [revenue_retail]`, `divide([cm1], [net_revenue])`, " +
79
+ "`divide([revenue_d2c], [net_revenue] ignore orders.channel)` for a share " +
80
+ "of the total. Two fact tables may meet in one number; they are never " +
81
+ "joined; " +
82
+ "\n- TIME (`shift`, `to_date`, `rolling`) and CUMULATIVE (`running`): " +
83
+ "use them only where the spec marks them `available`. " +
84
+ "\n\nBuild bottom-up: the base measures first, each with its `quantity` " +
85
+ "(what it counts: EUR, customers, orders), then the derived ones; " +
86
+ "validate_measure before every save, and publish from the bottom up. " +
87
+ "\n\nFields: `label` (what a tile shows), `description` (what the number " +
88
+ "means — mandatory, an agent reads it to decide whether this is the " +
89
+ "number asked for), `definition`, `concept` (the NAME of the concept this " +
90
+ "number means — it must exist, create_concept first, and a derived " +
91
+ "measure needs one too), `questions` (what it answers, in the words " +
92
+ "someone would ask) and optionally `name`, the handle — derived from the " +
93
+ "label when omitted and unique in the workspace. `definition` is " +
94
+ "`{ expression, quantity?, format?, direction?, target?, watchMargin? }`; " +
95
+ "`quantity` is derived for a formula over measures. " +
96
+ "\n\nThe fields from before the formula — `tableId`, `clearTable`, " +
97
+ "`definition.aggregation`, `column`, `numerator`, `denominator` — are " +
98
+ "refused with `legacy_field`. " +
99
+ "\n\nIt is a DRAFT until published: request_publish_measure. Only a " +
100
+ "published measure gives a certified number.";
65
101
  /**
66
102
  * The entities the connector covers. Core entities (C4), memory entities (C5)
67
103
  * — skills, policies, reference docs — which have the same draft→publish
@@ -185,24 +221,15 @@ const ENTITIES = [
185
221
  label: "measures (the agreed definition of one number in the model)",
186
222
  deleteVersionParam: "expectedVersion",
187
223
  listPaging: { defaultPageSize: 20, maxPageSize: 200 },
188
- createNote: "Fields: `label` (what a tile shows), `description` (what the number " +
189
- "means — mandatory, an agent reads it to decide whether this is the " +
190
- "number asked for), `definition` (the calculation), `tableId` (the " +
191
- "table it reads; omit only for a ratio whose two sides each name their " +
192
- "own `table`), `concept` (the NAME of the concept this number means — " +
193
- "it must exist, create_concept first), `questions` (what it answers, " +
194
- "in the words someone would ask) and optionally `name`, the handle — " +
195
- "derived from the label when omitted and unique in the workspace. " +
196
- "\n\n`definition` is `{ aggregation, column?, numerator?, " +
197
- "denominator?, filters?, format?, direction?, target?, watchMargin? }`: " +
198
- "aggregation is sum, average, count, count_distinct, min, max, latest " +
199
- "(the value at the last date of each period — for a stock) or ratio " +
200
- "(numerator ÷ denominator, each `{ aggregation, column?, table?, " +
201
- "filters? }`). A filter is `{ column, operator, value }`. Column names " +
202
- "come from read_measure_design. A wrong combination is refused with a " +
203
- "422 that says why. " +
204
- "\n\nIt is a DRAFT until published: request_publish_measure. Only a " +
205
- "published measure gives a certified number.",
224
+ // read_measure is in tools/measureFormula.ts: it asks the platform to
225
+ // write the stored tree back as formula text, which a plain GET cannot.
226
+ readable: false,
227
+ guardFields: assertFormulaShape,
228
+ createNote: MEASURE_NOTE,
229
+ updateWarning: MEASURE_NOTE +
230
+ " `tableId` and `clearTable` are gone: a measure has no home table, " +
231
+ "the tables it reads follow from its formula. Sending `definition` " +
232
+ "replaces it whole, so send the `expression` with it.",
206
233
  },
207
234
  // The three below arrived with axonity-flow#1849 (axonity-mcp#78). None is
208
235
  // versioned or publish-approved: a change is live the moment it is saved, so
@@ -342,6 +369,7 @@ export function registerAll(server, client) {
342
369
  registerDataTableTools(server, client);
343
370
  registerDataSourceTools(server, client);
344
371
  registerMeasureTools(server, client);
372
+ registerMeasureFormulaTools(server, client);
345
373
  registerDashboardTools(server, client);
346
374
  registerConceptTools(server, client);
347
375
  registerComponentTools(server, client);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,14 @@ export declare const PLACEMENT_ROUTE = "/api/v1/authoring/prompt-placement";
55
55
  export declare const SEMANTIC_KNOWLEDGE_ROUTE = "/api/v1/authoring/semantic-knowledge";
56
56
  /** Read this deploy's placement rules, or say why not. Exported for testing. */
57
57
  export declare function readPlacementRules(client: AxonityClient): Promise<string>;
58
+ /**
59
+ * How a measure is built and computed (axonity-flow#1908), carried by the
60
+ * connector beside the served rules. It names no word of the formula: those are
61
+ * in `get_measure_formula_spec`, the platform's one list. What it keeps is what
62
+ * the spec does not say — where a calculation belongs, and how a number made
63
+ * of parts is computed — so an agent does not have to infer it from recipes.
64
+ */
65
+ export declare const MEASURE_FORMULA_SECTION = "## A measure is one formula\n\nThe words of a formula \u2014 functions, operators, grains, limits, every refusal\ncode with its fix, and recipes \u2014 are in `get_measure_formula_spec`. Read it\nbefore writing a measure, and never write a word from memory. With\n`includeWorkspace: true` it also lists this workspace's measures, tables,\ncolumns and the dimensions each table reaches.\n\n**Four kinds, one grammar.**\n\n- **Base** \u2014 one aggregation over one column of one table, optionally with\n `where`. It reads a column, never a calculation per row.\n- **Derived** \u2014 arithmetic over other measures by name: a sum over two facts,\n a margin, a share of the total with `ignore`.\n- **Time** and **cumulative** \u2014 the same measure in another window, or a\n running total. Use them only where the spec marks them `available`.\n\n**Row logic belongs in the table's source query, not in a measure.** A value\nper row (net = gross \u2212 discount) is a column, added to the table's\n`provenance.sql` and described like any other column. A measure is computed\nper question \u2014 period, grain, split, filters \u2014 and is never stored.\n\n**How a number is computed.** Each leaf is aggregated on its own table, over\nthe dimensions it reaches through declared many-to-one relationships. The\nresults are combined per group; two fact tables are never joined to each\nother. The formula is then applied per group, and the TOTAL is computed again\nover the whole period \u2014 never the sum or the average of the groups.\n\n**Refused, never guessed.** A dimension a leaf cannot reach, a measure that\nrests on itself, euros added to dogs, a format that does not fit what the\nnumber counts: each is refused with a code. `validate_measure` returns them\nbefore you save; repair on the code before asking a person.\n\n**Order.** Base measures first, each with its `quantity`; then the derived\nones; `validate_measure` before every save; publish from the bottom up.\n";
58
66
  /** Read this deploy's semantic-knowledge rules, or say why not. Exported for testing. */
59
67
  export declare function readSemanticKnowledgeRules(client: AxonityClient): Promise<string>;
60
68
  export declare function registerConventions(server: McpServer, client: AxonityClient): void;
@@ -1043,9 +1043,57 @@ async function readServedRules(client, route, what, unavailable) {
1043
1043
  export async function readPlacementRules(client) {
1044
1044
  return readServedRules(client, PLACEMENT_ROUTE, "prompt-element placement rules", PLACEMENT_UNAVAILABLE);
1045
1045
  }
1046
+ /**
1047
+ * How a measure is built and computed (axonity-flow#1908), carried by the
1048
+ * connector beside the served rules. It names no word of the formula: those are
1049
+ * in `get_measure_formula_spec`, the platform's one list. What it keeps is what
1050
+ * the spec does not say — where a calculation belongs, and how a number made
1051
+ * of parts is computed — so an agent does not have to infer it from recipes.
1052
+ */
1053
+ export const MEASURE_FORMULA_SECTION = `## A measure is one formula
1054
+
1055
+ The words of a formula — functions, operators, grains, limits, every refusal
1056
+ code with its fix, and recipes — are in \`get_measure_formula_spec\`. Read it
1057
+ before writing a measure, and never write a word from memory. With
1058
+ \`includeWorkspace: true\` it also lists this workspace's measures, tables,
1059
+ columns and the dimensions each table reaches.
1060
+
1061
+ **Four kinds, one grammar.**
1062
+
1063
+ - **Base** — one aggregation over one column of one table, optionally with
1064
+ \`where\`. It reads a column, never a calculation per row.
1065
+ - **Derived** — arithmetic over other measures by name: a sum over two facts,
1066
+ a margin, a share of the total with \`ignore\`.
1067
+ - **Time** and **cumulative** — the same measure in another window, or a
1068
+ running total. Use them only where the spec marks them \`available\`.
1069
+
1070
+ **Row logic belongs in the table's source query, not in a measure.** A value
1071
+ per row (net = gross − discount) is a column, added to the table's
1072
+ \`provenance.sql\` and described like any other column. A measure is computed
1073
+ per question — period, grain, split, filters — and is never stored.
1074
+
1075
+ **How a number is computed.** Each leaf is aggregated on its own table, over
1076
+ the dimensions it reaches through declared many-to-one relationships. The
1077
+ results are combined per group; two fact tables are never joined to each
1078
+ other. The formula is then applied per group, and the TOTAL is computed again
1079
+ over the whole period — never the sum or the average of the groups.
1080
+
1081
+ **Refused, never guessed.** A dimension a leaf cannot reach, a measure that
1082
+ rests on itself, euros added to dogs, a format that does not fit what the
1083
+ number counts: each is refused with a code. \`validate_measure\` returns them
1084
+ before you save; repair on the code before asking a person.
1085
+
1086
+ **Order.** Base measures first, each with its \`quantity\`; then the derived
1087
+ ones; \`validate_measure\` before every save; publish from the bottom up.
1088
+ `;
1046
1089
  /** Read this deploy's semantic-knowledge rules, or say why not. Exported for testing. */
1047
1090
  export async function readSemanticKnowledgeRules(client) {
1048
- return readServedRules(client, SEMANTIC_KNOWLEDGE_ROUTE, "rules for writing the semantic layer", SEMANTIC_KNOWLEDGE_UNAVAILABLE);
1091
+ const rules = await readServedRules(client, SEMANTIC_KNOWLEDGE_ROUTE, "rules for writing the semantic layer", SEMANTIC_KNOWLEDGE_UNAVAILABLE);
1092
+ // Without the served rules the answer is "do not build", and a section on
1093
+ // how to build measures beside it would contradict that.
1094
+ if (rules === SEMANTIC_KNOWLEDGE_UNAVAILABLE)
1095
+ return rules;
1096
+ return `${rules}\n\n${MEASURE_FORMULA_SECTION}`;
1049
1097
  }
1050
1098
  export function registerConventions(server, client) {
1051
1099
  server.tool("axonity_conventions", "Read the authoring conventions BEFORE creating or updating anything: the " +
@@ -1068,8 +1116,10 @@ export function registerConventions(server, client) {
1068
1116
  "what a word or a number means. Returns this deploy's rules for writing " +
1069
1117
  "it: what a concept owes, what a measure's description and questions " +
1070
1118
  "must say, and what a table's grain must say about one row. Read live " +
1071
- "from the platform on every call, with its rulesVersion. Not needed for " +
1072
- "anything else.", {}, async () => ({
1119
+ "from the platform on every call, with its rulesVersion. Ends with how " +
1120
+ "a measure is built as one formula and how a number made of parts is " +
1121
+ "computed; the formula's words are in get_measure_formula_spec. Not " +
1122
+ "needed for anything else.", {}, async () => ({
1073
1123
  content: [{ type: "text", text: await readSemanticKnowledgeRules(client) }],
1074
1124
  }));
1075
1125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAMH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAi7B1B,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAEpE,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sCAAsC,CAAC;AAQ/E;;;;GAIG;AACH,MAAM,qBAAqB,GACzB,iDAAiD;IACjD,wEAAwE;IACxE,UAAU,eAAe,iDAAiD;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,WAAW,CAAC;AAEd,qFAAqF;AACrF,MAAM,8BAA8B,GAClC,2CAA2C;IAC3C,8EAA8E;IAC9E,UAAU,wBAAwB,4CAA4C;IAC9E,wEAAwE;IACxE,kDAAkD;IAClD,yEAAyE;IACzE,8DAA8D,CAAC;AAEjE;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,MAAqB,EACrB,KAAa,EACb,IAAY,EACZ,WAAmB;IAEnB,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAkB,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;IACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,OAAO,CACL,OAAO,IAAI,wCAAwC;QACnD,mBAAmB,OAAO,UAAU;QACpC,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAqB;IAC5D,OAAO,eAAe,CACpB,MAAM,EACN,eAAe,EACf,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAqB;IACpE,OAAO,eAAe,CACpB,MAAM,EACN,wBAAwB,EACxB,sCAAsC,EACtC,8BAA8B,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAqB;IAC1E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2EAA2E;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,+DAA+D,EACjE,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,GAAG,WAAW,KAAK,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE;aAC5D;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,qEAAqE;QACnE,sEAAsE;QACtE,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,yEAAyE;QACzE,gBAAgB,EAClB,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;KACrF,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"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"}
@@ -101,7 +101,9 @@ export function registerMeasureTools(server, client) {
101
101
  "\n\nTHE MEASURES ARE NOT HERE. A measure belongs to the model, not " +
102
102
  "to one table: list_measures({ tableId }) answers which measures read " +
103
103
  "this table, and create_measure defines one. Read this for the column " +
104
- "names a measure's `definition`, `splitBy` or `filters` may use.", {
104
+ "names a measure's formula, `splitBy` or `filters` may use — or " +
105
+ "get_measure_formula_spec({ includeWorkspace: true }) for every " +
106
+ "table's columns at once.", {
105
107
  tableId: z.string().describe("The dynamic table's id."),
106
108
  useDraft: z
107
109
  .boolean()
@@ -123,6 +125,13 @@ export function registerMeasureTools(server, client) {
123
125
  "previous_year. `grain` (none, auto, day, week, month, quarter, year) " +
124
126
  "draws a series. `splitBy` names a column to group by; `limit` (1-50) " +
125
127
  "keeps the largest groups. " +
128
+ "\n\nA MEASURE OVER OTHER MEASURES is computed per group: each of " +
129
+ "its parts is aggregated on its own table, and the formula is applied " +
130
+ "to the results. Its TOTAL is computed again over the whole period, " +
131
+ "never added up from the groups — the total of a margin % is total " +
132
+ "margin over total revenue, not the average of the monthly " +
133
+ "percentages. Report the total you are given; do not sum the series. " +
134
+ "read_measure shows which parts a number is made of. " +
126
135
  "\n\nONE BAD QUESTION DOES NOT FAIL THE CALL: every answer carries " +
127
136
  "`ok`, and `ok: false` comes with an `error` of its own. Check each one. " +
128
137
  "\n\n`freshAsOf` says how old the newest row behind the number is; " +
@@ -1 +1 @@
1
- {"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/tools/dataSources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/tools/dataSources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * A measure is one formula (axonity-mcp#83, the connector half of phase 1 of
3
+ * axonity-flow#1908).
4
+ *
5
+ * A measure used to be one aggregation over one table, or a division of two
6
+ * parts. It is now ONE expression over the model — `[net_revenue] -
7
+ * [variable_costs]`, `divide([cm1], [net_revenue])` — stored as a tree of ids
8
+ * and shown as text of names, the two one-to-one.
9
+ *
10
+ * **The words of the formula are not here.** They come from
11
+ * `GET /measures/formula-spec`, which the platform generates from the module
12
+ * that also parses — the same list its editor shows. A copy in this connector
13
+ * would be a second list, and two lists drift: the reason
14
+ * `get_workflow_authoring_spec` exists. `get_measure_formula_spec` forwards it
15
+ * untouched.
16
+ *
17
+ * **Checking is the platform's too.** `validate_measure` forwards to
18
+ * `POST /measures/validate`, the route the editor calls while somebody types,
19
+ * so an agent and a person can never disagree about whether a formula is
20
+ * acceptable. `read_measure` asks that same route to write the stored tree back
21
+ * as text, rather than this connector unparsing it.
22
+ *
23
+ * The one rule held HERE is the shape of a write: a measure is written as
24
+ * `definition.expression`, and the fields from before the formula are refused
25
+ * with `legacy_field`. The platform still accepts them while its own form is
26
+ * replaced; an agent has no such form to keep working, and a measure written
27
+ * the old way today is one that has to be migrated again.
28
+ */
29
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
30
+ import type { AxonityClient } from "../client.js";
31
+ /** The language: every word, operator, grain, limit, code and recipe. */
32
+ export declare const FORMULA_SPEC_ROUTE = "/api/v1/measures/formula-spec";
33
+ /** The vocabulary of THIS workspace: its measures, tables, columns, calendars. */
34
+ export declare const FORMULA_SYMBOLS_ROUTE = "/api/v1/measures/formula-symbols";
35
+ /** Check a formula without saving it. */
36
+ export declare const VALIDATE_ROUTE = "/api/v1/measures/validate";
37
+ /**
38
+ * Refuse a measure write in the shape from before the formula.
39
+ *
40
+ * Throws with `legacy_field` — the platform's own code for it, so an agent
41
+ * that repairs on codes reads the same word from either side. A `definition`
42
+ * without `expression` is refused too: the platform would quietly store it as
43
+ * a `sum`, which is a definition nobody wrote.
44
+ */
45
+ export declare function assertFormulaShape(fields: Record<string, unknown>): void;
46
+ export declare function registerMeasureFormulaTools(server: McpServer, client: AxonityClient): void;
@@ -0,0 +1,239 @@
1
+ /**
2
+ * A measure is one formula (axonity-mcp#83, the connector half of phase 1 of
3
+ * axonity-flow#1908).
4
+ *
5
+ * A measure used to be one aggregation over one table, or a division of two
6
+ * parts. It is now ONE expression over the model — `[net_revenue] -
7
+ * [variable_costs]`, `divide([cm1], [net_revenue])` — stored as a tree of ids
8
+ * and shown as text of names, the two one-to-one.
9
+ *
10
+ * **The words of the formula are not here.** They come from
11
+ * `GET /measures/formula-spec`, which the platform generates from the module
12
+ * that also parses — the same list its editor shows. A copy in this connector
13
+ * would be a second list, and two lists drift: the reason
14
+ * `get_workflow_authoring_spec` exists. `get_measure_formula_spec` forwards it
15
+ * untouched.
16
+ *
17
+ * **Checking is the platform's too.** `validate_measure` forwards to
18
+ * `POST /measures/validate`, the route the editor calls while somebody types,
19
+ * so an agent and a person can never disagree about whether a formula is
20
+ * acceptable. `read_measure` asks that same route to write the stored tree back
21
+ * as text, rather than this connector unparsing it.
22
+ *
23
+ * The one rule held HERE is the shape of a write: a measure is written as
24
+ * `definition.expression`, and the fields from before the formula are refused
25
+ * with `legacy_field`. The platform still accepts them while its own form is
26
+ * replaced; an agent has no such form to keep working, and a measure written
27
+ * the old way today is one that has to be migrated again.
28
+ */
29
+ import { z } from "zod";
30
+ import { guard, jsonResult } from "./result.js";
31
+ const MEASURES = "/api/v1/measures";
32
+ /** The language: every word, operator, grain, limit, code and recipe. */
33
+ export const FORMULA_SPEC_ROUTE = `${MEASURES}/formula-spec`;
34
+ /** The vocabulary of THIS workspace: its measures, tables, columns, calendars. */
35
+ export const FORMULA_SYMBOLS_ROUTE = `${MEASURES}/formula-symbols`;
36
+ /** Check a formula without saving it. */
37
+ export const VALIDATE_ROUTE = `${MEASURES}/validate`;
38
+ /** Top-level fields from before the formula: the measure's "home table". */
39
+ const LEGACY_TOP = ["tableId", "clearTable"];
40
+ /** Fields inside `definition` that the formula replaces. */
41
+ const LEGACY_DEFINITION = ["aggregation", "column", "numerator", "denominator"];
42
+ /** Present in the sense that matters: sent, and not a null that clears nothing. */
43
+ function isSent(value) {
44
+ return value !== undefined && value !== null && value !== false;
45
+ }
46
+ /**
47
+ * Refuse a measure write in the shape from before the formula.
48
+ *
49
+ * Throws with `legacy_field` — the platform's own code for it, so an agent
50
+ * that repairs on codes reads the same word from either side. A `definition`
51
+ * without `expression` is refused too: the platform would quietly store it as
52
+ * a `sum`, which is a definition nobody wrote.
53
+ */
54
+ export function assertFormulaShape(fields) {
55
+ const found = LEGACY_TOP.filter((key) => isSent(fields[key]));
56
+ const definition = fields.definition;
57
+ if (definition !== undefined && definition !== null) {
58
+ if (typeof definition !== "object" || Array.isArray(definition)) {
59
+ throw new Error("`definition` must be an object with an `expression`.");
60
+ }
61
+ const def = definition;
62
+ found.push(...LEGACY_DEFINITION.filter((key) => isSent(def[key])).map((key) => `definition.${key}`));
63
+ if (found.length === 0 && !isSent(def.expression)) {
64
+ throw new Error("legacy_field: `definition` has no `expression`. A measure is one " +
65
+ "formula — send it as `definition.expression`, e.g. " +
66
+ '"sum(orders.amount)" or "[net_revenue] - [variable_costs]". ' +
67
+ "Read get_measure_formula_spec for the words, and check it with " +
68
+ "validate_measure first.");
69
+ }
70
+ }
71
+ if (found.length === 0)
72
+ return;
73
+ throw new Error(`legacy_field: ${found.map((f) => `\`${f}\``).join(", ")} ` +
74
+ `${found.length === 1 ? "is" : "are"} the shape from before the formula. ` +
75
+ "A measure is one `definition.expression` now, and the tables it reads " +
76
+ "follow from it: `sum(orders.amount)` instead of `tableId` + " +
77
+ "`aggregation` + `column`, `divide(sum(a.x), sum(b.y))` instead of a " +
78
+ "`numerator` and a `denominator`, `… where table.column = 'value'` " +
79
+ "for a condition on one part. Remove these fields and write the " +
80
+ "formula — validate_measure checks it before you save.");
81
+ }
82
+ /**
83
+ * The stored tree, written back as text with its leaves, by the platform.
84
+ *
85
+ * Best effort, and said so: a read must not fail because the explanation
86
+ * could not be produced. When it cannot, the measure comes back as stored with
87
+ * a sentence saying why its formula text is missing.
88
+ */
89
+ async function explainFormula(client, measure, useDraftChain) {
90
+ const expression = measure.definition?.expression;
91
+ if (expression === undefined || expression === null) {
92
+ return {
93
+ formula: null,
94
+ formulaNote: "This measure has no formula yet — it is still in the shape from " +
95
+ "before the formula. Write one with update_measure " +
96
+ "(`definition.expression`).",
97
+ };
98
+ }
99
+ try {
100
+ const checked = (await client.post(VALIDATE_ROUTE, {
101
+ expression,
102
+ measureId: typeof measure.id === "string" ? measure.id : undefined,
103
+ quantity: measure.definition?.quantity ?? undefined,
104
+ format: measure.definition?.format ?? undefined,
105
+ useDraftChain,
106
+ }));
107
+ return {
108
+ formula: {
109
+ text: checked.formula,
110
+ tree: expression,
111
+ leaves: checked.leaves ?? [],
112
+ quantity: checked.quantity ?? null,
113
+ problems: checked.problems ?? [],
114
+ chain: useDraftChain ? "drafts" : "published",
115
+ },
116
+ };
117
+ }
118
+ catch (err) {
119
+ return {
120
+ formula: { text: null, tree: expression },
121
+ formulaNote: "The formula text and its leaves could not be read from this deploy " +
122
+ `(\`POST ${VALIDATE_ROUTE}\`: ${err instanceof Error ? err.message : String(err)}). ` +
123
+ "The stored tree is above.",
124
+ };
125
+ }
126
+ }
127
+ export function registerMeasureFormulaTools(server, client) {
128
+ server.tool("get_measure_formula_spec", "The ONLY valid list of words for a measure's formula — read it BEFORE " +
129
+ "create_measure or update_measure, and never write a function, " +
130
+ "operator or grain from memory. Read-only. " +
131
+ "\n\nServed by the platform from the code that parses a formula, so it " +
132
+ "is the same list its formula editor shows: per word its signature, " +
133
+ "what it returns, its quantity rule and an example; the operators, " +
134
+ "grains and limits; every refusal `code` with `when` and `fix`; " +
135
+ "`recipes` for the numbers a management team asks for (a sum over two " +
136
+ "facts, a margin %, a share of the total); and `buildOrder`. A word " +
137
+ "with `available: false` is coming and is refused by name " +
138
+ "(`not_yet_supported`) — do not use it. " +
139
+ "\n\n`includeWorkspace: true` adds THIS workspace's vocabulary as " +
140
+ "`workspace`: its measures (name, label, quantity, status), its tables " +
141
+ "and columns, and which dimensions each table reaches — the names a " +
142
+ "formula may use. The answer is then `{ spec, workspace }`; without " +
143
+ "it, the spec itself.", {
144
+ includeWorkspace: z
145
+ .boolean()
146
+ .optional()
147
+ .describe("Also return this workspace's measures, tables, columns and " +
148
+ "reachable dimensions. Defaults to false."),
149
+ useDraftChain: z
150
+ .boolean()
151
+ .optional()
152
+ .describe("With includeWorkspace: include tables and measures that were never " +
153
+ "published. Defaults to false — a published number reads " +
154
+ "published definitions."),
155
+ }, async ({ includeWorkspace, useDraftChain }) => guard(async () => {
156
+ const spec = await client.get(FORMULA_SPEC_ROUTE);
157
+ if (!includeWorkspace)
158
+ return jsonResult(spec);
159
+ const workspace = await client.get(FORMULA_SYMBOLS_ROUTE, {
160
+ useDraftChain: useDraftChain ?? false,
161
+ });
162
+ return jsonResult({ spec, workspace });
163
+ }));
164
+ server.tool("validate_measure", "Check a measure's formula WITHOUT saving it — call it before every " +
165
+ "create_measure and update_measure. Read-only. The same check the " +
166
+ "platform's editor runs while somebody types. " +
167
+ "\n\nAnswers `{ ok, formula, expression, quantity, leaves, problems }`: " +
168
+ "`formula` is the one spelling of it (names resolved, the brackets " +
169
+ "that apply shown); `expression` the tree that would be stored; " +
170
+ "`quantity` what the number counts, derived; `leaves` every " +
171
+ "aggregation it folds down to — table, aggregation, column, the " +
172
+ "conditions and ignored dimensions on that part, and the measures " +
173
+ "walked to reach it. " +
174
+ "\n\nEach problem has a `code`, a `message` and `where` (an `offset` " +
175
+ "in the text, or a `path` in the tree). `severity: error` blocks " +
176
+ "saving; a warning does not. Repair on the code — " +
177
+ "get_measure_formula_spec lists every one with its `fix` — before you " +
178
+ "ask a person: `parse_error` (the message says what was expected " +
179
+ "where), `unknown_measure` / `unknown_table` / `unknown_column` " +
180
+ "(similar names are suggested), `ambiguous_column` (write " +
181
+ "table.column), `column_kind`, `arity`, `cycle` (the chain is in the " +
182
+ "message), `too_complex` (give a part its own name), " +
183
+ "`quantity_mismatch` (adding euros to dogs, or a format that does not " +
184
+ "fit), `unreachable_dimension` (declare the relationship, or write " +
185
+ "`ignore` to mean the total on purpose), `not_yet_supported`. " +
186
+ "`quantity_generic` is a warning: the migration left the placeholder " +
187
+ "quantity — say what the number counts.", {
188
+ expression: z
189
+ .union([z.string(), z.record(z.unknown())])
190
+ .describe("The formula, as text (`divide([cm1], [net_revenue])`) or as the " +
191
+ "stored tree."),
192
+ measureId: z
193
+ .string()
194
+ .optional()
195
+ .describe("The measure being edited, when there is one — it is what makes a " +
196
+ "reference back to itself a `cycle`."),
197
+ quantity: z
198
+ .string()
199
+ .optional()
200
+ .describe("What the number counts, when you have said (EUR, customers, " +
201
+ "orders). Required on save for a single aggregation."),
202
+ format: z
203
+ .record(z.unknown())
204
+ .optional()
205
+ .describe("How it will be shown, as on the measure's `definition.format` — " +
206
+ "checked against what the number counts."),
207
+ useDraftChain: z
208
+ .boolean()
209
+ .optional()
210
+ .describe("Read the DRAFTS of the measures underneath instead of their " +
211
+ "published versions. Defaults to false, because a published " +
212
+ "number reads published definitions."),
213
+ }, async (body) => guard(async () => jsonResult(await client.post(VALIDATE_ROUTE, body))));
214
+ server.tool("read_measure", "Read one measure by id, including its current draft and version. Read " +
215
+ "before you update — you need the current version. " +
216
+ "\n\nIts formula comes back twice, from the platform: `formula.text` " +
217
+ "with names, as you would write it, and `formula.tree`, the stored " +
218
+ "form with ids. Beside them `formula.leaves` — the aggregations it " +
219
+ "folds down to, each on its own table — `formula.quantity`, and " +
220
+ "`formula.problems`: a measure that rests on a column or measure that " +
221
+ "has since gone says so here. `readsTables` follows from the leaves; " +
222
+ "there is no home table.", {
223
+ id: z.string().describe("The measure's id."),
224
+ useDraftChain: z
225
+ .boolean()
226
+ .optional()
227
+ .describe("Resolve the measures it rests on from their drafts instead of " +
228
+ "their published versions. Defaults to false; set it for a " +
229
+ "measure whose parts were never published, or their names " +
230
+ "cannot be shown."),
231
+ }, async ({ id, useDraftChain }) => guard(async () => {
232
+ const measure = (await client.get(`${MEASURES}/${id}`));
233
+ return jsonResult({
234
+ ...measure,
235
+ ...(await explainFormula(client, measure, useDraftChain ?? false)),
236
+ });
237
+ }));
238
+ }
239
+ //# sourceMappingURL=measureFormula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measureFormula.js","sourceRoot":"","sources":["../../src/tools/measureFormula.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axonity-ai/mcp",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Model Context Protocol server for Axonity Flow — lets an external agent (e.g. Claude Code) read, draft, and update workflows, agents and tools in an Axonity tenant.",
5
5
  "license": "MIT",
6
6
  "repository": {