@cesteral/dbm-mcp 1.0.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 (227) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +197 -0
  3. package/dist/config/index.d.ts +112 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +55 -0
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/generated/compatibility-rules.d.ts +26 -0
  8. package/dist/generated/compatibility-rules.d.ts.map +1 -0
  9. package/dist/generated/compatibility-rules.js +142 -0
  10. package/dist/generated/compatibility-rules.js.map +1 -0
  11. package/dist/generated/filters.d.ts +19 -0
  12. package/dist/generated/filters.d.ts.map +1 -0
  13. package/dist/generated/filters.js +2541 -0
  14. package/dist/generated/filters.js.map +1 -0
  15. package/dist/generated/index.d.ts +5 -0
  16. package/dist/generated/index.d.ts.map +1 -0
  17. package/dist/generated/index.js +5 -0
  18. package/dist/generated/index.js.map +1 -0
  19. package/dist/generated/metrics.d.ts +28 -0
  20. package/dist/generated/metrics.d.ts.map +1 -0
  21. package/dist/generated/metrics.js +961 -0
  22. package/dist/generated/metrics.js.map +1 -0
  23. package/dist/generated/report-types.d.ts +14 -0
  24. package/dist/generated/report-types.d.ts.map +1 -0
  25. package/dist/generated/report-types.js +94 -0
  26. package/dist/generated/report-types.js.map +1 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +51 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  34. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  38. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js +164 -0
  42. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js +204 -0
  46. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +66 -0
  50. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js +179 -0
  54. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/types.d.ts +15 -0
  56. package/dist/mcp-server/prompts/definitions/types.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/types.js +2 -0
  58. package/dist/mcp-server/prompts/definitions/types.js.map +1 -0
  59. package/dist/mcp-server/prompts/index.d.ts +6 -0
  60. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/index.js +57 -0
  62. package/dist/mcp-server/prompts/index.js.map +1 -0
  63. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts +3 -0
  64. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts.map +1 -0
  65. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js +130 -0
  66. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js.map +1 -0
  67. package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts +4 -0
  68. package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts.map +1 -0
  69. package/dist/mcp-server/resources/definitions/filter-types.resource.js +198 -0
  70. package/dist/mcp-server/resources/definitions/filter-types.resource.js.map +1 -0
  71. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  72. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/definitions/index.js +49 -0
  74. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  75. package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts +4 -0
  76. package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts.map +1 -0
  77. package/dist/mcp-server/resources/definitions/metric-types.resource.js +221 -0
  78. package/dist/mcp-server/resources/definitions/metric-types.resource.js.map +1 -0
  79. package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts +169 -0
  80. package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts.map +1 -0
  81. package/dist/mcp-server/resources/definitions/query-examples.resource.js +261 -0
  82. package/dist/mcp-server/resources/definitions/query-examples.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/report-types.resource.d.ts +3 -0
  84. package/dist/mcp-server/resources/definitions/report-types.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/report-types.resource.js +198 -0
  86. package/dist/mcp-server/resources/definitions/report-types.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/index.d.ts +3 -0
  88. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/index.js +2 -0
  90. package/dist/mcp-server/resources/index.js.map +1 -0
  91. package/dist/mcp-server/resources/types.d.ts +16 -0
  92. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/types.js +2 -0
  94. package/dist/mcp-server/resources/types.js.map +1 -0
  95. package/dist/mcp-server/server.d.ts +5 -0
  96. package/dist/mcp-server/server.d.ts.map +1 -0
  97. package/dist/mcp-server/server.js +115 -0
  98. package/dist/mcp-server/server.js.map +1 -0
  99. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts +89 -0
  100. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts.map +1 -0
  101. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js +128 -0
  102. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js.map +1 -0
  103. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts +155 -0
  104. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts.map +1 -0
  105. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js +160 -0
  106. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js.map +1 -0
  107. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +138 -0
  108. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
  109. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +171 -0
  110. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
  111. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts +122 -0
  112. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts.map +1 -0
  113. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js +143 -0
  114. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/index.d.ts +8 -0
  116. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/index.js +23 -0
  118. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts +4 -0
  120. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js +46 -0
  122. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts +186 -0
  124. package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/run-custom-query.tool.js +202 -0
  126. package/dist/mcp-server/tools/definitions/run-custom-query.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/index.d.ts +2 -0
  128. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/index.js +2 -0
  130. package/dist/mcp-server/tools/index.js.map +1 -0
  131. package/dist/mcp-server/tools/utils/query-validation.d.ts +44 -0
  132. package/dist/mcp-server/tools/utils/query-validation.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/utils/query-validation.js +107 -0
  134. package/dist/mcp-server/tools/utils/query-validation.js.map +1 -0
  135. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  136. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  138. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  139. package/dist/mcp-server/transports/streamable-http-transport.d.ts +55 -0
  140. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  141. package/dist/mcp-server/transports/streamable-http-transport.js +55 -0
  142. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  143. package/dist/services/bid-manager/BidManagerService.d.ts +68 -0
  144. package/dist/services/bid-manager/BidManagerService.d.ts.map +1 -0
  145. package/dist/services/bid-manager/BidManagerService.js +464 -0
  146. package/dist/services/bid-manager/BidManagerService.js.map +1 -0
  147. package/dist/services/bid-manager/auth-bridge.d.ts +6 -0
  148. package/dist/services/bid-manager/auth-bridge.d.ts.map +1 -0
  149. package/dist/services/bid-manager/auth-bridge.js +13 -0
  150. package/dist/services/bid-manager/auth-bridge.js.map +1 -0
  151. package/dist/services/bid-manager/client.d.ts +4 -0
  152. package/dist/services/bid-manager/client.d.ts.map +1 -0
  153. package/dist/services/bid-manager/client.js +2 -0
  154. package/dist/services/bid-manager/client.js.map +1 -0
  155. package/dist/services/bid-manager/index.d.ts +6 -0
  156. package/dist/services/bid-manager/index.d.ts.map +1 -0
  157. package/dist/services/bid-manager/index.js +4 -0
  158. package/dist/services/bid-manager/index.js.map +1 -0
  159. package/dist/services/bid-manager/report-parser.d.ts +26 -0
  160. package/dist/services/bid-manager/report-parser.d.ts.map +1 -0
  161. package/dist/services/bid-manager/report-parser.js +141 -0
  162. package/dist/services/bid-manager/report-parser.js.map +1 -0
  163. package/dist/services/bid-manager/types.d.ts +668 -0
  164. package/dist/services/bid-manager/types.d.ts.map +1 -0
  165. package/dist/services/bid-manager/types.js +256 -0
  166. package/dist/services/bid-manager/types.js.map +1 -0
  167. package/dist/services/session-services.d.ts +12 -0
  168. package/dist/services/session-services.d.ts.map +1 -0
  169. package/dist/services/session-services.js +18 -0
  170. package/dist/services/session-services.js.map +1 -0
  171. package/dist/types-global/bid-manager.d.ts +76 -0
  172. package/dist/types-global/bid-manager.d.ts.map +1 -0
  173. package/dist/types-global/bid-manager.js +2 -0
  174. package/dist/types-global/bid-manager.js.map +1 -0
  175. package/dist/types-global/index.d.ts +2 -0
  176. package/dist/types-global/index.d.ts.map +1 -0
  177. package/dist/types-global/index.js +2 -0
  178. package/dist/types-global/index.js.map +1 -0
  179. package/dist/types-global/mcp.d.ts +2 -0
  180. package/dist/types-global/mcp.d.ts.map +1 -0
  181. package/dist/types-global/mcp.js +2 -0
  182. package/dist/types-global/mcp.js.map +1 -0
  183. package/dist/utils/date.d.ts +2 -0
  184. package/dist/utils/date.d.ts.map +1 -0
  185. package/dist/utils/date.js +7 -0
  186. package/dist/utils/date.js.map +1 -0
  187. package/dist/utils/errors/bid-manager-errors.d.ts +57 -0
  188. package/dist/utils/errors/bid-manager-errors.d.ts.map +1 -0
  189. package/dist/utils/errors/bid-manager-errors.js +119 -0
  190. package/dist/utils/errors/bid-manager-errors.js.map +1 -0
  191. package/dist/utils/errors/index.d.ts +3 -0
  192. package/dist/utils/errors/index.d.ts.map +1 -0
  193. package/dist/utils/errors/index.js +3 -0
  194. package/dist/utils/errors/index.js.map +1 -0
  195. package/dist/utils/index.d.ts +4 -0
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/index.js +4 -0
  198. package/dist/utils/index.js.map +1 -0
  199. package/dist/utils/math.d.ts +9 -0
  200. package/dist/utils/math.d.ts.map +1 -0
  201. package/dist/utils/math.js +38 -0
  202. package/dist/utils/math.js.map +1 -0
  203. package/dist/utils/metrics.d.ts +21 -0
  204. package/dist/utils/metrics.d.ts.map +1 -0
  205. package/dist/utils/metrics.js +92 -0
  206. package/dist/utils/metrics.js.map +1 -0
  207. package/dist/utils/platform.d.ts +3 -0
  208. package/dist/utils/platform.d.ts.map +1 -0
  209. package/dist/utils/platform.js +5 -0
  210. package/dist/utils/platform.js.map +1 -0
  211. package/dist/utils/security/index.d.ts +2 -0
  212. package/dist/utils/security/index.d.ts.map +1 -0
  213. package/dist/utils/security/index.js +2 -0
  214. package/dist/utils/security/index.js.map +1 -0
  215. package/dist/utils/security/rate-limiter.d.ts +3 -0
  216. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  217. package/dist/utils/security/rate-limiter.js +5 -0
  218. package/dist/utils/security/rate-limiter.js.map +1 -0
  219. package/dist/utils/telemetry/index.d.ts +2 -0
  220. package/dist/utils/telemetry/index.d.ts.map +1 -0
  221. package/dist/utils/telemetry/index.js +2 -0
  222. package/dist/utils/telemetry/index.js.map +1 -0
  223. package/dist/utils/telemetry/tracing.d.ts +3 -0
  224. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  225. package/dist/utils/telemetry/tracing.js +4 -0
  226. package/dist/utils/telemetry/tracing.js.map +1 -0
  227. package/package.json +60 -0
