@cyanheads/eurostat-mcp-server 0.10.1 → 0.11.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.
Files changed (46) hide show
  1. package/AGENTS.md +15 -4
  2. package/CLAUDE.md +15 -4
  3. package/Dockerfile +4 -0
  4. package/README.md +38 -101
  5. package/changelog/0.11.x/0.11.0.md +33 -0
  6. package/dist/config/server-config.js +1 -1
  7. package/dist/config/server-config.js.map +1 -1
  8. package/dist/index.js +4 -9
  9. package/dist/index.js.map +1 -1
  10. package/dist/mcp-server/tools/clamp-read-limit.d.ts +1 -1
  11. package/dist/mcp-server/tools/clamp-read-limit.d.ts.map +1 -1
  12. package/dist/mcp-server/tools/clamp-read-limit.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts.map +1 -1
  14. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +6 -5
  15. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  16. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +9 -56
  18. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +3 -3
  20. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +70 -1
  21. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +35 -54
  23. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +2 -0
  25. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +31 -17
  27. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/value-list-paging.d.ts +1 -29
  29. package/dist/mcp-server/tools/value-list-paging.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/value-list-paging.js +1 -47
  31. package/dist/mcp-server/tools/value-list-paging.js.map +1 -1
  32. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +1 -0
  33. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  34. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +14 -3
  35. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  36. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  37. package/dist/services/eurostat-data/eurostat-data-service.js +20 -9
  38. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  39. package/dist/services/eurostat-data/types.d.ts +4 -2
  40. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  41. package/dist/services/eurostat-data/types.js +2 -2
  42. package/dist/services/eurostat-data/types.js.map +1 -1
  43. package/package.json +8 -7
  44. package/server.json +9 -9
  45. package/skills/eurostat-guide/SKILL.md +60 -0
  46. package/skills/eurostat-guide/references/sql-analysis.md +40 -0
@@ -6,26 +6,25 @@
6
6
  import { tool, z } from '@cyanheads/mcp-ts-core';
7
7
  import { CanvasIdSchema } from '@cyanheads/mcp-ts-core/canvas';
8
8
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
9
- import { fitPage, INLINE_BUDGET_BYTES, utf8Bytes, } from '../value-list-paging.js';
10
9
  import { acquireCanvas, getCanvas, isCanvasFailure } from '../../../services/canvas-accessor.js';
11
10
  const QueryOutputSchema = z.object({
12
11
  canvasId: z.string().describe('Canvas identifier the query ran against.'),
13
12
  columns: z.array(z.string()).describe('Column names in projection order.'),
14
13
  rows: z
15
14
  .array(z.record(z.string(), z.unknown()))
16
- .describe('Complete result rows, keyed by column name, bounded by the canvas row limit and 64,000 bytes per serialized surface. Nested cells render as JSON; 64-bit integers arrive as strings so they survive intact. Cast to DOUBLE in SQL if a number is wanted.'),
15
+ .describe('Complete result rows, keyed by column name, bounded by the canvas row limit. Nested cells render as JSON; 64-bit integers arrive as strings so they survive intact. Cast to DOUBLE in SQL if a number is wanted.'),
17
16
  rowCount: z
18
17
  .number()
19
- .describe('Complete rows returned after the canvas row limit and the 64,000-byte budget per serialized response surface. Advance SQL OFFSET by this actual count.'),
18
+ .describe('Complete rows returned after the canvas row limit. Advance SQL OFFSET by this actual count.'),
20
19
  truncated: z
21
20
  .boolean()
22
- .describe('True when the canvas row limit or the 64,000-byte budget per serialized response surface omitted rows. At least one complete row is retained even if oversized. Follow notice for SQL paging.'),
21
+ .describe('True when the canvas row limit omitted rows. Follow notice for SQL paging.'),
23
22
  });
24
23
  /** JSON cells preserve nested values, string quoting and escaped line breaks. */
25
24
  function renderRow(columns, row) {
26
25
  return columns.map((column) => `${column}=${JSON.stringify(row[column])}`).join(' | ');
27
26
  }
