@cesteral/amazon-dsp-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 (255) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +59 -0
  3. package/dist/auth/amazon-dsp-auth-adapter.d.ts +42 -0
  4. package/dist/auth/amazon-dsp-auth-adapter.d.ts.map +1 -0
  5. package/dist/auth/amazon-dsp-auth-adapter.js +126 -0
  6. package/dist/auth/amazon-dsp-auth-adapter.js.map +1 -0
  7. package/dist/auth/amazon-dsp-auth-strategy.d.ts +14 -0
  8. package/dist/auth/amazon-dsp-auth-strategy.d.ts.map +1 -0
  9. package/dist/auth/amazon-dsp-auth-strategy.js +58 -0
  10. package/dist/auth/amazon-dsp-auth-strategy.js.map +1 -0
  11. package/dist/auth/index.d.ts +3 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +3 -0
  14. package/dist/auth/index.js.map +1 -0
  15. package/dist/config/index.d.ts +116 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +49 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +65 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
  24. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
  25. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +127 -0
  26. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
  27. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
  28. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
  29. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +120 -0
  30. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js +116 -0
  34. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  38. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  42. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +200 -0
  46. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +183 -0
  50. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js +126 -0
  54. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  56. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +198 -0
  58. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  59. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  60. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +96 -0
  62. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  63. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  64. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  65. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +111 -0
  66. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  67. package/dist/mcp-server/prompts/index.d.ts +9 -0
  68. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  69. package/dist/mcp-server/prompts/index.js +97 -0
  70. package/dist/mcp-server/prompts/index.js.map +1 -0
  71. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
  72. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/definitions/entity-examples.resource.js +121 -0
  74. package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
  75. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
  76. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
  77. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +58 -0
  78. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
  79. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
  80. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
  81. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +51 -0
  82. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/index.d.ts +7 -0
  84. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/index.js +53 -0
  86. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  87. package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts +3 -0
  88. package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/reporting-reference.resource.js +50 -0
  90. package/dist/mcp-server/resources/definitions/reporting-reference.resource.js.map +1 -0
  91. package/dist/mcp-server/resources/index.d.ts +3 -0
  92. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/index.js +2 -0
  94. package/dist/mcp-server/resources/index.js.map +1 -0
  95. package/dist/mcp-server/resources/types.d.ts +8 -0
  96. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  97. package/dist/mcp-server/resources/types.js +2 -0
  98. package/dist/mcp-server/resources/types.js.map +1 -0
  99. package/dist/mcp-server/server.d.ts +5 -0
  100. package/dist/mcp-server/server.d.ts.map +1 -0
  101. package/dist/mcp-server/server.js +137 -0
  102. package/dist/mcp-server/server.js.map +1 -0
  103. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +215 -0
  104. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  105. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +147 -0
  106. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  107. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +152 -0
  108. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  109. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +111 -0
  110. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  111. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +193 -0
  112. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
  113. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +127 -0
  114. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +153 -0
  116. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +136 -0
  118. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +112 -0
  120. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/check-report-status.tool.js +87 -0
  122. package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +111 -0
  124. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/create-entity.tool.js +96 -0
  126. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +152 -0
  128. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +142 -0
  130. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
  132. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/download-report.tool.js +107 -0
  134. package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts +105 -0
  136. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js +85 -0
  138. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +75 -0
  140. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +63 -0
  142. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts +85 -0
  144. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js +91 -0
  146. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +76 -0
  148. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/get-entity.tool.js +71 -0
  150. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts +289 -0
  152. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js +181 -0
  154. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +271 -0
  156. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/get-report.tool.js +174 -0
  158. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +75 -0
  160. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +75 -0
  162. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/index.d.ts +21 -0
  164. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/index.js +63 -0
  166. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts +54 -0
  168. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js +58 -0
  170. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +171 -0
  172. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/list-entities.tool.js +112 -0
  174. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +89 -0
  176. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/search-targeting.tool.js +93 -0
  178. package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +134 -0
  180. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/submit-report.tool.js +119 -0
  182. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +114 -0
  184. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/update-entity.tool.js +89 -0
  186. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +169 -0
  188. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +104 -0
  190. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/index.d.ts +2 -0
  192. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/index.js +2 -0
  194. package/dist/mcp-server/tools/index.js.map +1 -0
  195. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +24 -0
  196. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/utils/entity-mapping.js +42 -0
  198. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  199. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  200. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  202. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  203. package/dist/mcp-server/transports/streamable-http-transport.d.ts +57 -0
  204. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  205. package/dist/mcp-server/transports/streamable-http-transport.js +105 -0
  206. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  207. package/dist/services/amazon-dsp/amazon-dsp-api-contract.d.ts +43 -0
  208. package/dist/services/amazon-dsp/amazon-dsp-api-contract.d.ts.map +1 -0
  209. package/dist/services/amazon-dsp/amazon-dsp-api-contract.js +193 -0
  210. package/dist/services/amazon-dsp/amazon-dsp-api-contract.js.map +1 -0
  211. package/dist/services/amazon-dsp/amazon-dsp-http-client.d.ts +15 -0
  212. package/dist/services/amazon-dsp/amazon-dsp-http-client.d.ts.map +1 -0
  213. package/dist/services/amazon-dsp/amazon-dsp-http-client.js +138 -0
  214. package/dist/services/amazon-dsp/amazon-dsp-http-client.js.map +1 -0
  215. package/dist/services/amazon-dsp/amazon-dsp-reporting-service.d.ts +63 -0
  216. package/dist/services/amazon-dsp/amazon-dsp-reporting-service.d.ts.map +1 -0
  217. package/dist/services/amazon-dsp/amazon-dsp-reporting-service.js +134 -0
  218. package/dist/services/amazon-dsp/amazon-dsp-reporting-service.js.map +1 -0
  219. package/dist/services/amazon-dsp/amazon-dsp-service.d.ts +85 -0
  220. package/dist/services/amazon-dsp/amazon-dsp-service.d.ts.map +1 -0
  221. package/dist/services/amazon-dsp/amazon-dsp-service.js +182 -0
  222. package/dist/services/amazon-dsp/amazon-dsp-service.js.map +1 -0
  223. package/dist/services/amazon-dsp/types.d.ts +142 -0
  224. package/dist/services/amazon-dsp/types.d.ts.map +1 -0
  225. package/dist/services/amazon-dsp/types.js +24 -0
  226. package/dist/services/amazon-dsp/types.js.map +1 -0
  227. package/dist/services/session-services.d.ts +20 -0
  228. package/dist/services/session-services.d.ts.map +1 -0
  229. package/dist/services/session-services.js +23 -0
  230. package/dist/services/session-services.js.map +1 -0
  231. package/dist/types-global/mcp.d.ts +2 -0
  232. package/dist/types-global/mcp.d.ts.map +1 -0
  233. package/dist/types-global/mcp.js +2 -0
  234. package/dist/types-global/mcp.js.map +1 -0
  235. package/dist/utils/errors/index.d.ts +2 -0
  236. package/dist/utils/errors/index.d.ts.map +1 -0
  237. package/dist/utils/errors/index.js +2 -0
  238. package/dist/utils/errors/index.js.map +1 -0
  239. package/dist/utils/platform.d.ts +3 -0
  240. package/dist/utils/platform.d.ts.map +1 -0
  241. package/dist/utils/platform.js +5 -0
  242. package/dist/utils/platform.js.map +1 -0
  243. package/dist/utils/security/rate-limiter.d.ts +3 -0
  244. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  245. package/dist/utils/security/rate-limiter.js +5 -0
  246. package/dist/utils/security/rate-limiter.js.map +1 -0
  247. package/dist/utils/telemetry/index.d.ts +2 -0
  248. package/dist/utils/telemetry/index.d.ts.map +1 -0
  249. package/dist/utils/telemetry/index.js +2 -0
  250. package/dist/utils/telemetry/index.js.map +1 -0
  251. package/dist/utils/telemetry/tracing.d.ts +3 -0
  252. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  253. package/dist/utils/telemetry/tracing.js +4 -0
  254. package/dist/utils/telemetry/tracing.js.map +1 -0
  255. package/package.json +55 -0
