umami-compass 0.1.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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +300 -0
  3. package/SECURITY.md +32 -0
  4. package/dist/api/client.d.ts +15 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +313 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/api/errors.d.ts +18 -0
  9. package/dist/api/errors.d.ts.map +1 -0
  10. package/dist/api/errors.js +28 -0
  11. package/dist/api/errors.js.map +1 -0
  12. package/dist/api/types.d.ts +101 -0
  13. package/dist/api/types.d.ts.map +1 -0
  14. package/dist/api/types.js +2 -0
  15. package/dist/api/types.js.map +1 -0
  16. package/dist/cli.d.ts +3 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +46 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/config.d.ts +25 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +148 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/index.d.ts +9 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +8 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/mcp/modules/core.d.ts +3 -0
  29. package/dist/mcp/modules/core.d.ts.map +1 -0
  30. package/dist/mcp/modules/core.js +132 -0
  31. package/dist/mcp/modules/core.js.map +1 -0
  32. package/dist/mcp/modules/events.d.ts +3 -0
  33. package/dist/mcp/modules/events.d.ts.map +1 -0
  34. package/dist/mcp/modules/events.js +77 -0
  35. package/dist/mcp/modules/events.js.map +1 -0
  36. package/dist/mcp/modules/heatmaps.d.ts +3 -0
  37. package/dist/mcp/modules/heatmaps.d.ts.map +1 -0
  38. package/dist/mcp/modules/heatmaps.js +90 -0
  39. package/dist/mcp/modules/heatmaps.js.map +1 -0
  40. package/dist/mcp/modules/performance.d.ts +3 -0
  41. package/dist/mcp/modules/performance.d.ts.map +1 -0
  42. package/dist/mcp/modules/performance.js +114 -0
  43. package/dist/mcp/modules/performance.js.map +1 -0
  44. package/dist/mcp/modules/replay.d.ts +3 -0
  45. package/dist/mcp/modules/replay.d.ts.map +1 -0
  46. package/dist/mcp/modules/replay.js +41 -0
  47. package/dist/mcp/modules/replay.js.map +1 -0
  48. package/dist/mcp/modules/reports.d.ts +3 -0
  49. package/dist/mcp/modules/reports.d.ts.map +1 -0
  50. package/dist/mcp/modules/reports.js +301 -0
  51. package/dist/mcp/modules/reports.js.map +1 -0
  52. package/dist/mcp/modules/revenue.d.ts +3 -0
  53. package/dist/mcp/modules/revenue.d.ts.map +1 -0
  54. package/dist/mcp/modules/revenue.js +57 -0
  55. package/dist/mcp/modules/revenue.js.map +1 -0
  56. package/dist/mcp/modules/sessions.d.ts +3 -0
  57. package/dist/mcp/modules/sessions.d.ts.map +1 -0
  58. package/dist/mcp/modules/sessions.js +75 -0
  59. package/dist/mcp/modules/sessions.js.map +1 -0
  60. package/dist/mcp/report-utils.d.ts +15 -0
  61. package/dist/mcp/report-utils.d.ts.map +1 -0
  62. package/dist/mcp/report-utils.js +58 -0
  63. package/dist/mcp/report-utils.js.map +1 -0
  64. package/dist/mcp/result.d.ts +27 -0
  65. package/dist/mcp/result.d.ts.map +1 -0
  66. package/dist/mcp/result.js +42 -0
  67. package/dist/mcp/result.js.map +1 -0
  68. package/dist/mcp/schemas.d.ts +120 -0
  69. package/dist/mcp/schemas.d.ts.map +1 -0
  70. package/dist/mcp/schemas.js +148 -0
  71. package/dist/mcp/schemas.js.map +1 -0
  72. package/dist/mcp/tool-module.d.ts +19 -0
  73. package/dist/mcp/tool-module.d.ts.map +1 -0
  74. package/dist/mcp/tool-module.js +7 -0
  75. package/dist/mcp/tool-module.js.map +1 -0
  76. package/dist/server.d.ts +13 -0
  77. package/dist/server.d.ts.map +1 -0
  78. package/dist/server.js +100 -0
  79. package/dist/server.js.map +1 -0
  80. package/dist/time.d.ts +6 -0
  81. package/dist/time.d.ts.map +1 -0
  82. package/dist/time.js +51 -0
  83. package/dist/time.js.map +1 -0
  84. package/dist/version.d.ts +2 -0
  85. package/dist/version.d.ts.map +1 -0
  86. package/dist/version.js +2 -0
  87. package/dist/version.js.map +1 -0
  88. package/package.json +78 -0
  89. package/server.json +80 -0