@@ -0,0 +1,46 @@
1
+ import { registerAsyncTaskTool, McpError, JsonRpcErrorCode } from "@cesteral/shared";
2
+ import { RunCustomQueryInputSchema, RunCustomQueryOutputSchema, runCustomQueryLogic, runCustomQueryResponseFormatter, } from "./run-custom-query.tool.js";
3
+ import { validateQueryParams } from "../utils/query-validation.js";
4
+ export function registerRunCustomQueryAsyncTool(server, logger, sessionId) {
5
+ registerAsyncTaskTool({
6
+ server: server,
7
+ logger,
8
+ sessionId,
9
+ invalidParams: (message) => new McpError(JsonRpcErrorCode.InvalidParams, message),
10
+ config: {
11
+ name: "dbm_run_custom_query_async",
12
+ title: "Run Custom Query (Async)",
13
+ description: "Execute a custom Bid Manager API query asynchronously. Returns a task handle immediately — " +
14
+ "poll via tasks/getTask for status, retrieve results via tasks/getTaskResult when complete. " +
15
+ "Use this for large or complex queries that may take time to execute.\n\n" +
16
+ "Accepts the same parameters as dbm_run_custom_query.",
17
+ inputSchema: RunCustomQueryInputSchema,
18
+ outputSchema: RunCustomQueryOutputSchema,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ destructiveHint: false,
22
+ openWorldHint: false,
23
+ idempotentHint: true,
24
+ },
25
+ validate: (input) => {
26
+ const { errors } = validateQueryParams(input, input.strictValidation !== false);
27
+ return errors.map((e) => ({
28
+ message: e.message,
29
+ nextAction: e.resourceUri
30
+ ? `Read MCP resource ${e.resourceUri} for allowed values, then retry dbm_run_custom_query_async.`
31
+ : "Read filter-types://all, metric-types://all, or report-types://all for allowed query values, then retry dbm_run_custom_query_async.",
32
+ }));
33
+ },
34
+ execute: async (input, ctx) => {
35
+ const sdkContext = ctx.sessionId ? { sessionId: ctx.sessionId } : undefined;
36
+ return runCustomQueryLogic(input, {
37
+ requestId: ctx.requestId,
38
+ timestamp: new Date().toISOString(),
39
+ operation: "dbm_run_custom_query_async",
40
+ }, sdkContext);
41
+ },
42
+ formatContent: (output, input) => runCustomQueryResponseFormatter(output, input),
43
+ },
44
+ });
45
+ }
46
+ //# sourceMappingURL=run-custom-query-async.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-custom-query-async.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/run-custom-query-async.tool.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,+BAA+B,GAEhC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,MAAc,EACd,SAAkB;IAElB,qBAAqB,CAAC;QACpB,MAAM,EAAE,MAA0E;QAClF,MAAM;QACN,SAAS;QACT,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;QACjF,MAAM,EAAE;YACN,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,0BAA0B;YACjC,WAAW,EACT,6FAA6F;gBAC7F,6FAA6F;gBAC7F,0EAA0E;gBAC1E,sDAAsD;YACxD,WAAW,EAAE,yBAAyB;YACtC,YAAY,EAAE,0BAA0B;YACxC,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,KAAK;gBACpB,cAAc,EAAE,IAAI;aACrB;YACD,QAAQ,EAAE,CAAC,KAA0B,EAAE,EAAE;gBACvC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC;gBAChF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,UAAU,EAAE,CAAC,CAAC,WAAW;wBACvB,CAAC,CAAC,qBAAqB,CAAC,CAAC,WAAW,6DAA6D;wBACjG,CAAC,CAAC,qIAAqI;iBAC1I,CAAC,CAAC,CAAC;YACN,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,KAA0B,EAAE,GAAG,EAAE,EAAE;gBACjD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,OAAO,mBAAmB,CACxB,KAAK,EACL;oBACE,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,4BAA4B;iBACxC,EACD,UAAU,CACX,CAAC;YACJ,CAAC;YACD,aAAa,EAAE,CAAC,MAAM,EAAE,KAA0B,EAAE,EAAE,CACpD,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC;SACjD;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,186 @@
1
+ import { z } from "zod";
2
+ import type { RequestContext, McpTextContent } from "@cesteral/shared";
3
+ import type { SdkContext, ToolDefinition } from "@cesteral/shared";
4
+ export declare const RunCustomQueryInputSchema: z.ZodEffects<z.ZodObject<{
5
+ reportType: z.ZodDefault<z.ZodString>;
6
+ groupBys: z.ZodArray<z.ZodString, "many">;
7
+ metrics: z.ZodArray<z.ZodString, "many">;
8
+ filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
9
+ type: z.ZodString;
10
+ value: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ value: string;
13
+ type: string;
14
+ }, {
15
+ value: string;
16
+ type: string;
17
+ }>, "many">>;
18
+ dateRange: z.ZodUnion<[z.ZodObject<{
19
+ preset: z.ZodString;
20
+ }, "strip", z.ZodTypeAny, {
21
+ preset: string;
22
+ }, {
23
+ preset: string;
24
+ }>, z.ZodObject<{
25
+ startDate: z.ZodString;
26
+ endDate: z.ZodString;
27
+ }, "strip", z.ZodTypeAny, {
28
+ startDate: string;
29
+ endDate: string;
30
+ }, {
31
+ startDate: string;
32
+ endDate: string;
33
+ }>]>;
34
+ strictValidation: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
35
+ outputFormat: z.ZodDefault<z.ZodOptional<z.ZodEnum<["structured", "csv"]>>>;
36
+ } & {
37
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["summary", "rows"]>>>;
38
+ columns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
39
+ offset: z.ZodOptional<z.ZodNumber>;
40
+ maxRows: z.ZodOptional<z.ZodNumber>;
41
+ aggregateBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
42
+ aggregateMetrics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["sum", "avg", "count", "min", "max"]>>>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ metrics: string[];
45
+ groupBys: string[];
46
+ reportType: string;
47
+ dateRange: {
48
+ preset: string;
49
+ } | {
50
+ startDate: string;
51
+ endDate: string;
52
+ };
53
+ strictValidation: boolean;
54
+ outputFormat: "structured" | "csv";
55
+ mode: "rows" | "summary";
56
+ filters?: {
57
+ value: string;
58
+ type: string;
59
+ }[] | undefined;
60
+ columns?: string[] | undefined;
61
+ offset?: number | undefined;
62
+ maxRows?: number | undefined;
63
+ aggregateBy?: string[] | undefined;
64
+ aggregateMetrics?: Record<string, "sum" | "avg" | "count" | "min" | "max"> | undefined;
65
+ }, {
66
+ metrics: string[];
67
+ groupBys: string[];
68
+ dateRange: {
69
+ preset: string;
70
+ } | {
71
+ startDate: string;
72
+ endDate: string;
73
+ };
74
+ filters?: {
75
+ value: string;
76
+ type: string;
77
+ }[] | undefined;
78
+ reportType?: string | undefined;
79
+ columns?: string[] | undefined;
80
+ strictValidation?: boolean | undefined;
81
+ outputFormat?: "structured" | "csv" | undefined;
82
+ mode?: "rows" | "summary" | undefined;
83
+ offset?: number | undefined;
84
+ maxRows?: number | undefined;
85
+ aggregateBy?: string[] | undefined;
86
+ aggregateMetrics?: Record<string, "sum" | "avg" | "count" | "min" | "max"> | undefined;
87
+ }>, {
88
+ metrics: string[];
89
+ groupBys: string[];
90
+ reportType: string;
91
+ dateRange: {
92
+ preset: string;
93
+ } | {
94
+ startDate: string;
95
+ endDate: string;
96
+ };
97
+ strictValidation: boolean;
98
+ outputFormat: "structured" | "csv";
99
+ mode: "rows" | "summary";
100
+ filters?: {
101
+ value: string;
102
+ type: string;
103
+ }[] | undefined;
104
+ columns?: string[] | undefined;
105
+ offset?: number | undefined;
106
+ maxRows?: number | undefined;
107
+ aggregateBy?: string[] | undefined;
108
+ aggregateMetrics?: Record<string, "sum" | "avg" | "count" | "min" | "max"> | undefined;
109
+ }, {
110
+ metrics: string[];
111
+ groupBys: string[];
112
+ dateRange: {
113
+ preset: string;
114
+ } | {
115
+ startDate: string;
116
+ endDate: string;
117
+ };
118
+ filters?: {
119
+ value: string;
120
+ type: string;
121
+ }[] | undefined;
122
+ reportType?: string | undefined;
123
+ columns?: string[] | undefined;
124
+ strictValidation?: boolean | undefined;
125
+ outputFormat?: "structured" | "csv" | undefined;
126
+ mode?: "rows" | "summary" | undefined;
127
+ offset?: number | undefined;
128
+ maxRows?: number | undefined;
129
+ aggregateBy?: string[] | undefined;
130
+ aggregateMetrics?: Record<string, "sum" | "avg" | "count" | "min" | "max"> | undefined;
131
+ }>;
132
+ export declare const RunCustomQueryOutputSchema: z.ZodObject<{
133
+ timestamp: z.ZodString;
134
+ totalRows: z.ZodNumber;
135
+ returnedRows: z.ZodNumber;
136
+ truncated: z.ZodBoolean;
137
+ nextOffset: z.ZodNullable<z.ZodNumber>;
138
+ headers: z.ZodArray<z.ZodString, "many">;
139
+ selectedColumns: z.ZodArray<z.ZodString, "many">;
140
+ mode: z.ZodEnum<["summary", "rows"]>;
141
+ previewRows: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
142
+ rows: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
143
+ warnings: z.ZodArray<z.ZodString, "many">;
144
+ queryId: z.ZodString;
145
+ reportId: z.ZodString;
146
+ status: z.ZodString;
147
+ rowCount: z.ZodNumber;
148
+ }, "strip", z.ZodTypeAny, {
149
+ status: string;
150
+ headers: string[];
151
+ queryId: string;
152
+ reportId: string;
153
+ rowCount: number;
154
+ timestamp: string;
155
+ mode: "rows" | "summary";
156
+ totalRows: number;
157
+ returnedRows: number;
158
+ truncated: boolean;
159
+ nextOffset: number | null;
160
+ selectedColumns: string[];
161
+ warnings: string[];
162
+ rows?: Record<string, any>[] | undefined;
163
+ previewRows?: Record<string, any>[] | undefined;
164
+ }, {
165
+ status: string;
166
+ headers: string[];
167
+ queryId: string;
168
+ reportId: string;
169
+ rowCount: number;
170
+ timestamp: string;
171
+ mode: "rows" | "summary";
172
+ totalRows: number;
173
+ returnedRows: number;
174
+ truncated: boolean;
175
+ nextOffset: number | null;
176
+ selectedColumns: string[];
177
+ warnings: string[];
178
+ rows?: Record<string, any>[] | undefined;
179
+ previewRows?: Record<string, any>[] | undefined;
180
+ }>;
181
+ export type RunCustomQueryInput = z.infer<typeof RunCustomQueryInputSchema>;
182
+ export type RunCustomQueryOutput = z.infer<typeof RunCustomQueryOutputSchema>;
183
+ export declare function runCustomQueryLogic(input: RunCustomQueryInput, _context: RequestContext, sdkContext?: SdkContext): Promise<RunCustomQueryOutput>;
184
+ export declare function runCustomQueryResponseFormatter(result: RunCustomQueryOutput, input: RunCustomQueryInput): McpTextContent[];
185
+ export declare const runCustomQueryTool: ToolDefinition<typeof RunCustomQueryInputSchema, typeof RunCustomQueryOutputSchema>;
186
+ //# sourceMappingURL=run-custom-query.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-custom-query.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/run-custom-query.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuBnE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6E4B,CAAC;AAKnE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASK,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAK9E,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,cAAc,EACxB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAgE/B;AAKD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,mBAAmB,GACzB,cAAc,EAAE,CAwBlB;AAKD,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAC7C,OAAO,yBAAyB,EAChC,OAAO,0BAA0B,CA8ClC,CAAC"}
@@ -0,0 +1,202 @@
1
+ import { z } from "zod";
2
+ import { resolveSessionServices } from "../utils/resolve-session.js";
3
+ import { createReportView, formatReportViewResponse, ReportViewInputSchema, ReportViewOutputSchema, } from "@cesteral/shared";
4
+ import { addQueryValidationIssues, validateQueryParams } from "../utils/query-validation.js";
5
+ import { McpError, JsonRpcErrorCode } from "@cesteral/shared";
6
+ const TOOL_NAME = "dbm_run_custom_query";
7
+ const TOOL_TITLE = "Run Custom Query";
8
+ const TOOL_DESCRIPTION = `Execute a custom Bid Manager API query with any combination of filters and metrics.
9
+
10
+ For available options, fetch these MCP Resources:
11
+ - filter-types://all - Complete list of ~280 filter/dimension types
12
+ - filter-types://category/{slug} - Category-specific filter subsets (e.g. filter-types://category/time)
13
+ - metric-types://all - Complete list of ~100 metric types
14
+ - metric-types://category/{slug} - Category-specific metric subsets (e.g. metric-types://category/video)
15
+ - report-types://all - Report types and date range presets
16
+ - query-examples://all - Example queries for common use cases
17
+
18
+ Common groupBys: FILTER_DATE, FILTER_MEDIA_PLAN, FILTER_LINE_ITEM, FILTER_DEVICE_TYPE
19
+ Common metrics: METRIC_IMPRESSIONS, METRIC_CLICKS, METRIC_CTR, METRIC_TOTAL_MEDIA_COST_ADVERTISER`;
20
+ export const RunCustomQueryInputSchema = z
21
+ .object({
22
+ reportType: z
23
+ .string()
24
+ .default("STANDARD")
25
+ .describe("Report type: STANDARD (default), FLOODLIGHT, YOUTUBE, GRP, REACH, UNIQUE_REACH_AUDIENCE"),
26
+ groupBys: z
27
+ .array(z.string())
28
+ .min(1)
29
+ .describe("Dimensions to group results by (e.g., FILTER_DATE, FILTER_MEDIA_PLAN, FILTER_LINE_ITEM). See filter-types://all"),
30
+ metrics: z
31
+ .array(z.string())
32
+ .min(1)
33
+ .describe("Metrics to include (e.g., METRIC_IMPRESSIONS, METRIC_CLICKS, METRIC_CTR). See metric-types://all"),
34
+ filters: z
35
+ .array(z.object({
36
+ type: z.string().describe("Filter type (e.g., FILTER_ADVERTISER)"),
37
+ value: z.string().describe("Filter value (e.g., advertiser ID)"),
38
+ }))
39
+ .optional()
40
+ .describe("Filters to apply. Example: [{type: 'FILTER_ADVERTISER', value: '123456'}]"),
41
+ dateRange: z
42
+ .union([
43
+ z.object({
44
+ preset: z
45
+ .string()
46
+ .describe("Preset: LAST_7_DAYS, LAST_30_DAYS, MONTH_TO_DATE, PREVIOUS_MONTH, YEAR_TO_DATE, etc."),
47
+ }),
48
+ z.object({
49
+ startDate: z
50
+ .string()
51
+ .regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD")
52
+ .describe("Start date YYYY-MM-DD"),
53
+ endDate: z
54
+ .string()
55
+ .regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD")
56
+ .describe("End date YYYY-MM-DD"),
57
+ }),
58
+ ])
59
+ .describe("Date range: {preset: 'LAST_7_DAYS'} or {startDate: '2025-01-01', endDate: '2025-01-31'}"),
60
+ strictValidation: z
61
+ .boolean()
62
+ .optional()
63
+ .default(true)
64
+ .describe("If true (default), reject unknown filters/metrics. If false, pass through to API."),
65
+ outputFormat: z
66
+ .enum(["structured", "csv"])
67
+ .optional()
68
+ .default("structured")
69
+ .describe("Deprecated. Results are always returned as a bounded report view; csv requests add a warning."),
70
+ })
71
+ .merge(ReportViewInputSchema)
72
+ .superRefine((input, ctx) => {
73
+ addQueryValidationIssues(ctx, input);
74
+ })
75
+ .describe("Parameters for executing a custom Bid Manager query");
76
+ export const RunCustomQueryOutputSchema = z
77
+ .object({
78
+ queryId: z.string().describe("Bid Manager query ID"),
79
+ reportId: z.string().describe("Bid Manager report ID"),
80
+ status: z.string().describe("Query execution status"),
81
+ rowCount: z.number().describe("Total number of rows in the report"),
82
+ ...ReportViewOutputSchema.shape,
83
+ timestamp: z.string().datetime().describe("Execution timestamp"),
84
+ })
85
+ .describe("Custom query execution result");
86
+ export async function runCustomQueryLogic(input, _context, sdkContext) {
87
+ const strictValidation = input.strictValidation !== false;
88
+ const { warnings, errors } = validateQueryParams(input, strictValidation);
89
+ if (errors.length > 0) {
90
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Custom query validation failed with ${errors.length} issue(s). Resolve invalid values and retry.`, {
91
+ issues: errors.map((error) => ({
92
+ code: error.code,
93
+ message: error.message,
94
+ value: error.value,
95
+ resourceUri: error.resourceUri,
96
+ path: error.path,
97
+ })),
98
+ requestId: _context?.requestId,
99
+ });
100
+ }
101
+ const { bidManagerService } = resolveSessionServices(sdkContext);
102
+ const result = await bidManagerService.executeCustomQuery({
103
+ reportType: input.reportType,
104
+ groupBys: input.groupBys,
105
+ metrics: input.metrics,
106
+ filters: input.filters,
107
+ dateRange: input.dateRange,
108
+ outputFormat: input.outputFormat,
109
+ });
110
+ const warningsOut = warnings.length > 0 ? [...warnings] : [];
111
+ if (input.outputFormat === "csv") {
112
+ warningsOut.push('outputFormat: "csv" is deprecated for MCP responses; returned a bounded structured report view instead.');
113
+ }
114
+ const rows = typeof result.data === "string" ? [] : result.data;
115
+ if (typeof result.data === "string") {
116
+ warningsOut.push('CSV result was not embedded to avoid MCP response-size failures. Use outputFormat: "structured" for bounded row previews.');
117
+ }
118
+ return {
119
+ queryId: result.queryId,
120
+ reportId: result.reportId,
121
+ status: result.status,
122
+ rowCount: result.rowCount,
123
+ ...createReportView({
124
+ headers: result.columns,
125
+ rows,
126
+ totalRows: result.rowCount,
127
+ input,
128
+ warnings: warningsOut,
129
+ }),
130
+ timestamp: new Date().toISOString(),
131
+ };
132
+ }
133
+ export function runCustomQueryResponseFormatter(result, input) {
134
+ const dateRangeStr = "preset" in input.dateRange
135
+ ? input.dateRange.preset
136
+ : `${input.dateRange.startDate} to ${input.dateRange.endDate}`;
137
+ return [
138
+ {
139
+ type: "text",
140
+ text: `Custom Query Results
141
+
142
+ Query Details:
143
+ - Report Type: ${input.reportType}
144
+ - Group By: ${input.groupBys.join(", ")}
145
+ - Metrics: ${input.metrics.join(", ")}
146
+ - Date Range: ${dateRangeStr}
147
+ - Filters: ${input.filters?.map((f) => `${f.type}=${f.value}`).join(", ") || "none"}
148
+ ${result.warnings ? `\nWarnings:\n${result.warnings.map((w) => `- ${w}`).join("\n")}` : ""}
149
+
150
+ Results: ${result.rowCount} rows
151
+
152
+ ${formatReportViewResponse(result, "Data preview")}`,
153
+ },
154
+ ];
155
+ }
156
+ export const runCustomQueryTool = {
157
+ name: TOOL_NAME,
158
+ title: TOOL_TITLE,
159
+ description: TOOL_DESCRIPTION,
160
+ inputSchema: RunCustomQueryInputSchema,
161
+ outputSchema: RunCustomQueryOutputSchema,
162
+ annotations: {
163
+ readOnlyHint: true,
164
+ destructiveHint: false,
165
+ openWorldHint: false,
166
+ idempotentHint: true,
167
+ },
168
+ inputExamples: [
169
+ {
170
+ label: "Campaign delivery with preset date range",
171
+ input: {
172
+ reportType: "STANDARD",
173
+ groupBys: ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
174
+ metrics: ["METRIC_IMPRESSIONS", "METRIC_CLICKS", "METRIC_TOTAL_MEDIA_COST_ADVERTISER"],
175
+ dateRange: { preset: "LAST_7_DAYS" },
176
+ },
177
+ },
178
+ {
179
+ label: "Custom date range with advertiser filter",
180
+ input: {
181
+ reportType: "STANDARD",
182
+ groupBys: ["FILTER_ADVERTISER", "FILTER_LINE_ITEM"],
183
+ metrics: ["METRIC_IMPRESSIONS", "METRIC_REVENUE_ADVERTISER"],
184
+ filters: [{ type: "FILTER_ADVERTISER", value: "1234567" }],
185
+ dateRange: { startDate: "2025-01-01", endDate: "2025-01-31" },
186
+ },
187
+ },
188
+ {
189
+ label: "YouTube report with CSV output",
190
+ input: {
191
+ reportType: "YOUTUBE",
192
+ groupBys: ["FILTER_DATE", "FILTER_LINE_ITEM"],
193
+ metrics: ["METRIC_TRUEVIEW_VIEWS", "METRIC_TRUEVIEW_VIEW_RATE"],
194
+ dateRange: { preset: "LAST_30_DAYS" },
195
+ outputFormat: "csv",
196
+ },
197
+ },
198
+ ],
199
+ logic: runCustomQueryLogic,
200
+ responseFormatter: runCustomQueryResponseFormatter,
201
+ };
202
+ //# sourceMappingURL=run-custom-query.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-custom-query.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/run-custom-query.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { allTools } from "./definitions/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { allTools } from "./definitions/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ export interface QueryValidationIssue {
3
+ code: "unknown_report_type" | "unknown_group_by" | "unknown_metric" | "unknown_filter" | "unknown_date_range";
4
+ message: string;
5
+ value: string;
6
+ resourceUri: string;
7
+ path: Array<string | number>;
8
+ }
9
+ export interface QueryValidationResult {
10
+ warnings: string[];
11
+ errors: QueryValidationIssue[];
12
+ }
13
+ export declare function validateQueryParams(input: {
14
+ reportType: string;
15
+ groupBys: string[];
16
+ metrics: string[];
17
+ filters?: Array<{
18
+ type: string;
19
+ value: string;
20
+ }>;
21
+ dateRange: {
22
+ preset: string;
23
+ } | {
24
+ startDate: string;
25
+ endDate: string;
26
+ };
27
+ }, strictValidation: boolean): QueryValidationResult;
28
+ export declare function addQueryValidationIssues(ctx: z.RefinementCtx, input: {
29
+ reportType: string;
30
+ groupBys: string[];
31
+ metrics: string[];
32
+ filters?: Array<{
33
+ type: string;
34
+ value: string;
35
+ }>;
36
+ dateRange: {
37
+ preset: string;
38
+ } | {
39
+ startDate: string;
40
+ endDate: string;
41
+ };
42
+ strictValidation?: boolean;
43
+ }): void;
44
+ //# sourceMappingURL=query-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-validation.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EACA,qBAAqB,GACrB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAmDD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE;IACL,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,EACD,gBAAgB,EAAE,OAAO,GACxB,qBAAqB,CAyCvB;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,CAAC,CAAC,aAAa,EACpB,KAAK,EAAE;IACL,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,IAAI,CAcN"}
@@ -0,0 +1,107 @@
1
+ import { z } from "zod";
2
+ import { isValidDataRange, isValidFilterType, isValidMetricType, isValidReportType, } from "../../../generated/index.js";
3
+ function issue(code, value, path) {
4
+ switch (code) {
5
+ case "unknown_report_type":
6
+ return {
7
+ code,
8
+ value,
9
+ path,
10
+ resourceUri: "report-types://all",
11
+ message: `Unknown report type: ${value}. Fetch report-types://all for valid options.`,
12
+ };
13
+ case "unknown_group_by":
14
+ return {
15
+ code,
16
+ value,
17
+ path,
18
+ resourceUri: "filter-types://all",
19
+ message: `Unknown filter type in groupBys: ${value}. Fetch filter-types://all for valid options.`,
20
+ };
21
+ case "unknown_metric":
22
+ return {
23
+ code,
24
+ value,
25
+ path,
26
+ resourceUri: "metric-types://all",
27
+ message: `Unknown metric type: ${value}. Fetch metric-types://all for valid options.`,
28
+ };
29
+ case "unknown_filter":
30
+ return {
31
+ code,
32
+ value,
33
+ path,
34
+ resourceUri: "filter-types://all",
35
+ message: `Unknown filter type in filters: ${value}. Fetch filter-types://all for valid options.`,
36
+ };
37
+ case "unknown_date_range":
38
+ return {
39
+ code,
40
+ value,
41
+ path,
42
+ resourceUri: "report-types://all",
43
+ message: `Unknown date range preset: ${value}. Fetch report-types://all for valid options.`,
44
+ };
45
+ }
46
+ }
47
+ export function validateQueryParams(input, strictValidation) {
48
+ const warnings = [];
49
+ const errors = [];
50
+ if (!isValidReportType(input.reportType)) {
51
+ const err = issue("unknown_report_type", input.reportType, ["reportType"]);
52
+ if (strictValidation)
53
+ errors.push(err);
54
+ else
55
+ warnings.push(`${err.message} Passing through to API because strictValidation=false.`);
56
+ }
57
+ input.groupBys.forEach((groupBy, index) => {
58
+ if (!isValidFilterType(groupBy)) {
59
+ const err = issue("unknown_group_by", groupBy, ["groupBys", index]);
60
+ if (strictValidation)
61
+ errors.push(err);
62
+ else
63
+ warnings.push(`${err.message} Passing through to API because strictValidation=false.`);
64
+ }
65
+ });
66
+ input.metrics.forEach((metric, index) => {
67
+ if (!isValidMetricType(metric)) {
68
+ const err = issue("unknown_metric", metric, ["metrics", index]);
69
+ if (strictValidation)
70
+ errors.push(err);
71
+ else
72
+ warnings.push(`${err.message} Passing through to API because strictValidation=false.`);
73
+ }
74
+ });
75
+ input.filters?.forEach((filter, index) => {
76
+ if (!isValidFilterType(filter.type)) {
77
+ const err = issue("unknown_filter", filter.type, ["filters", index, "type"]);
78
+ if (strictValidation)
79
+ errors.push(err);
80
+ else
81
+ warnings.push(`${err.message} Passing through to API because strictValidation=false.`);
82
+ }
83
+ });
84
+ if ("preset" in input.dateRange && !isValidDataRange(input.dateRange.preset)) {
85
+ const err = issue("unknown_date_range", input.dateRange.preset, ["dateRange", "preset"]);
86
+ if (strictValidation)
87
+ errors.push(err);
88
+ else
89
+ warnings.push(`${err.message} Passing through to API because strictValidation=false.`);
90
+ }
91
+ return { warnings, errors };
92
+ }
93
+ export function addQueryValidationIssues(ctx, input) {
94
+ const strictValidation = input.strictValidation !== false;
95
+ if (!strictValidation) {
96
+ return;
97
+ }
98
+ const { errors } = validateQueryParams(input, true);
99
+ for (const err of errors) {
100
+ ctx.addIssue({
101
+ code: z.ZodIssueCode.custom,
102
+ path: err.path,
103
+ message: err.message,
104
+ });
105
+ }
106
+ }
107
+ //# sourceMappingURL=query-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-validation.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type SessionServices } from "../../../services/session-services.js";
2
+ import type { SdkContext } from "@cesteral/shared";
3
+ export declare function resolveSessionServices(sdkContext?: SdkContext): SessionServices;
4
+ //# sourceMappingURL=resolve-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-session.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/resolve-session.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,eAAe,CAE/E"}
@@ -0,0 +1,6 @@
1
+ import { resolveSessionServicesFromStore } from "@cesteral/shared";
2
+ import { sessionServiceStore } from "../../../services/session-services.js";
3
+ export function resolveSessionServices(sdkContext) {
4
+ return resolveSessionServicesFromStore(sessionServiceStore, sdkContext);
5
+ }
6
+ //# sourceMappingURL=resolve-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-session.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/resolve-session.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uCAAuC,CAAC;AAOlG,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,OAAO,+BAA+B,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC1E,CAAC"}