@@ -0,0 +1,169 @@
1
+ import { z } from "zod";
2
+ import type { AmazonDspPublicEntityType } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
3
+ export declare const validateEntityTool: {
4
+ name: string;
5
+ title: string;
6
+ description: string;
7
+ inputSchema: z.ZodObject<{
8
+ entityType: z.ZodEnum<[AmazonDspPublicEntityType, ...AmazonDspPublicEntityType[]]>;
9
+ mode: z.ZodEnum<["create", "update"]>;
10
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ entityType: AmazonDspPublicEntityType;
13
+ data: Record<string, unknown>;
14
+ mode: "create" | "update";
15
+ }, {
16
+ entityType: AmazonDspPublicEntityType;
17
+ data: Record<string, unknown>;
18
+ mode: "create" | "update";
19
+ }>;
20
+ outputSchema: z.ZodObject<{
21
+ valid: z.ZodBoolean;
22
+ entityType: z.ZodString;
23
+ mode: z.ZodString;
24
+ issues: z.ZodArray<z.ZodObject<{
25
+ field: z.ZodString;
26
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
27
+ message: z.ZodString;
28
+ hint: z.ZodOptional<z.ZodString>;
29
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
30
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
33
+ message: string;
34
+ field: string;
35
+ hint?: string | undefined;
36
+ suggestedValues?: string[] | undefined;
37
+ severity?: "error" | "warning" | undefined;
38
+ }, {
39
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
40
+ message: string;
41
+ field: string;
42
+ hint?: string | undefined;
43
+ suggestedValues?: string[] | undefined;
44
+ severity?: "error" | "warning" | undefined;
45
+ }>, "many">;
46
+ nextAction: z.ZodOptional<z.ZodString>;
47
+ timestamp: z.ZodString;
48
+ }, "strip", z.ZodTypeAny, {
49
+ issues: {
50
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
51
+ message: string;
52
+ field: string;
53
+ hint?: string | undefined;
54
+ suggestedValues?: string[] | undefined;
55
+ severity?: "error" | "warning" | undefined;
56
+ }[];
57
+ valid: boolean;
58
+ entityType: string;
59
+ mode: string;
60
+ timestamp: string;
61
+ nextAction?: string | undefined;
62
+ }, {
63
+ issues: {
64
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
65
+ message: string;
66
+ field: string;
67
+ hint?: string | undefined;
68
+ suggestedValues?: string[] | undefined;
69
+ severity?: "error" | "warning" | undefined;
70
+ }[];
71
+ valid: boolean;
72
+ entityType: string;
73
+ mode: string;
74
+ timestamp: string;
75
+ nextAction?: string | undefined;
76
+ }>;
77
+ annotations: {
78
+ readOnlyHint: boolean;
79
+ idempotentHint: boolean;
80
+ openWorldHint: boolean;
81
+ destructiveHint: boolean;
82
+ };
83
+ inputExamples: {
84
+ label: string;
85
+ input: Record<string, unknown>;
86
+ }[];
87
+ logic: (input: {
88
+ entityType: AmazonDspPublicEntityType;
89
+ data: Record<string, unknown>;
90
+ mode: "create" | "update";
91
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
92
+ responseFormatter: typeof import("@cesteral/shared").validateEntityResponseFormatter;
93
+ };
94
+ export declare const ValidateEntityInputSchema: z.ZodObject<{
95
+ entityType: z.ZodEnum<[AmazonDspPublicEntityType, ...AmazonDspPublicEntityType[]]>;
96
+ mode: z.ZodEnum<["create", "update"]>;
97
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ entityType: AmazonDspPublicEntityType;
100
+ data: Record<string, unknown>;
101
+ mode: "create" | "update";
102
+ }, {
103
+ entityType: AmazonDspPublicEntityType;
104
+ data: Record<string, unknown>;
105
+ mode: "create" | "update";
106
+ }>;
107
+ export declare const ValidateEntityOutputSchema: z.ZodObject<{
108
+ valid: z.ZodBoolean;
109
+ entityType: z.ZodString;
110
+ mode: z.ZodString;
111
+ issues: z.ZodArray<z.ZodObject<{
112
+ field: z.ZodString;
113
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
114
+ message: z.ZodString;
115
+ hint: z.ZodOptional<z.ZodString>;
116
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
117
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
120
+ message: string;
121
+ field: string;
122
+ hint?: string | undefined;
123
+ suggestedValues?: string[] | undefined;
124
+ severity?: "error" | "warning" | undefined;
125
+ }, {
126
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
127
+ message: string;
128
+ field: string;
129
+ hint?: string | undefined;
130
+ suggestedValues?: string[] | undefined;
131
+ severity?: "error" | "warning" | undefined;
132
+ }>, "many">;
133
+ nextAction: z.ZodOptional<z.ZodString>;
134
+ timestamp: z.ZodString;
135
+ }, "strip", z.ZodTypeAny, {
136
+ issues: {
137
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
138
+ message: string;
139
+ field: string;
140
+ hint?: string | undefined;
141
+ suggestedValues?: string[] | undefined;
142
+ severity?: "error" | "warning" | undefined;
143
+ }[];
144
+ valid: boolean;
145
+ entityType: string;
146
+ mode: string;
147
+ timestamp: string;
148
+ nextAction?: string | undefined;
149
+ }, {
150
+ issues: {
151
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
152
+ message: string;
153
+ field: string;
154
+ hint?: string | undefined;
155
+ suggestedValues?: string[] | undefined;
156
+ severity?: "error" | "warning" | undefined;
157
+ }[];
158
+ valid: boolean;
159
+ entityType: string;
160
+ mode: string;
161
+ timestamp: string;
162
+ nextAction?: string | undefined;
163
+ }>;
164
+ export declare const validateEntityLogic: (input: {
165
+ entityType: AmazonDspPublicEntityType;
166
+ data: Record<string, unknown>;
167
+ mode: "create" | "update";
168
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
169
+ //# sourceMappingURL=validate-entity.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-entity.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/validate-entity.tool.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGzG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAyGoT,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;gBAA4M,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;;;;gBAAsV,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;kBAAuK,CAAC;;;;;;gBAA6M,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;kBAAuK,CAAC;;;;;;;;;;;;;;;;;;CALhxD,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAAiC,CAAC;AACxE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;YAE4S,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;YAA4M,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;;;YAAsV,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;;;;;;YAAqX,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;EAFjiD,CAAC;AAC1E,eAAO,MAAM,mBAAmB;;;;wKAA2B,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ import { getEntityContract, getEntityTypeEnum, getCanonicalEntityType, } from "../utils/entity-mapping.js";
3
+ import { createValidateEntityTool } from "@cesteral/shared";
4
+ export const validateEntityTool = createValidateEntityTool({
5
+ toolName: "amazon_dsp_validate_entity",
6
+ toolTitle: "AmazonDsp Ads Entity Validation (Client-Side)",
7
+ toolDescription: `Validate an entity payload against known AmazonDsp Ads requirements without calling the API.
8
+
9
+ Checks required fields, data types, and common configuration mistakes.
10
+
11
+ **Supported entity types:** ${getEntityTypeEnum().join(", ")}
12
+
13
+ This is a pure client-side check — it catches missing required fields and
14
+ obvious type errors. The AmazonDsp API may still reject payloads for business-rule
15
+ reasons (e.g., invalid objective/placement combinations).`,
16
+ entityTypeEnum: getEntityTypeEnum(),
17
+ getRules: (entityType) => getEntityContract(entityType).requiredOnCreate,
18
+ getReadOnlyFields: (entityType) => getEntityContract(entityType).readOnlyFields,
19
+ extraInputSchema: {
20
+ profileId: z.string().optional().describe("Advertiser ID (recommended for create mode)"),
21
+ },
22
+ extraValidate: ({ entityType, mode, data, issues }) => {
23
+ const canonical = getCanonicalEntityType(entityType);
24
+ if (mode === "create" && canonical === "creative" && !data.clickThroughUrl) {
25
+ issues.push({
26
+ field: "clickThroughUrl",
27
+ code: "missing",
28
+ message: 'Creative should include "clickThroughUrl" for click tracking',
29
+ severity: "warning",
30
+ });
31
+ }
32
+ const budgetValue = data.budget;
33
+ if (budgetValue !== undefined) {
34
+ if (typeof budgetValue === "number") {
35
+ if (canonical === "lineItem") {
36
+ issues.push({
37
+ field: "budget",
38
+ code: "wrongType",
39
+ message: 'Field "budget" for lineItem must be an object: { budgetType: "DAILY" | "LIFETIME", budget: number }',
40
+ suggestedValues: ["DAILY", "LIFETIME"],
41
+ severity: "error",
42
+ });
43
+ }
44
+ else if (budgetValue <= 0) {
45
+ issues.push({
46
+ field: "budget",
47
+ code: "invalidValue",
48
+ message: 'Field "budget" must be a positive number',
49
+ severity: "error",
50
+ });
51
+ }
52
+ }
53
+ else if (typeof budgetValue === "object" && budgetValue !== null) {
54
+ const budgetObj = budgetValue;
55
+ if (typeof budgetObj.budget !== "number" || budgetObj.budget <= 0) {
56
+ issues.push({
57
+ field: "budget.budget",
58
+ code: "invalidValue",
59
+ message: 'Field "budget.budget" must be a positive number',
60
+ severity: "error",
61
+ });
62
+ }
63
+ if (!budgetObj.budgetType) {
64
+ issues.push({
65
+ field: "budget.budgetType",
66
+ code: "missing",
67
+ message: 'Field "budget.budgetType" is required ("DAILY" or "LIFETIME")',
68
+ suggestedValues: ["DAILY", "LIFETIME"],
69
+ severity: "error",
70
+ });
71
+ }
72
+ }
73
+ }
74
+ },
75
+ inputExamples: [
76
+ {
77
+ label: "Valid order create",
78
+ input: {
79
+ entityType: "campaign",
80
+ mode: "create",
81
+ profileId: "1234567890",
82
+ data: {
83
+ name: "Summer Sale 2026",
84
+ advertiserId: "adv_123",
85
+ startDateTime: "2026-07-01T00:00:00Z",
86
+ endDateTime: "2026-07-31T23:59:59Z",
87
+ },
88
+ },
89
+ },
90
+ {
91
+ label: "Missing required fields (line item)",
92
+ input: {
93
+ entityType: "lineItem",
94
+ mode: "create",
95
+ profileId: "1234567890",
96
+ data: { name: "Test Line Item" },
97
+ },
98
+ },
99
+ ],
100
+ });
101
+ export const ValidateEntityInputSchema = validateEntityTool.inputSchema;
102
+ export const ValidateEntityOutputSchema = validateEntityTool.outputSchema;
103
+ export const validateEntityLogic = validateEntityTool.logic;
104
+ //# sourceMappingURL=validate-entity.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-entity.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/validate-entity.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,24 @@
1
+ import { type AmazonDspCanonicalEntityType, type AmazonDspPublicEntityType } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ export type AmazonDspEntityType = AmazonDspPublicEntityType;
3
+ export type CanonicalAmazonDspEntityType = AmazonDspCanonicalEntityType;
4
+ export interface AmazonDspEntityConfig {
5
+ listPath: string;
6
+ getPath: string;
7
+ createPath: string;
8
+ updatePath: string;
9
+ createMediaType?: string;
10
+ updateMediaType?: string;
11
+ idField: string;
12
+ responseKey: string;
13
+ listFilterParam: string;
14
+ displayName: string;
15
+ defaultFields: string[];
16
+ }
17
+ export declare function getEntityConfig(entityType: AmazonDspEntityType): AmazonDspEntityConfig;
18
+ export declare function getSupportedEntityTypes(): AmazonDspEntityType[];
19
+ export declare function getCanonicalEntityTypes(): AmazonDspCanonicalEntityType[];
20
+ export declare function getEntityTypeEnum(): [string, ...string[]];
21
+ export declare function getCanonicalEntityType(entityType: AmazonDspEntityType): AmazonDspCanonicalEntityType;
22
+ export declare function getEntityContract(entityType: AmazonDspEntityType): import("../../../services/amazon-dsp/amazon-dsp-api-contract.js").AmazonDspEntityContract;
23
+ export declare function interpolatePath(path: string, params: Record<string, string>): string;
24
+ //# sourceMappingURL=entity-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-mapping.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/entity-mapping.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC/B,MAAM,yDAAyD,CAAC;AASjE,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,MAAM,4BAA4B,GAAG,4BAA4B,CAAC;AAExE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,CAAC;IAEnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IAExB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAyBD,wBAAgB,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,qBAAqB,CAEtF;AAED,wBAAgB,uBAAuB,IAAI,mBAAmB,EAAE,CAE/D;AAED,wBAAgB,uBAAuB,IAAI,4BAA4B,EAAE,CAExE;AAED,wBAAgB,iBAAiB,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAEzD;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,mBAAmB,GAC9B,4BAA4B,CAE9B;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,6FAEhE;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,42 @@
1
+ import { AMAZON_DSP_CANONICAL_ENTITY_TYPES, AMAZON_DSP_ENTITY_CONTRACT, AMAZON_DSP_PUBLIC_ENTITY_TYPES, getAmazonDspEntityContract, normalizeAmazonDspEntityType, } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ const ENTITY_CONFIGS = Object.fromEntries(AMAZON_DSP_CANONICAL_ENTITY_TYPES.map((entityType) => {
3
+ const contract = AMAZON_DSP_ENTITY_CONTRACT[entityType];
4
+ return [
5
+ entityType,
6
+ {
7
+ listPath: contract.listPath,
8
+ getPath: contract.getPath,
9
+ createPath: contract.createPath,
10
+ updatePath: contract.updatePath,
11
+ createMediaType: contract.createMediaType,
12
+ updateMediaType: contract.updateMediaType,
13
+ idField: contract.idField,
14
+ responseKey: contract.responseKey,
15
+ listFilterParam: contract.listFilterParam,
16
+ displayName: contract.displayName,
17
+ defaultFields: [contract.idField, contract.listFilterParam, "name", "state"],
18
+ },
19
+ ];
20
+ }));
21
+ export function getEntityConfig(entityType) {
22
+ return ENTITY_CONFIGS[normalizeAmazonDspEntityType(entityType)];
23
+ }
24
+ export function getSupportedEntityTypes() {
25
+ return [...AMAZON_DSP_PUBLIC_ENTITY_TYPES];
26
+ }
27
+ export function getCanonicalEntityTypes() {
28
+ return [...AMAZON_DSP_CANONICAL_ENTITY_TYPES];
29
+ }
30
+ export function getEntityTypeEnum() {
31
+ return getSupportedEntityTypes();
32
+ }
33
+ export function getCanonicalEntityType(entityType) {
34
+ return normalizeAmazonDspEntityType(entityType);
35
+ }
36
+ export function getEntityContract(entityType) {
37
+ return getAmazonDspEntityContract(entityType);
38
+ }
39
+ export function interpolatePath(path, params) {
40
+ return Object.entries(params).reduce((acc, [key, val]) => acc.replace(`{${key}}`, val), path);
41
+ }
42
+ //# sourceMappingURL=entity-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-mapping.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/entity-mapping.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,GAG7B,MAAM,yDAAyD,CAAC;AAqCjE,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW,CAChB,iCAAiC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;IACnD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO;QACL,UAAU;QACV;YACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,aAAa,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC;SAC7C;KAClC,CAAC;AACJ,CAAC,CAAC,CAC4D,CAAC;AAEnE,MAAM,UAAU,eAAe,CAAC,UAA+B;IAC7D,OAAO,cAAc,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,8BAA8B,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,iCAAiC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,uBAAuB,EAA2B,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAA+B;IAE/B,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAA+B;IAC/D,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAKD,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAA8B;IAC1E,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAChG,CAAC"}
@@ -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"}
@@ -0,0 +1,57 @@
1
+ import type { Logger } from "pino";
2
+ export declare const createMcpHttpServer: (config: {
3
+ serviceName: string;
4
+ port: number;
5
+ otelServiceName: string;
6
+ mcpAuthMode: "amazon-dsp-bearer" | "jwt" | "none";
7
+ amazonDspApiBaseUrl: string;
8
+ amazonDspApiVersion: string;
9
+ amazonDspRateLimitPerMinute: number;
10
+ amazonDspReportPollIntervalMs: number;
11
+ amazonDspReportMaxPollAttempts: number;
12
+ host: string;
13
+ nodeEnv: "development" | "production" | "test";
14
+ mcpStatefulSessionTimeoutMs: number;
15
+ logLevel: "debug" | "info" | "notice" | "warning" | "error";
16
+ mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
17
+ otelEnabled: boolean;
18
+ amazonDspAccessToken?: string | undefined;
19
+ amazonDspProfileId?: string | undefined;
20
+ amazonDspClientId?: string | undefined;
21
+ amazonDspAppId?: string | undefined;
22
+ amazonDspAppSecret?: string | undefined;
23
+ amazonDspRefreshToken?: string | undefined;
24
+ mcpAuthSecretKey?: string | undefined;
25
+ mcpAllowedOrigins?: string | undefined;
26
+ otelExporterOtlpTracesEndpoint?: string | undefined;
27
+ otelExporterOtlpMetricsEndpoint?: string | undefined;
28
+ gcsBucketName?: string | undefined;
29
+ }, logger: Logger) => ReturnType<typeof import("@cesteral/shared").createMcpHttpTransport>, startHttpServer: (config: {
30
+ serviceName: string;
31
+ port: number;
32
+ otelServiceName: string;
33
+ mcpAuthMode: "amazon-dsp-bearer" | "jwt" | "none";
34
+ amazonDspApiBaseUrl: string;
35
+ amazonDspApiVersion: string;
36
+ amazonDspRateLimitPerMinute: number;
37
+ amazonDspReportPollIntervalMs: number;
38
+ amazonDspReportMaxPollAttempts: number;
39
+ host: string;
40
+ nodeEnv: "development" | "production" | "test";
41
+ mcpStatefulSessionTimeoutMs: number;
42
+ logLevel: "debug" | "info" | "notice" | "warning" | "error";
43
+ mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
44
+ otelEnabled: boolean;
45
+ amazonDspAccessToken?: string | undefined;
46
+ amazonDspProfileId?: string | undefined;
47
+ amazonDspClientId?: string | undefined;
48
+ amazonDspAppId?: string | undefined;
49
+ amazonDspAppSecret?: string | undefined;
50
+ amazonDspRefreshToken?: string | undefined;
51
+ mcpAuthSecretKey?: string | undefined;
52
+ mcpAllowedOrigins?: string | undefined;
53
+ otelExporterOtlpTracesEndpoint?: string | undefined;
54
+ otelExporterOtlpMetricsEndpoint?: string | undefined;
55
+ gcsBucketName?: string | undefined;
56
+ }, logger: Logger) => Promise<import("@cesteral/shared").McpHttpServer>;
57
+ //# sourceMappingURL=streamable-http-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamable-http-transport.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/transports/streamable-http-transport.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA2JnC,eAAO,MAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;4FAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;uEACS,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { createMcpServer } from "../server.js";
2
+ import { createAuthStrategy, buildServerCardExtras, createTransportEntrypoints, } from "@cesteral/shared";
3
+ import { AmazonDspBearerAuthStrategy } from "../../auth/amazon-dsp-auth-strategy.js";
4
+ import { createSessionServices, sessionServiceStore } from "../../services/session-services.js";
5
+ import { rateLimiter } from "../../utils/platform.js";
6
+ function buildPlatformConfig(config, logger) {
7
+ return {
8
+ authStrategy: config.mcpAuthMode === "amazon-dsp-bearer"
9
+ ? new AmazonDspBearerAuthStrategy(config.amazonDspApiBaseUrl, logger)
10
+ : createAuthStrategy(config.mcpAuthMode, {
11
+ jwtSecret: config.mcpAuthSecretKey,
12
+ logger,
13
+ }),
14
+ corsAllowHeaders: [
15
+ "Content-Type",
16
+ "Authorization",
17
+ "Mcp-Session-Id",
18
+ "MCP-Protocol-Version",
19
+ "Amazon-Advertising-API-Scope",
20
+ "Amazon-Advertising-API-ClientId",
21
+ "X-AmazonDsp-App-Id",
22
+ "X-AmazonDsp-App-Secret",
23
+ "X-AmazonDsp-Refresh-Token",
24
+ ],
25
+ authErrorHint: config.mcpAuthMode === "amazon-dsp-bearer"
26
+ ? "Provide an Amazon access token via Authorization: Bearer <token>, profile ID via Amazon-Advertising-API-Scope, and client ID via Amazon-Advertising-API-ClientId."
27
+ : "Provide a valid Bearer token in the Authorization header.",
28
+ sessionServiceStore,
29
+ rateLimiter,
30
+ async createSessionForAuth(authResult, sessionId, appConfig, log) {
31
+ const adapter = authResult.platformAuthAdapter;
32
+ if (adapter) {
33
+ const cfg = appConfig;
34
+ const services = createSessionServices(adapter, {
35
+ baseUrl: cfg.amazonDspApiBaseUrl,
36
+ reportPollIntervalMs: cfg.amazonDspReportPollIntervalMs,
37
+ reportMaxPollAttempts: cfg.amazonDspReportMaxPollAttempts,
38
+ }, log, rateLimiter);
39
+ sessionServiceStore.set(sessionId, services, authResult.credentialFingerprint);
40
+ return { services };
41
+ }
42
+ if (appConfig.mcpAuthMode === "none" || appConfig.mcpAuthMode === "jwt") {
43
+ const cfg = appConfig;
44
+ const amazonDspProfileId = cfg.amazonDspProfileId;
45
+ if (cfg.amazonDspAppId &&
46
+ cfg.amazonDspAppSecret &&
47
+ cfg.amazonDspRefreshToken &&
48
+ amazonDspProfileId) {
49
+ const { AmazonDspRefreshTokenAdapter } = await import("../../auth/amazon-dsp-auth-adapter.js");
50
+ const envAdapter = new AmazonDspRefreshTokenAdapter({
51
+ appId: cfg.amazonDspAppId,
52
+ appSecret: cfg.amazonDspAppSecret,
53
+ refreshToken: cfg.amazonDspRefreshToken,
54
+ }, amazonDspProfileId, cfg.amazonDspApiBaseUrl);
55
+ await envAdapter.validate();
56
+ const services = createSessionServices(envAdapter, {
57
+ baseUrl: cfg.amazonDspApiBaseUrl,
58
+ reportPollIntervalMs: cfg.amazonDspReportPollIntervalMs,
59
+ reportMaxPollAttempts: cfg.amazonDspReportMaxPollAttempts,
60
+ }, log, rateLimiter);
61
+ sessionServiceStore.set(sessionId, services, authResult.credentialFingerprint);
62
+ return { services };
63
+ }
64
+ const amazonDspToken = cfg.amazonDspAccessToken;
65
+ if (amazonDspToken && amazonDspProfileId) {
66
+ const { AmazonDspAccessTokenAdapter } = await import("../../auth/amazon-dsp-auth-adapter.js");
67
+ const envAdapter = new AmazonDspAccessTokenAdapter(amazonDspToken, amazonDspProfileId, cfg.amazonDspApiBaseUrl);
68
+ await envAdapter.validate();
69
+ const cfgFallback = appConfig;
70
+ const services = createSessionServices(envAdapter, {
71
+ baseUrl: cfgFallback.amazonDspApiBaseUrl,
72
+ reportPollIntervalMs: cfgFallback.amazonDspReportPollIntervalMs,
73
+ reportMaxPollAttempts: cfgFallback.amazonDspReportMaxPollAttempts,
74
+ }, log, rateLimiter);
75
+ sessionServiceStore.set(sessionId, services, authResult.credentialFingerprint);
76
+ return { services };
77
+ }
78
+ if (appConfig.mcpAuthMode !== "none") {
79
+ return {
80
+ services: null,
81
+ error: {
82
+ message: "Amazon DSP access token and profile ID required. Set AMAZON_DSP_ACCESS_TOKEN and AMAZON_DSP_PROFILE_ID env vars, or use MCP_AUTH_MODE=amazon-dsp-bearer.",
83
+ status: 400,
84
+ },
85
+ };
86
+ }
87
+ return { services: null };
88
+ }
89
+ return {
90
+ services: null,
91
+ error: {
92
+ message: "AmazonDsp API credentials required for this server.",
93
+ status: 400,
94
+ },
95
+ };
96
+ },
97
+ async createMcpServer(log, sessionId, gcsBucket) {
98
+ return createMcpServer(log, sessionId, gcsBucket);
99
+ },
100
+ packageJsonPath: new URL("../../../package.json", import.meta.url).pathname,
101
+ serverCard: buildServerCardExtras("amazon-dsp-mcp"),
102
+ };
103
+ }
104
+ export const { createMcpHttpServer, startHttpServer } = createTransportEntrypoints(buildPlatformConfig);
105
+ //# sourceMappingURL=streamable-http-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamable-http-transport.js","sourceRoot":"","sources":["../../../src/mcp-server/transports/streamable-http-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export type AmazonDspCanonicalEntityType = "order" | "lineItem" | "creative" | "target" | "creativeAssociation";
2
+ export type AmazonDspPublicEntityType = AmazonDspCanonicalEntityType | "campaign" | "adGroup";
3
+ export interface AmazonDspContractFieldRule {
4
+ field: string;
5
+ expectedType: "string" | "number" | "object";
6
+ hint?: string;
7
+ }
8
+ export interface AmazonDspEntityContract {
9
+ canonicalType: AmazonDspCanonicalEntityType;
10
+ aliases: string[];
11
+ listPath: string;
12
+ getPath: string;
13
+ createPath: string;
14
+ updatePath: string;
15
+ createMediaType?: string;
16
+ updateMediaType?: string;
17
+ idField: string;
18
+ responseKey: string;
19
+ listFilterParam: string;
20
+ displayName: string;
21
+ requiredOnCreate: AmazonDspContractFieldRule[];
22
+ readOnlyFields: string[];
23
+ notes: string[];
24
+ }
25
+ export declare const AMAZON_DSP_ENTITY_ALIASES: Record<string, AmazonDspCanonicalEntityType>;
26
+ export declare const AMAZON_DSP_ENTITY_CONTRACT: Record<AmazonDspCanonicalEntityType, AmazonDspEntityContract>;
27
+ export declare const AMAZON_DSP_CANONICAL_ENTITY_TYPES: AmazonDspCanonicalEntityType[];
28
+ export declare const AMAZON_DSP_PUBLIC_ENTITY_TYPES: readonly [...AmazonDspCanonicalEntityType[], "campaign", "adGroup"];
29
+ export declare const AMAZON_DSP_REPORTING_CONTRACT: {
30
+ readonly submitPathTemplate: "/dsp/reports";
31
+ readonly statusPathTemplate: "/dsp/reports/{reportId}";
32
+ readonly statuses: readonly ["IN_PROGRESS", "SUCCESS", "FAILURE"];
33
+ readonly defaultTimeUnit: "DAILY";
34
+ readonly reportTypes: readonly ["CAMPAIGN", "INVENTORY", "AUDIENCE", "PRODUCTS", "TECHNOLOGY", "GEOGRAPHY", "CONVERSION_SOURCE"];
35
+ readonly dimensionsByType: {
36
+ readonly CAMPAIGN: readonly ["ORDER", "LINE_ITEM", "CREATIVE"];
37
+ };
38
+ readonly knownMetrics: readonly ["impressions", "totalCost", "viewableImpressions", "viewabilityRate"];
39
+ readonly notes: readonly ["POST /dsp/reports body shape: { startDate (YYYYMMDD), endDate (YYYYMMDD), type (one of reportTypes), dimensions?: string[], metrics?: string (comma-separated), timeUnit?: 'DAILY' }.", "Returns 202 with { reportId, type, format, status:'IN_PROGRESS', location:'', expiration } — poll GET /dsp/reports/{reportId} until status === 'SUCCESS' (returns presigned S3 download `location`) or 'FAILURE'.", "Plain application/json Content-Type works — no vendor media type required (unlike entity writes).", "Endpoint is NOT account-scoped — `accountId` is not part of the URL path. The Amazon-Advertising-API-Scope header still identifies the profile."];
40
+ };
41
+ export declare function normalizeAmazonDspEntityType(entityType: AmazonDspPublicEntityType | string): AmazonDspCanonicalEntityType;
42
+ export declare function getAmazonDspEntityContract(entityType: AmazonDspPublicEntityType | string): AmazonDspEntityContract;
43
+ //# sourceMappingURL=amazon-dsp-api-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-dsp-api-contract.d.ts","sourceRoot":"","sources":["../../../src/services/amazon-dsp/amazon-dsp-api-contract.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,4BAA4B,GACpC,OAAO,GACP,UAAU,GACV,UAAU,GACV,QAAQ,GACR,qBAAqB,CAAC;AAE1B,MAAM,MAAM,yBAAyB,GAAG,4BAA4B,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IASnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAGlF,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,4BAA4B,EAC5B,uBAAuB,CA+IxB,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAEzC,4BAA4B,EAAE,CAAC;AAEpC,eAAO,MAAM,8BAA8B,qEAIc,CAAC;AAiB1D,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAgChC,CAAC;AAEX,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,yBAAyB,GAAG,MAAM,GAC7C,4BAA4B,CAc9B;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,yBAAyB,GAAG,MAAM,GAC7C,uBAAuB,CAEzB"}