@@ -0,0 +1,114 @@
1
+ import { z } from "zod";
2
+ import { boundedItems, reportDateRange, reportFilters } from "../report-utils.js";
3
+ import { READ_ONLY_ANNOTATIONS, runTool } from "../result.js";
4
+ import { boundedItemsDataSchema, filtersSchema, parseUpstream, seriesRangeQuery, timeSchema, timezoneSchema, unitSchema, uuidSchema, } from "../schemas.js";
5
+ const metricSchema = z
6
+ .enum(["lcp", "inp", "cls", "fcp", "ttfb"])
7
+ .default("lcp")
8
+ .describe("Core Web Vital or related loading metric");
9
+ const dimensionSchema = z.enum(["page", "pageTitle", "device", "browser"]);
10
+ const dimensionKeys = {
11
+ page: "pages",
12
+ pageTitle: "pageTitles",
13
+ device: "devices",
14
+ browser: "browsers",
15
+ };
16
+ const performanceReportSchema = z
17
+ .object({
18
+ chart: z.array(z.json()),
19
+ summary: z.json(),
20
+ pages: z.array(z.json()).optional(),
21
+ pageTitles: z.array(z.json()).optional(),
22
+ devices: z.array(z.json()).optional(),
23
+ browsers: z.array(z.json()).optional(),
24
+ })
25
+ .passthrough();
26
+ const webVitalsOutputSchema = {
27
+ data: z
28
+ .object({
29
+ metric: z.enum(["lcp", "inp", "cls", "fcp", "ttfb"]),
30
+ summary: z.json(),
31
+ chart: boundedItemsDataSchema,
32
+ })
33
+ .passthrough(),
34
+ };
35
+ const performanceBreakdownOutputSchema = {
36
+ data: boundedItemsDataSchema
37
+ .extend({
38
+ metric: z.enum(["lcp", "inp", "cls", "fcp", "ttfb"]),
39
+ dimension: dimensionSchema,
40
+ summary: z.json(),
41
+ })
42
+ .passthrough(),
43
+ };
44
+ function makeRequest(websiteId, start, end, maxRangeDays, metric, timezone, unit, filters) {
45
+ seriesRangeQuery(start, end, maxRangeDays, { timezone, unit, seriesCount: 1 });
46
+ return {
47
+ websiteId,
48
+ type: "performance",
49
+ parameters: {
50
+ ...reportDateRange(start, end, maxRangeDays),
51
+ metric,
52
+ timezone,
53
+ ...(unit ? { unit } : {}),
54
+ },
55
+ filters: reportFilters(filters),
56
+ };
57
+ }
58
+ export const performanceModule = {
59
+ id: "performance",
60
+ access: "read",
61
+ register(server, { client, config }) {
62
+ server.registerTool("get_web_vitals", {
63
+ title: "Get Core Web Vitals",
64
+ description: "Get Umami 3.2 LCP, INP, CLS, FCP and TTFB percentile summaries plus a bounded p50/p75/p95 series for one metric.",
65
+ inputSchema: {
66
+ websiteId: uuidSchema,
67
+ start: timeSchema,
68
+ end: timeSchema,
69
+ metric: metricSchema,
70
+ timezone: timezoneSchema,
71
+ unit: unitSchema,
72
+ maxPoints: z.number().int().min(1).max(1_000).default(366),
73
+ filters: filtersSchema.optional(),
74
+ },
75
+ outputSchema: webVitalsOutputSchema,
76
+ annotations: READ_ONLY_ANNOTATIONS,
77
+ }, ({ websiteId, start, end, metric, timezone, unit, maxPoints, filters }, extra) => runTool(async () => {
78
+ const request = makeRequest(websiteId, start, end, config.maxRangeDays, metric, timezone, unit, filters);
79
+ const report = parseUpstream(performanceReportSchema, await client.runReport(request, extra.signal), "performance report");
80
+ return {
81
+ metric,
82
+ summary: report.summary,
83
+ chart: boundedItems(report.chart, maxPoints),
84
+ };
85
+ }));
86
+ server.registerTool("get_performance_breakdown", {
87
+ title: "Break down Core Web Vitals",
88
+ description: "Rank Umami 3.2 Web Vital percentiles by page, page title, device or browser with explicit context limits.",
89
+ inputSchema: {
90
+ websiteId: uuidSchema,
91
+ start: timeSchema,
92
+ end: timeSchema,
93
+ metric: metricSchema,
94
+ dimension: dimensionSchema,
95
+ timezone: timezoneSchema,
96
+ unit: unitSchema,
97
+ limit: z.number().int().min(1).max(100).default(20),
98
+ filters: filtersSchema.optional(),
99
+ },
100
+ outputSchema: performanceBreakdownOutputSchema,
101
+ annotations: READ_ONLY_ANNOTATIONS,
102
+ }, ({ websiteId, start, end, metric, dimension, timezone, unit, limit, filters }, extra) => runTool(async () => {
103
+ const request = makeRequest(websiteId, start, end, config.maxRangeDays, metric, timezone, unit, filters);
104
+ const report = parseUpstream(performanceReportSchema, await client.runReport(request, extra.signal), "performance report");
105
+ return {
106
+ metric,
107
+ dimension,
108
+ summary: report.summary,
109
+ ...boundedItems(report[dimensionKeys[dimension]], limit),
110
+ };
111
+ }));
112
+ },
113
+ };
114
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/mcp/modules/performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolModule } from "../tool-module.js";
2
+ export declare const replayModule: ToolModule;
3
+ //# sourceMappingURL=replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/mcp/modules/replay.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,UA8C1B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { READ_ONLY_ANNOTATIONS, runTool } from "../result.js";
3
+ import { filtersSchema, pagedOutputSchema, pageSchema, pageSizeSchema, rangeQuery, timeSchema, uuidSchema, } from "../schemas.js";
4
+ export const replayModule = {
5
+ id: "replay",
6
+ access: "read",
7
+ register(server, { client, config }) {
8
+ server.registerTool("list_replays", {
9
+ title: "List session replay metadata",
10
+ description: "List Umami 3.2 session replay metadata. Raw rrweb event payloads are intentionally excluded to limit sensitive and oversized model context.",
11
+ inputSchema: {
12
+ websiteId: uuidSchema,
13
+ start: timeSchema,
14
+ end: timeSchema,
15
+ page: pageSchema,
16
+ pageSize: pageSizeSchema,
17
+ search: z.string().max(500).optional(),
18
+ minDuration: z
19
+ .number()
20
+ .int()
21
+ .min(0)
22
+ .max(86_400)
23
+ .optional()
24
+ .describe("Minimum replay duration in seconds"),
25
+ filters: filtersSchema.optional(),
26
+ },
27
+ outputSchema: pagedOutputSchema,
28
+ annotations: READ_ONLY_ANNOTATIONS,
29
+ }, ({ websiteId, start, end, page, pageSize, search, minDuration, filters }, extra) => runTool(() => {
30
+ client.assertWebsiteAllowed(websiteId);
31
+ return client.get(`websites/${encodeURIComponent(websiteId)}/replays`, {
32
+ ...rangeQuery(start, end, config.maxRangeDays, { filters }),
33
+ page,
34
+ pageSize,
35
+ search,
36
+ minDuration,
37
+ }, extra.signal);
38
+ }));
39
+ },
40
+ };
41
+ //# sourceMappingURL=replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/mcp/modules/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,eAAe,CAAC;AAGvB,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,MAAM;IACd,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QACjC,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;YACE,KAAK,EAAE,8BAA8B;YACrC,WAAW,EACT,6IAA6I;YAC/I,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtC,WAAW,EAAE,CAAC;qBACX,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,MAAM,CAAC;qBACX,QAAQ,EAAE;qBACV,QAAQ,CAAC,oCAAoC,CAAC;gBACjD,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CACjF,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,GAAG,CACf,YAAY,kBAAkB,CAAC,SAAS,CAAC,UAAU,EACnD;gBACE,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC;gBAC3D,IAAI;gBACJ,QAAQ;gBACR,MAAM;gBACN,WAAW;aACZ,EACD,KAAK,CAAC,MAAM,CACb,CAAC;QACJ,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolModule } from "../tool-module.js";
2
+ export declare const reportsModule: ToolModule;
3
+ //# sourceMappingURL=reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../src/mcp/modules/reports.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA4DpD,eAAO,MAAM,aAAa,EAAE,UAwU3B,CAAC"}
@@ -0,0 +1,301 @@
1
+ import { z } from "zod";
2
+ import { UmamiError } from "../../api/errors.js";
3
+ import { boundedItems, boundTopLevelArrays, reportDateRange, reportFilters, requireRecord, } from "../report-utils.js";
4
+ import { READ_ONLY_ANNOTATIONS, runTool } from "../result.js";
5
+ import { boundedItemsOutputSchema, filtersSchema, outputSchema, pagedOutputSchema, pageSchema, pageSizeSchema, recordOutputSchema, timeSchema, timezoneSchema, uuidSchema, } from "../schemas.js";
6
+ const reportTypeSchema = z.enum([
7
+ "attribution",
8
+ "breakdown",
9
+ "funnel",
10
+ "goal",
11
+ "heatmap",
12
+ "journey",
13
+ "performance",
14
+ "retention",
15
+ "revenue",
16
+ "utm",
17
+ ]);
18
+ const breakdownFieldSchema = z.enum([
19
+ "path",
20
+ "referrer",
21
+ "title",
22
+ "query",
23
+ "os",
24
+ "browser",
25
+ "device",
26
+ "country",
27
+ "region",
28
+ "city",
29
+ "tag",
30
+ "hostname",
31
+ "distinctId",
32
+ "language",
33
+ "event",
34
+ "utmSource",
35
+ "utmMedium",
36
+ "utmCampaign",
37
+ "utmContent",
38
+ "utmTerm",
39
+ ]);
40
+ const currencySchema = z
41
+ .string()
42
+ .length(3)
43
+ .transform((value) => value.toUpperCase())
44
+ .optional();
45
+ const maxItemsSchema = z.number().int().min(1).max(100).default(20);
46
+ function commonRequest(websiteId, start, end, maxRangeDays, filters) {
47
+ return {
48
+ websiteId,
49
+ dates: reportDateRange(start, end, maxRangeDays),
50
+ filters: reportFilters(filters),
51
+ };
52
+ }
53
+ export const reportsModule = {
54
+ id: "reports",
55
+ access: "read",
56
+ register(server, { client, config }) {
57
+ server.registerTool("list_saved_reports", {
58
+ title: "List saved Umami reports",
59
+ description: "List saved report definitions for one website without modifying them.",
60
+ inputSchema: {
61
+ websiteId: uuidSchema,
62
+ type: reportTypeSchema.optional(),
63
+ page: pageSchema,
64
+ pageSize: pageSizeSchema,
65
+ },
66
+ outputSchema: pagedOutputSchema,
67
+ annotations: READ_ONLY_ANNOTATIONS,
68
+ }, ({ websiteId, type, page, pageSize }, extra) => runTool(() => {
69
+ client.assertWebsiteAllowed(websiteId);
70
+ return client.get(`websites/${encodeURIComponent(websiteId)}/reports`, { type, page, pageSize }, extra.signal);
71
+ }));
72
+ server.registerTool("get_saved_report", {
73
+ title: "Get a saved Umami report",
74
+ description: "Get one saved report definition. The website ID is required to enforce the local allowlist and is verified against the response.",
75
+ inputSchema: { websiteId: uuidSchema, reportId: uuidSchema },
76
+ outputSchema: recordOutputSchema,
77
+ annotations: READ_ONLY_ANNOTATIONS,
78
+ }, ({ websiteId, reportId }, extra) => runTool(async () => {
79
+ client.assertWebsiteAllowed(websiteId);
80
+ const report = requireRecord(await client.get(`reports/${encodeURIComponent(reportId)}`, undefined, extra.signal));
81
+ if (typeof report.websiteId !== "string" ||
82
+ report.websiteId.toLowerCase() !== websiteId) {
83
+ throw new UmamiError("FORBIDDEN", "The saved report does not belong to that website.");
84
+ }
85
+ return report;
86
+ }));
87
+ server.registerTool("list_segments", {
88
+ title: "List Umami segments or cohorts",
89
+ description: "List reusable website segments or cohorts with bounded model context.",
90
+ inputSchema: {
91
+ websiteId: uuidSchema,
92
+ type: z.enum(["segment", "cohort"]),
93
+ search: z.string().max(500).optional(),
94
+ limit: z.number().int().min(1).max(100).default(50),
95
+ },
96
+ outputSchema: boundedItemsOutputSchema,
97
+ annotations: READ_ONLY_ANNOTATIONS,
98
+ }, ({ websiteId, type, search, limit }, extra) => runTool(async () => {
99
+ client.assertWebsiteAllowed(websiteId);
100
+ const result = await client.get(`websites/${encodeURIComponent(websiteId)}/segments`, { type, search }, extra.signal);
101
+ return { type, ...boundedItems(result, limit) };
102
+ }));
103
+ server.registerTool("run_goal_report", {
104
+ title: "Run a goal report",
105
+ description: "Calculate an Umami conversion goal for a path or custom event.",
106
+ inputSchema: {
107
+ websiteId: uuidSchema,
108
+ start: timeSchema,
109
+ end: timeSchema,
110
+ type: z.enum(["path", "event"]),
111
+ value: z.string().min(1).max(500),
112
+ filters: filtersSchema.optional(),
113
+ },
114
+ outputSchema,
115
+ annotations: READ_ONLY_ANNOTATIONS,
116
+ }, ({ websiteId, start, end, type, value, filters }, extra) => runTool(() => {
117
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
118
+ const request = {
119
+ websiteId,
120
+ type: "goal",
121
+ parameters: { ...common.dates, type, value },
122
+ filters: common.filters,
123
+ };
124
+ return client.runReport(request, extra.signal);
125
+ }));
126
+ server.registerTool("run_funnel_report", {
127
+ title: "Run a funnel report",
128
+ description: "Calculate a 2–8 step Umami funnel. windowMinutes controls the allowed time between consecutive steps.",
129
+ inputSchema: {
130
+ websiteId: uuidSchema,
131
+ start: timeSchema,
132
+ end: timeSchema,
133
+ windowMinutes: z.number().int().min(1).max(10_080).default(60),
134
+ steps: z
135
+ .array(z.object({
136
+ type: z.enum(["path", "event"]),
137
+ value: z.string().min(1).max(500),
138
+ filters: z
139
+ .array(z.object({
140
+ property: z.string().min(1).max(200),
141
+ operator: z.enum(["eq", "neq", "c", "dnc"]),
142
+ value: z.string().max(500),
143
+ }))
144
+ .max(10)
145
+ .optional(),
146
+ }))
147
+ .min(2)
148
+ .max(8),
149
+ filters: filtersSchema.optional(),
150
+ },
151
+ outputSchema,
152
+ annotations: READ_ONLY_ANNOTATIONS,
153
+ }, ({ websiteId, start, end, windowMinutes, steps, filters }, extra) => runTool(() => {
154
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
155
+ const request = {
156
+ websiteId,
157
+ type: "funnel",
158
+ parameters: { ...common.dates, window: windowMinutes, steps },
159
+ filters: common.filters,
160
+ };
161
+ return client.runReport(request, extra.signal);
162
+ }));
163
+ server.registerTool("run_journey_report", {
164
+ title: "Run a journey report",
165
+ description: "Calculate the most common 2–7 step user journeys and return a bounded ranking.",
166
+ inputSchema: {
167
+ websiteId: uuidSchema,
168
+ start: timeSchema,
169
+ end: timeSchema,
170
+ steps: z.number().int().min(2).max(7),
171
+ startStep: z.string().min(1).max(500).optional(),
172
+ endStep: z.string().min(1).max(500).optional(),
173
+ eventType: z.number().int().positive().optional(),
174
+ limit: maxItemsSchema,
175
+ filters: filtersSchema.optional(),
176
+ },
177
+ outputSchema: boundedItemsOutputSchema,
178
+ annotations: READ_ONLY_ANNOTATIONS,
179
+ }, ({ websiteId, start, end, steps, startStep, endStep, eventType, limit, filters }, extra) => runTool(async () => {
180
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
181
+ const request = {
182
+ websiteId,
183
+ type: "journey",
184
+ parameters: {
185
+ ...common.dates,
186
+ steps,
187
+ ...(startStep ? { startStep } : {}),
188
+ ...(endStep ? { endStep } : {}),
189
+ ...(eventType ? { eventType } : {}),
190
+ },
191
+ filters: common.filters,
192
+ };
193
+ return boundedItems(await client.runReport(request, extra.signal), limit);
194
+ }));
195
+ server.registerTool("run_retention_report", {
196
+ title: "Run a retention report",
197
+ description: "Calculate daily Umami cohort retention and return a bounded result set.",
198
+ inputSchema: {
199
+ websiteId: uuidSchema,
200
+ start: timeSchema,
201
+ end: timeSchema,
202
+ timezone: timezoneSchema,
203
+ limit: z.number().int().min(1).max(500).default(100),
204
+ filters: filtersSchema.optional(),
205
+ },
206
+ outputSchema: boundedItemsOutputSchema,
207
+ annotations: READ_ONLY_ANNOTATIONS,
208
+ }, ({ websiteId, start, end, timezone, limit, filters }, extra) => runTool(async () => {
209
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
210
+ const request = {
211
+ websiteId,
212
+ type: "retention",
213
+ parameters: { ...common.dates, timezone },
214
+ filters: common.filters,
215
+ };
216
+ return boundedItems(await client.runReport(request, extra.signal), limit);
217
+ }));
218
+ server.registerTool("run_utm_report", {
219
+ title: "Run a UTM report",
220
+ description: "Calculate Umami source, medium, campaign, term and content performance with bounded category arrays.",
221
+ inputSchema: {
222
+ websiteId: uuidSchema,
223
+ start: timeSchema,
224
+ end: timeSchema,
225
+ limit: maxItemsSchema,
226
+ filters: filtersSchema.optional(),
227
+ },
228
+ outputSchema,
229
+ annotations: READ_ONLY_ANNOTATIONS,
230
+ }, ({ websiteId, start, end, limit, filters }, extra) => runTool(async () => {
231
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
232
+ const request = {
233
+ websiteId,
234
+ type: "utm",
235
+ parameters: common.dates,
236
+ filters: common.filters,
237
+ };
238
+ return boundTopLevelArrays(await client.runReport(request, extra.signal), limit);
239
+ }));
240
+ server.registerTool("run_attribution_report", {
241
+ title: "Run an attribution report",
242
+ description: "Calculate first-click or last-click attribution for a conversion path or event with bounded channel arrays.",
243
+ inputSchema: {
244
+ websiteId: uuidSchema,
245
+ start: timeSchema,
246
+ end: timeSchema,
247
+ model: z.enum(["first-click", "last-click"]),
248
+ type: z.enum(["path", "event"]),
249
+ step: z.string().min(1).max(500),
250
+ currency: currencySchema,
251
+ limit: maxItemsSchema,
252
+ filters: filtersSchema.optional(),
253
+ },
254
+ outputSchema,
255
+ annotations: READ_ONLY_ANNOTATIONS,
256
+ }, ({ websiteId, start, end, model, type, step, currency, limit, filters }, extra) => runTool(async () => {
257
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
258
+ const request = {
259
+ websiteId,
260
+ type: "attribution",
261
+ parameters: {
262
+ ...common.dates,
263
+ model,
264
+ type,
265
+ step,
266
+ ...(currency ? { currency } : {}),
267
+ },
268
+ filters: common.filters,
269
+ };
270
+ return boundTopLevelArrays(await client.runReport(request, extra.signal), limit);
271
+ }));
272
+ server.registerTool("run_breakdown_report", {
273
+ title: "Run a multi-field breakdown",
274
+ description: "Cross-tabulate up to three Umami dimensions and return the highest-ranked bounded rows.",
275
+ inputSchema: {
276
+ websiteId: uuidSchema,
277
+ start: timeSchema,
278
+ end: timeSchema,
279
+ fields: z
280
+ .array(breakdownFieldSchema)
281
+ .min(1)
282
+ .max(3)
283
+ .refine((items) => new Set(items).size === items.length, "fields must be unique"),
284
+ limit: z.number().int().min(1).max(100).default(20),
285
+ filters: filtersSchema.optional(),
286
+ },
287
+ outputSchema: boundedItemsOutputSchema,
288
+ annotations: READ_ONLY_ANNOTATIONS,
289
+ }, ({ websiteId, start, end, fields, limit, filters }, extra) => runTool(async () => {
290
+ const common = commonRequest(websiteId, start, end, config.maxRangeDays, filters);
291
+ const request = {
292
+ websiteId,
293
+ type: "breakdown",
294
+ parameters: { ...common.dates, fields: fields },
295
+ filters: common.filters,
296
+ };
297
+ return boundedItems(await client.runReport(request, extra.signal), limit);
298
+ }));
299
+ },
300
+ };
301
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../src/mcp/modules/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAWjD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,UAAU,GACX,MAAM,eAAe,CAAC;AAGvB,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,aAAa;IACb,WAAW;IACX,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;IACb,WAAW;IACX,SAAS;IACT,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IAClC,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,IAAI;IACJ,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,KAAK;IACL,UAAU;IACV,YAAY;IACZ,UAAU;IACV,OAAO;IACP,WAAW;IACX,WAAW;IACX,aAAa;IACb,YAAY;IACZ,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,CAAC;KACT,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KACzC,QAAQ,EAAE,CAAC;AAEd,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEpE,SAAS,aAAa,CACpB,SAAiB,EACjB,KAAsB,EACtB,GAAoB,EACpB,YAAoB,EACpB,OAA4C;IAE5C,OAAO;QACL,SAAS;QACT,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC;QAChD,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,EAAE,EAAE,SAAS;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QACjC,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;YACE,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,uEAAuE;YACpF,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;gBACjC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,cAAc;aACzB;YACD,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAC7C,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,GAAG,CACf,YAAY,kBAAkB,CAAC,SAAS,CAAC,UAAU,EACnD,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EACxB,KAAK,CAAC,MAAM,CACb,CAAC;QACJ,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;YACE,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,kIAAkI;YACpI,WAAW,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;YAC5D,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CACjC,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,aAAa,CAC1B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CACrF,CAAC;YACF,IACE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBACpC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,SAAS,EAC5C,CAAC;gBACD,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,mDAAmD,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;YACE,KAAK,EAAE,gCAAgC;YACvC,WAAW,EAAE,uEAAuE;YACpF,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aACpD;YACD,YAAY,EAAE,wBAAwB;YACtC,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAC5C,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,kBAAkB,CAAC,SAAS,CAAC,WAAW,EACpD,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,KAAK,CAAC,MAAM,CACb,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;YACE,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,gEAAgE;YAC7E,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY;YACZ,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CACzD,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAAsB;gBACjC,SAAS;gBACT,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;YACE,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EACT,uGAAuG;YACzG,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,KAAK,EAAE,CAAC;qBACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;oBACjC,OAAO,EAAE,CAAC;yBACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;wBACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBACpC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;qBAC3B,CAAC,CACH;yBACA,GAAG,CAAC,EAAE,CAAC;yBACP,QAAQ,EAAE;iBACd,CAAC,CACH;qBACA,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,CAAC,CAAC;gBACT,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY;YACZ,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAClE,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAAwB;gBACnC,SAAS;gBACT,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE;gBAC7D,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;YACE,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,gFAAgF;YAClF,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;gBACjD,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY,EAAE,wBAAwB;YACtC,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CACzF,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAAyB;gBACpC,SAAS;gBACT,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE;oBACV,GAAG,MAAM,CAAC,KAAK;oBACf,KAAK;oBACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpC;gBACD,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,YAAY,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;YACE,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EAAE,yEAAyE;YACtF,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpD,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY,EAAE,wBAAwB;YACtC,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAC7D,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAA2B;gBACtC,SAAS;gBACT,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACzC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,YAAY,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;YACE,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,sGAAsG;YACxG,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY;YACZ,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAAqB;gBAChC,SAAS;gBACT,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,MAAM,CAAC,KAAK;gBACxB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,mBAAmB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;YACE,KAAK,EAAE,2BAA2B;YAClC,WAAW,EACT,6GAA6G;YAC/G,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBAChC,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY;YACZ,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAChF,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAA6B;gBACxC,SAAS;gBACT,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,GAAG,MAAM,CAAC,KAAK;oBACf,KAAK;oBACL,IAAI;oBACJ,IAAI;oBACJ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClC;gBACD,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,mBAAmB,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;YACE,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,yFAAyF;YAC3F,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,UAAU;gBACf,MAAM,EAAE,CAAC;qBACN,KAAK,CAAC,oBAAoB,CAAC;qBAC3B,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,CAAC,CAAC;qBACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC;gBACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;aAClC;YACD,YAAY,EAAE,wBAAwB;YACtC,WAAW,EAAE,qBAAqB;SACnC,EACD,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAC3D,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAClF,MAAM,OAAO,GAA2B;gBACtC,SAAS;gBACT,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAA0B,EAAE;gBACnE,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,OAAO,YAAY,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolModule } from "../tool-module.js";
2
+ export declare const revenueModule: ToolModule;
3
+ //# sourceMappingURL=revenue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revenue.d.ts","sourceRoot":"","sources":["../../../src/mcp/modules/revenue.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQpD,eAAO,MAAM,aAAa,EAAE,UAoE3B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from "zod";
2
+ import { boundedItems } from "../report-utils.js";
3
+ import { READ_ONLY_ANNOTATIONS, runTool } from "../result.js";
4
+ import { boundedItemsOutputSchema, filtersSchema, rangeQuery, recordOutputSchema, timeSchema, uuidSchema, } from "../schemas.js";
5
+ const currencySchema = z
6
+ .string()
7
+ .length(3)
8
+ .transform((value) => value.toUpperCase())
9
+ .describe("Three-letter display currency, for example USD or EUR");
10
+ export const revenueModule = {
11
+ id: "revenue",
12
+ access: "read",
13
+ register(server, { client, config }) {
14
+ server.registerTool("get_revenue_stats", {
15
+ title: "Get revenue statistics",
16
+ description: "Get Umami 3.2 revenue totals and comparison values in a chosen currency.",
17
+ inputSchema: {
18
+ websiteId: uuidSchema,
19
+ start: timeSchema,
20
+ end: timeSchema,
21
+ currency: currencySchema,
22
+ filters: filtersSchema.optional(),
23
+ },
24
+ outputSchema: recordOutputSchema,
25
+ annotations: READ_ONLY_ANNOTATIONS,
26
+ }, ({ websiteId, start, end, currency, filters }, extra) => runTool(() => {
27
+ client.assertWebsiteAllowed(websiteId);
28
+ return client.get(`websites/${encodeURIComponent(websiteId)}/revenue/stats`, {
29
+ ...rangeQuery(start, end, config.maxRangeDays, { filters }),
30
+ currency,
31
+ }, extra.signal);
32
+ }));
33
+ server.registerTool("get_revenue_metrics", {
34
+ title: "Break down revenue metrics",
35
+ description: "Break down Umami 3.2 revenue by country, region, referrer or channel.",
36
+ inputSchema: {
37
+ websiteId: uuidSchema,
38
+ start: timeSchema,
39
+ end: timeSchema,
40
+ currency: currencySchema,
41
+ type: z.enum(["country", "region", "referrer", "channel"]),
42
+ limit: z.number().int().min(1).max(100).default(20),
43
+ filters: filtersSchema.optional(),
44
+ },
45
+ outputSchema: boundedItemsOutputSchema,
46
+ annotations: READ_ONLY_ANNOTATIONS,
47
+ }, ({ websiteId, start, end, currency, type, limit, filters }, extra) => runTool(async () => {
48
+ client.assertWebsiteAllowed(websiteId);
49
+ return boundedItems(await client.get(`websites/${encodeURIComponent(websiteId)}/revenue/metrics`, {
50
+ ...rangeQuery(start, end, config.maxRangeDays, { filters }),
51
+ currency,
52
+ type,
53
+ }, extra.signal), limit);
54
+ }));
55
+ },
56
+ };
57
+ //# sourceMappingURL=revenue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revenue.js","sourceRoot":"","sources":["../../../src/mcp/modules/revenue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolModule } from "../tool-module.js";
2
+ export declare const sessionsModule: ToolModule;
3
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/mcp/modules/sessions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,UAgH5B,CAAC"}