28
- /** Shared by the formatter and the serialized response budget. */
27
+ /** Render every complete row without changing cell values. */
29
28
  function renderText(result) {
30
29
  return [
31
30
  `# Query result (canvas \`${result.canvasId}\`)`,
@@ -36,11 +35,11 @@ function renderText(result) {
36
35
  }
37
36
  /** Paging depends on a fixed deterministic SELECT over unchanged staged tables. */
38
37
  function cutNotice(rows) {
39
- return `Returned ${rows.toLocaleString('en-US')} complete rows; the canvas row limit or the 64,000-byte budget per serialized response surface cut this result. Page with the same deterministic SELECT and a total ORDER BY (add tie-breakers for tied keys), using LIMIT/OFFSET and advancing OFFSET by the actual returned rowCount, not the requested LIMIT. If the first page had no ORDER BY, restart sorted at OFFSET 0. Volatile expressions and changing or expired tables do not support stable paging.`;
38
+ return `Returned ${rows.toLocaleString('en-US')} complete rows; the canvas row limit cut this result. Page with the same deterministic SELECT and a total ORDER BY (add tie-breakers for tied keys), using LIMIT/OFFSET and advancing OFFSET by the actual returned rowCount, not the requested LIMIT. If the first page had no ORDER BY, restart sorted at OFFSET 0. Volatile expressions and changing or expired tables do not support stable paging.`;
40
39
  }
41
40
  export const eurostatDataframeQuery = tool('eurostat_dataframe_query', {
42
41
  title: 'Query Eurostat Dataframes',
43
- description: 'Run a read-only SQL SELECT against tables staged on a Eurostat dataframe canvas — the way to reach observations past the 5,000-row inline cap of eurostat_query_dataset and past the inline preview of a eurostat_download_dataset bulk download, and to aggregate, group, or join across staged tables without re-fetching from Eurostat. Call eurostat_dataframe_describe first for the table and column names, which differ between the tools that stage them. Only a single SELECT statement runs: statement chaining, non-SELECT verbs, and functions that read files or external data are rejected. Columns are flat — every dimension is a code column named after the dimension, the measure is obs_value, the observation flag is obs_flag / obs_flag_label and the confidentiality marker is conf_status / conf_status_label; a "_label" companion per dimension exists only on tables eurostat_query_dataset staged. Both observation stagers write the same five measure columns with the same codes, so join their tables on dimension codes and time and compare obs_flag or conf_status across them directly; a DS-* table also carries obs_value_text, a value published as text (e.g. a PRODCOM unit "KG"). A value list eurostat_get_dimension_values staged has two columns, code and label: join it to the code column of a download (e.g. JOIN df_x g ON d.geo = g.code) to label that table. Returns complete rows within the canvas row limit and 64,000 bytes per serialized response surface, retaining at least one complete row even if oversized. Nested cells render as JSON. A cut sets truncated and adds a notice: page the same deterministic SELECT over unchanged tables with a total ORDER BY and LIMIT/OFFSET, advancing by actual rowCount; restart an unordered first page sorted at offset zero. Tied keys need tie-breakers; volatile SQL and changing or expired tables cannot provide stable paging.',
42
+ description: 'Run a read-only SQL SELECT against tables staged on a Eurostat dataframe canvas, reaching observations beyond an inline preview and aggregating or joining tables without re-fetching Eurostat. Call eurostat_dataframe_describe first for table and column names. Only a single SELECT runs: statement chaining, non-SELECT verbs, and functions reading files or external data are rejected. Columns are flat: dimension codes, obs_value, obs_flag / obs_flag_label, and conf_status / conf_status_label. Tables eurostat_query_dataset staged also carry dimension _label companions; DS-* tables also carry obs_value_text for published text values. Join observation tables on dimension codes and time. A staged dimension value list has code and label columns; join it to an observation dimension code to add labels. Returns every complete row the canvas supplies, bounded only by the canvas row limit; nested cells render as lossless JSON. A row-limit cut sets truncated and adds a notice: page the same deterministic SELECT over unchanged tables with a total ORDER BY and LIMIT/OFFSET, advancing by actual rowCount. Restart an unordered first page sorted at offset zero; tied keys need tie-breakers. Volatile SQL and changing or expired tables cannot provide stable paging.',
44
43
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
45
44
  input: z.object({
46
45
  canvas_id: CanvasIdSchema.describe('Canvas identifier returned as canvasId by eurostat_query_dataset, eurostat_download_dataset, or eurostat_get_dimension_values. Identifies the workspace holding the staged tables.'),
@@ -106,61 +105,15 @@ export const eurostatDataframeQuery = tool('eurostat_dataframe_query', {
106
105
  * reasons with a vaguer message.
107
106
  */
108
107
  const result = await instance.query(input.sql, { signal: ctx.signal }).catch(asDeclared);
109
- const page = (count) => ({
108
+ const output = {
110
109
  canvasId: instance.canvasId,
111
110
  columns: result.columns,
112
- rows: result.rows.slice(0, count),
113
- rowCount: count,
114
- truncated: result.truncated === true || count < result.rows.length,
115
- });
116
- const measure = (count) => {
117
- const output = page(count);
118
- const notice = output.truncated ? cutNotice(count) : undefined;
119
- const content = [
120
- { type: 'text', text: renderText(output) },
121
- ...(notice ? [{ type: 'text', text: `\n\n> ${notice}` }] : []),
122
- ];
123
- return {
124
- structured: utf8Bytes(JSON.stringify({ ...output, ...(notice && { notice }) })),
125
- text: utf8Bytes(JSON.stringify(content)),
126
- };
127
- };
128
- const costs = [];
129
- const costOf = (index) => {
130
- const cached = costs[index];
131
- if (cached)
132
- return cached;
133
- const row = result.rows[index];
134
- const cost = {
135
- structured: utf8Bytes(JSON.stringify(row)) + 1,
136
- text: utf8Bytes(JSON.stringify(`\n${renderRow(result.columns, row)}`)) - 2,
137
- };
138
- costs[index] = cost;
139
- return cost;
140
- };
141
- /**
142
- * A full result has no cut notice, so it can fit when a partial prefix plus
143
- * that notice cannot. Test that case with additive row costs, stopping at
144
- * the budget instead of serializing an arbitrarily large full result.
145
- */
146
- const empty = {
147
- ...page(0),
111
+ rows: result.rows,
148
112
  rowCount: result.rows.length,
149
113
  truncated: result.truncated === true,
150
114
  };
151
- let structured = utf8Bytes(JSON.stringify(empty));
152
- let text = utf8Bytes(JSON.stringify([{ type: 'text', text: renderText(empty) }]));
153
- let fullFits = !empty.truncated;
154
- for (let index = 0; fullFits && index < result.rows.length; index++) {
155
- const cost = costOf(index);
156
- structured += cost.structured - (index === 0 ? 1 : 0);
157
- text += cost.text;
158
- fullFits = structured <= INLINE_BUDGET_BYTES && text <= INLINE_BUDGET_BYTES;
159
- }
160
- const count = fullFits ? result.rows.length : fitPage(result.rows.length, measure, costOf);
161
- const output = page(count);
162
115
  if (output.truncated)
163
- ctx.enrich.notice(cutNotice(count));
116
+ ctx.enrich.notice(cutNotice(output.rowCount));
164
117
  ctx.log.info('Canvas query complete', {
165
118
  canvasId: instance.canvasId,
166
119
  rowCount: output.rowCount,
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-dataframe-query.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-dataframe-query.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eurostat-dataframe-query.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-dataframe-query.tool.ts"],"names":[],"mappings":"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"}
@@ -59,8 +59,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
59
59
  preview_limit: (clampLimits
60
60
  ? z.number().multipleOf(1).min(1)
61
61
  : z.number().int().min(1).max(PREVIEW_MAX))
62
- .default(50)
63
- .describe(`How many observations to echo inline, from the start of the download. Default 50; ${clampLimits ? 'positive integers above 500 are clamped to 500 with a notice' : 'maximum 500; larger values are rejected'}. The full download is on the canvas table when one was staged; this is orientation, not the result set.`),
62
+ .default(25)
63
+ .describe(`How many observations to echo inline, from the start of the download. Default 25; ${clampLimits ? 'positive integers above 500 are clamped to 500 with a notice' : 'maximum 500; larger values are rejected'}. The full download is on the canvas table when one was staged; this is orientation, not the result set.`),
64
64
  canvas_id: CanvasIdSchema.optional().describe('Reuse an existing dataframe canvas so this download lands beside earlier results and can be joined against them. Pass the canvasId a previous eurostat_download_dataset or eurostat_query_dataset response returned; omit to start a fresh canvas. Ignored on deployments without a dataframe canvas. A download that carries no observations fails as no_results and leaves the canvas untouched.'),
65
65
  }),
66
66
  output: z.object({
@@ -324,7 +324,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
324
324
  * the preview is discarded, but the counts, the period coverage and the
325
325
  * budget verdict then describe the download rather than describing the
326
326
  * preview — and the byte budget still bounds what is transferred. Stopping
327
- * at preview_limit instead would report a row count of 50 for a dataset of
327
+ * at preview_limit instead would report a row count of 25 for a dataset of
328
328
  * millions.
329
329
  */
330
330
  for await (const _row of rows) {
@@ -4,6 +4,75 @@
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ /** Select the count-limit schema before registering the tool. */
8
+ export declare const createEurostatGetDimensionValues: (clampLimits: boolean) => import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
9
+ dataset_code: z.ZodString;
10
+ dimension: z.ZodString;
11
+ geo_level: z.ZodOptional<z.ZodEnum<{
12
+ aggregate: "aggregate";
13
+ country: "country";
14
+ nuts1: "nuts1";
15
+ nuts2: "nuts2";
16
+ nuts3: "nuts3";
17
+ }>>;
18
+ filter: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
19
+ limit: z.ZodDefault<z.ZodNumber>;
20
+ cursor: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
21
+ canvas_id: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ dimensionCode: z.ZodString;
24
+ dimensionLabel: z.ZodString;
25
+ geoLevel: z.ZodOptional<z.ZodEnum<{
26
+ aggregate: "aggregate";
27
+ country: "country";
28
+ nuts1: "nuts1";
29
+ nuts2: "nuts2";
30
+ nuts3: "nuts3";
31
+ }>>;
32
+ values: z.ZodArray<z.ZodObject<{
33
+ code: z.ZodString;
34
+ label: z.ZodString;
35
+ }, z.core.$strip>>;
36
+ totalCount: z.ZodNumber;
37
+ matchCount: z.ZodOptional<z.ZodNumber>;
38
+ canvasId: z.ZodOptional<z.ZodString>;
39
+ tableName: z.ZodOptional<z.ZodString>;
40
+ stagedRowCount: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strip>, readonly [{
42
+ readonly reason: "not_found";
43
+ readonly code: JsonRpcErrorCode.NotFound;
44
+ readonly when: "The dataset code or dimension code does not exist.";
45
+ readonly recovery: "Verify the dataset code with eurostat_search_datasets and the dimension code with eurostat_get_dataset_info.";
46
+ }, {
47
+ readonly reason: "no_results";
48
+ readonly code: JsonRpcErrorCode.NotFound;
49
+ readonly when: "The dataset has no geo values at the effective geo_level.";
50
+ readonly recovery: "Choose a different geo_level. Omitted geo_level means country.";
51
+ }, {
52
+ readonly reason: "conflicting_params";
53
+ readonly code: JsonRpcErrorCode.ValidationError;
54
+ readonly when: "geo_level was combined with a dimension other than \"geo\", where it has no effect; or, on a deployment with a dataframe canvas, canvas_id was combined with cursor, which would stage the list again on every page.";
55
+ readonly recovery: "Drop geo_level for a dimension other than \"geo\"; when paging with cursor, drop canvas_id — a first call that carried canvas_id staged every value.";
56
+ }, {
57
+ readonly reason: "invalid_cursor";
58
+ readonly code: JsonRpcErrorCode.InvalidParams;
59
+ readonly when: "The cursor is malformed, was issued for a different dataset_code, dimension, geo_level or filter, or resumes after a code the list no longer holds.";
60
+ readonly recovery: "Call again without cursor, keeping dataset_code, dimension, geo_level and filter, then page with the nextCursor that call returns.";
61
+ }, {
62
+ readonly reason: "upstream_fault";
63
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
64
+ readonly when: "Eurostat returned a dataset structure or content constraint this server cannot read — malformed, truncated, not XML, or missing the requested dataset's dataflow — or the structure endpoint answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.";
65
+ readonly recovery: "Retry in a few minutes, since a failed structure read is not cached. If it fails the same way, filter eurostat_query_dataset on the code in question: a code the dataset lacks comes back in unmatchedValues.";
66
+ }, {
67
+ readonly reason: "canvas_not_found";
68
+ readonly code: JsonRpcErrorCode.NotFound;
69
+ readonly when: "A canvas_id was supplied for staging but is unknown or its lifetime has elapsed.";
70
+ readonly recovery: "Pass the canvasId a recent eurostat_download_dataset or eurostat_query_dataset response returned, or omit canvas_id to list the values inline only.";
71
+ }], {
72
+ readonly truncated: z.ZodOptional<z.ZodBoolean>;
73
+ readonly nextCursor: z.ZodOptional<z.ZodString>;
74
+ readonly notice: z.ZodOptional<z.ZodString>;
75
+ }>;
7
76
  export declare const eurostatGetDimensionValues: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
77
  dataset_code: z.ZodString;
9
78
  dimension: z.ZodString;
@@ -15,7 +84,7 @@ export declare const eurostatGetDimensionValues: import("@cyanheads/mcp-ts-core"
15
84
  nuts3: "nuts3";
16
85
  }>>;
17
86
  filter: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
18
- limit: z.ZodOptional<z.ZodNumber>;
87
+ limit: z.ZodDefault<z.ZodNumber>;
19
88
  cursor: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
20
89
  canvas_id: z.ZodOptional<z.ZodString>;
21
90
  }, z.core.$strip>, z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-get-dimension-values.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAmJhF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+XrC,CAAC"}
1
+ {"version":3,"file":"eurostat-get-dimension-values.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAkIhF,iEAAiE;AACjE,eAAO,MAAM,gCAAgC,gBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwXjE,CAAC;AAEL,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC"}
@@ -6,7 +6,8 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
6
6
  import { CanvasIdSchema } from '@cyanheads/mcp-ts-core/canvas';
7
7
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
8
8
  import { decodeCursor, encodeCursor } from '@cyanheads/mcp-ts-core/utils';
9
- import { filterTokens, fitPage, INLINE_BUDGET_BYTES, matchValues, utf8Bytes, } from '../value-list-paging.js';
9
+ import { clampReadLimit } from '../clamp-read-limit.js';
10
+ import { filterTokens, matchValues } from '../value-list-paging.js';
10
11
  import { acquireCanvas, getCanvas, isCanvasFailure, newTableName, } from '../../../services/canvas-accessor.js';
11
12
  import { getEurostatDataService } from '../../../services/eurostat-data/eurostat-data-service.js';
12
13
  import { GEO_LEVEL_VALUES } from '../../../services/eurostat-data/types.js';
@@ -22,12 +23,12 @@ const VALUE_TABLE_SCHEMA = [
22
23
  ];
23
24
  /** Longest filter accepted: room for many words, while its echo and cursor stay small. */
24
25
  const FILTER_MAX_CHARS = 500;
25
- /** Page length when no limit was given: the byte budget alone ends the page. */
26
- const NO_LIMIT = Number.MAX_SAFE_INTEGER;
26
+ /** Count limit shared by first pages and legacy cursor continuations. */
27
+ const MAX_PAGE_SIZE = 1000;
27
28
  /** A blank or whitespace-only string from a form client is "unset", never a value to validate. */
28
29
  const blankAsUnset = (schema) => z.preprocess((value) => (typeof value === 'string' && value.trim() === '' ? undefined : value), schema);
29
30
  const formatCount = (n) => n.toLocaleString('en-US');
30
- /** The `content[]` text of the payload — `format()`'s body, shared with the byte measure. */
31
+ /** The `content[]` text of the payload. */
31
32
  function renderText(result) {
32
33
  const listed = result.values.length;
33
34
  const partial = (of) => (listed < of ? ` — ${listed} listed below` : '');
@@ -50,21 +51,6 @@ function renderText(result) {
50
51
  }
51
52
  return lines.join('\n');
52
53
  }
53
- /**
54
- * The framework's `content[]` trailer for one page's enrichment: generic
55
- * `**key:** value` lines, then the notice as a block quote, newline-joined. It
56
- * is mirrored here so a page is measured as the caller receives it; a paging
57
- * test pins the trailer the framework composes to this exact text, so the two
58
- * cannot drift apart unnoticed.
59
- */
60
- function renderTrailer(enrichment) {
61
- const fields = [
62
- ...(enrichment.truncated ? ['**truncated:** true'] : []),
63
- ...(enrichment.nextCursor ? [`**nextCursor:** ${enrichment.nextCursor}`] : []),
64
- ...(enrichment.notice ? [`> ${enrichment.notice}`] : []),
65
- ];
66
- return fields.length > 0 ? `\n\n${fields.join('\n')}` : '';
67
- }
68
54
  /**
69
55
  * Decode a cursor and confirm it belongs to this call in every binding the input
70
56
  * alone settles; `undefined` when it does not. Malformed and mismatched cursors
@@ -77,9 +63,13 @@ function readCursor(cursor, binding, ctx) {
77
63
  const state = decodeCursor(cursor, ctx);
78
64
  if (typeof state.after === 'string' &&
79
65
  state.dataset === binding.dataset &&
80
- state.dimension === binding.dimension &&
81
66
  state.filter === binding.filter) {
82
- return { after: state.after, geoLevel: state.geoLevel, limit: state.limit };
67
+ return {
68
+ after: state.after,
69
+ dimension: state.dimension,
70
+ geoLevel: state.geoLevel,
71
+ limit: state.limit,
72
+ };
83
73
  }
84
74
  }
85
75
  catch {
@@ -89,9 +79,10 @@ function readCursor(cursor, binding, ctx) {
89
79
  }
90
80
  /** The refusal of a cursor that is malformed or belongs to another call. */
91
81
  const UNUSABLE_CURSOR = 'Unusable cursor: it is malformed, or was issued for a different dataset_code, dimension, geo_level or filter.';
92
- export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values', {
82
+ /** Select the count-limit schema before registering the tool. */
83
+ export const createEurostatGetDimensionValues = (clampLimits) => tool('eurostat_get_dimension_values', {
93
84
  title: 'Get Eurostat Dimension Values',
94
- description: `List the valid values for a specific dimension in a Eurostat dataset (e.g., all unit codes for nama_10_gdp, all geo codes for a regional dataset). Use this when eurostat_get_dataset_info returns more values than the 10-item sample, or to confirm exact codes before querying. For the "geo" dimension, use geo_level to filter by NUTS hierarchy (country, nuts1, nuts2, nuts3). An invalid code matches nothing: eurostat_query_dataset names it in unmatchedValues, or in its no_results error when the query matched nothing at all, and Eurostat rejects it as a fault on eurostat_download_dataset; use this tool to verify codes first. To find one code in a long list, such as the 37,069 CN8 product codes of DS-045409, pass filter: words its code or label contains. A long list comes back a page at a time, each response held to ${formatCount(INLINE_BUDGET_BYTES)} bytes; a page with more after it carries nextCursor — pass it back as cursor for the next page. Pass canvas_id to also stage the whole list, whatever its length, as a two-column code/label table on that dataframe canvas: search it with SQL, or join it to a eurostat_download_dataset table, whose columns carry dimension codes only.`,
85
+ description: 'List the valid values for a dimension in a Eurostat dataset, preserving value codes and labels exactly. Use this when eurostat_get_dataset_info returns more values than its sample, or to confirm exact filter codes before querying. Dimension identifiers match exactly first, then case-insensitively; TIME_PERIOD aliases time. For geo, use geo_level to select the NUTS hierarchy (country, nuts1, nuts2, nuts3). To find codes in a long list, pass filter: words its code or label contains. Pages default to 25 values, maximum 1,000; pass nextCursor back as cursor for the next page with the same dataset, dimension, geo level and filter. Canonical and alias dimension spellings resume the same list. Pass canvas_id on the first call to also stage every value as a two-column code/label table, regardless of filter or limit. Inspect that table with eurostat_dataframe_describe, then search or join it with eurostat_dataframe_query.',
95
86
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
96
87
  input: z.object({
97
88
  dataset_code: z
@@ -101,18 +92,17 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
101
92
  dimension: z
102
93
  .string()
103
94
  .min(1)
104
- .describe('Dimension code to retrieve values for (e.g., "unit", "na_item", "geo"). Use eurostat_get_dataset_info to see available dimensions.'),
95
+ .describe('Dimension code to retrieve values for (e.g., "unit", "na_item", "geo"). Exact match first, then case-insensitive; TIME_PERIOD aliases time. Use eurostat_get_dataset_info to see available dimensions.'),
105
96
  geo_level: z
106
97
  .enum(GEO_LEVEL_VALUES)
107
98
  .optional()
108
99
  .describe('NUTS hierarchy level filter — applies only when dimension is "geo"; passing it with any other dimension is rejected. Options: "aggregate" (EU/EA codes), "country" (2-letter codes, default), "nuts1" (3-char), "nuts2" (4-char), "nuts3" (5-char).'),
109
100
  filter: blankAsUnset(z.string().max(FILTER_MAX_CHARS).optional()).describe(`Words to find, up to ${FILTER_MAX_CHARS} characters: keeps only values whose code and label, joined by a space, contain every whitespace-separated word as a substring — in any order, ignoring case and accents ("palma frankfurt" finds DE_EDDF_ES_LEPA, "zurich" finds Zürich). Punctuation is part of a word, and spellings are not transliterated ("münchen" does not find MUENCHEN). Runs over the whole list at the effective geo_level before paging and keeps Eurostat's order, with no ranking; matchCount counts the matches.`),
110
- limit: z
111
- .number()
112
- .int()
113
- .min(1)
114
- .optional()
115
- .describe(`Most values per page. No default and no maximum: without it a page holds as many whole values as fit ${formatCount(INLINE_BUDGET_BYTES)} bytes, and with it the page ends at whichever comes first. Fixed by the first call: on a call with cursor, the cursor carries that first limit and this field is ignored.`),
101
+ limit: (clampLimits
102
+ ? z.number().multipleOf(1).min(1)
103
+ : z.number().int().min(1).max(MAX_PAGE_SIZE))
104
+ .default(25)
105
+ .describe('Most values per page, default 25, maximum 1,000. Larger positive integers clamp with a notice when EUROSTAT_CLAMP_LIMITS is enabled. Fixed by the first call: with cursor, the cursor carries that limit and this field is ignored.'),
116
106
  cursor: blankAsUnset(z.string().optional()).describe("Opaque nextCursor from the previous page; omit for the first page. It resumes after that page's last code and is bound to dataset_code, dimension, geo_level and filter, so send those unchanged. Cannot be combined with canvas_id on a deployment with a dataframe canvas."),
117
107
  canvas_id: CanvasIdSchema.optional().describe('Also stage the values on this dataframe canvas as a table with two columns, code and label, holding every value the dimension lists at the geo_level requested (country when it is omitted), whatever filter and limit are. Pass the canvasId a eurostat_download_dataset or eurostat_query_dataset response returned, then search the staged table with SQL or join it to a download on the dimension column (e.g., d.geo = g.code). Only on a call without cursor; omit to return the values inline only: this tool never starts a canvas. Ignored on deployments without a dataframe canvas.'),
118
108
  }),
@@ -132,7 +122,7 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
132
122
  label: z.string().describe('Human-readable label for this value.'),
133
123
  })
134
124
  .describe('A dimension value code and label pair.'))
135
- .describe(`This page of the dataset-available values, in Eurostat's order — for geo, the subset at geoLevel; with filter, only the matches. A page ends between whole values, at limit or at ${formatCount(INLINE_BUDGET_BYTES)} bytes per response surface, whichever comes first, and holds at least one value; truncated and nextCursor are set when more follow.`),
125
+ .describe("This page of dataset-available values, in Eurostat's order — for geo, the subset at geoLevel; with filter, only the matches. A page holds the effective limit (default 25, maximum 1,000), fewer only at the end; truncated and nextCursor are set when more follow."),
136
126
  totalCount: z
137
127
  .number()
138
128
  .describe('Number of distinct values the dimension lists, after geoLevel filtering for geo — every one, whatever filter and paging apply.'),
@@ -165,7 +155,7 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
165
155
  notice: z
166
156
  .string()
167
157
  .optional()
168
- .describe('On a page with more after it: whether limit or the response budget ended it, and the routes to the rest — nextCursor, filter, and canvas_id. Also explains a filter that matched nothing.'),
158
+ .describe('Count-limit clamp disclosure, continuation routes (nextCursor, filter, canvas_id), or an explanation of a filter that matched nothing.'),
169
159
  },
170
160
  errors: [
171
161
  {
@@ -240,6 +230,8 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
240
230
  catch (err) {
241
231
  const reason = err.data?.reason;
242
232
  if (reason === 'not_found') {
233
+ if (resume)
234
+ throw ctx.fail('invalid_cursor', UNUSABLE_CURSOR);
243
235
  throw ctx.fail('not_found', err.message, {
244
236
  recovery: {
245
237
  hint: `Verify the dataset code with eurostat_search_datasets and the dimension code for "${input.dataset_code}" with eurostat_get_dataset_info.`,
@@ -278,6 +270,9 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
278
270
  }
279
271
  throw err;
280
272
  }
273
+ binding.dimension = result.dimensionCode;
274
+ if (resume && resume.dimension !== result.dimensionCode)
275
+ throw ctx.fail('invalid_cursor', UNUSABLE_CURSOR);
281
276
  /**
282
277
  * Staging needs a caller-supplied canvas: without canvas_id there is nothing
283
278
  * to acquire, so a plain lookup never takes a canvas slot. An empty list
@@ -312,7 +307,8 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
312
307
  * value. The codec's `offset` is recorded but never trusted for position.
313
308
  */
314
309
  let start = 0;
315
- let pageLimit = input.limit ?? NO_LIMIT;
310
+ const applied = clampReadLimit(resume?.limit ?? input.limit, MAX_PAGE_SIZE, 'limit', 'eurostat_get_dimension_values', ctx);
311
+ const pageLimit = applied.value;
316
312
  if (resume) {
317
313
  if (resume.geoLevel !== geoLevel)
318
314
  throw ctx.fail('invalid_cursor', UNUSABLE_CURSOR);
@@ -321,7 +317,6 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
321
317
  throw ctx.fail('invalid_cursor', `Unusable cursor: it resumes after "${resume.after}", which the "${input.dimension}" values of "${input.dataset_code}" no longer list${filtered ? ' under this filter' : ''}.`);
322
318
  }
323
319
  start = anchor + 1;
324
- pageLimit = resume.limit;
325
320
  }
326
321
  const filterEcho = input.filter?.trim().replace(/\s+/g, ' ');
327
322
  const pool = filtered
@@ -341,9 +336,7 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
341
336
  ...staged,
342
337
  };
343
338
  if (start + k < matched.length) {
344
- const endedBy = k === pageLimit
345
- ? `limit ${formatCount(pageLimit)}`
346
- : `the ${formatCount(INLINE_BUDGET_BYTES)}-byte response budget`;
339
+ const endedBy = `limit ${formatCount(pageLimit)}`;
347
340
  return {
348
341
  output,
349
342
  enrichment: {
@@ -373,25 +366,12 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
373
366
  },
374
367
  };
375
368
  };
376
- const measure = (k) => {
377
- const { output, enrichment } = page(k);
378
- return {
379
- structured: utf8Bytes(JSON.stringify({ ...output, ...enrichment })),
380
- text: utf8Bytes(renderText(output) + renderTrailer(enrichment)),
381
- };
382
- };
383
- const costOf = (index) => {
384
- const value = matched[start + index];
385
- return {
386
- structured: utf8Bytes(JSON.stringify(value)) + 1,
387
- text: utf8Bytes(`- \`${value.code}\` — ${value.label}`) + 1,
388
- };
389
- };
390
- const { output, enrichment } = page(fitPage(Math.min(pageLimit, matched.length - start), measure, costOf));
369
+ const { output, enrichment } = page(Math.min(pageLimit, matched.length - start));
391
370
  const { notice, ...fields } = enrichment;
392
371
  ctx.enrich(fields);
393
- if (notice)
394
- ctx.enrich.notice(notice);
372
+ const notices = [applied.notice, notice].filter(Boolean);
373
+ if (notices.length > 0)
374
+ ctx.enrich.notice(notices.join(' '));
395
375
  ctx.log.info('Dimension values fetched', {
396
376
  datasetCode: input.dataset_code,
397
377
  dimension: input.dimension,
@@ -405,4 +385,5 @@ export const eurostatGetDimensionValues = tool('eurostat_get_dimension_values',
405
385
  },
406
386
  format: (result) => [{ type: 'text', text: renderText(result) }],
407
387
  });
388
+ export const eurostatGetDimensionValues = createEurostatGetDimensionValues(true);
408
389
  //# sourceMappingURL=eurostat-get-dimension-values.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-get-dimension-values.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eurostat-get-dimension-values.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare const createEurostatQueryDataset: (clampLimits: boolean) => impor
19
19
  until_period: z.ZodOptional<z.ZodString>;
20
20
  last_n_periods: z.ZodOptional<z.ZodNumber>;
21
21
  preview_limit: z.ZodDefault<z.ZodNumber>;
22
+ stage: z.ZodDefault<z.ZodBoolean>;
22
23
  lang: z.ZodDefault<z.ZodEnum<{
23
24
  DE: "DE";
24
25
  EN: "EN";
@@ -119,6 +120,7 @@ export declare const eurostatQueryDataset: import("@cyanheads/mcp-ts-core").Tool
119
120
  until_period: z.ZodOptional<z.ZodString>;
120
121
  last_n_periods: z.ZodOptional<z.ZodNumber>;
121
122
  preview_limit: z.ZodDefault<z.ZodNumber>;
123
+ stage: z.ZodDefault<z.ZodBoolean>;
122
124
  lang: z.ZodDefault<z.ZodEnum<{
123
125
  DE: "DE";
124
126
  EN: "EN";
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-query-dataset.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-query-dataset.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAkChF,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,gBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAohB3D,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmC,CAAC"}
1
+ {"version":3,"file":"eurostat-query-dataset.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-query-dataset.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAiChF,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,gBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2iB3D,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmC,CAAC"}