@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,121 @@
1
+ import { AMAZON_DSP_CANONICAL_ENTITY_TYPES } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ const ENTITY_EXAMPLES = {
3
+ order: `# Amazon DSP Campaign / Order Examples
4
+
5
+ ## Create a Campaign
6
+ \`\`\`json
7
+ {
8
+ "entityType": "campaign",
9
+ "profileId": "1234567890",
10
+ "data": {
11
+ "name": "Q3 Brand Campaign",
12
+ "advertiserId": "ADV123",
13
+ "startDateTime": "2026-07-01T00:00:00Z",
14
+ "endDateTime": "2026-09-30T23:59:59Z",
15
+ "state": "PAUSED"
16
+ }
17
+ }
18
+ \`\`\`
19
+
20
+ ## Enable Performance+ Automation On The Order Object
21
+ \`\`\`json
22
+ {
23
+ "entityType": "order",
24
+ "profileId": "1234567890",
25
+ "entityId": "ord_123",
26
+ "data": {
27
+ "automatedAdGroupCreation": {
28
+ "enabled": true
29
+ }
30
+ }
31
+ }
32
+ \`\`\`
33
+ `,
34
+ lineItem: `# Amazon DSP Ad Group / Line Item Examples
35
+
36
+ ## Create an Ad Group
37
+ \`\`\`json
38
+ {
39
+ "entityType": "adGroup",
40
+ "profileId": "1234567890",
41
+ "data": {
42
+ "name": "Display Retargeting",
43
+ "orderId": "ord_123",
44
+ "advertiserId": "ADV123",
45
+ "budget": { "budgetType": "DAILY", "budget": 2500 },
46
+ "bidding": {
47
+ "bidOptimization": "MANUAL",
48
+ "bidAmount": 1.75
49
+ },
50
+ "state": "PAUSED"
51
+ }
52
+ }
53
+ \`\`\`
54
+ `,
55
+ creative: `# Amazon DSP Creative Examples
56
+
57
+ ## Create a Creative Asset
58
+ \`\`\`json
59
+ {
60
+ "entityType": "creative",
61
+ "profileId": "1234567890",
62
+ "data": {
63
+ "name": "300x250 Banner",
64
+ "advertiserId": "ADV123",
65
+ "creativeType": "STANDARD_DISPLAY",
66
+ "clickThroughUrl": "https://example.com/landing"
67
+ }
68
+ }
69
+ \`\`\`
70
+ `,
71
+ target: `# Amazon DSP Target Examples
72
+
73
+ ## Create a Target
74
+ \`\`\`json
75
+ {
76
+ "entityType": "target",
77
+ "profileId": "1234567890",
78
+ "data": {
79
+ "lineItemId": "li_123",
80
+ "expressionType": "AUDIENCE",
81
+ "expression": {
82
+ "audienceIds": ["aud_1", "aud_2"]
83
+ }
84
+ }
85
+ }
86
+ \`\`\`
87
+ `,
88
+ creativeAssociation: `# Amazon DSP Creative Association Examples
89
+
90
+ ## Associate a Creative to an Ad Group
91
+ \`\`\`json
92
+ {
93
+ "entityType": "creativeAssociation",
94
+ "profileId": "1234567890",
95
+ "data": {
96
+ "lineItemId": "li_123",
97
+ "creativeId": "cr_456"
98
+ }
99
+ }
100
+ \`\`\`
101
+ `,
102
+ };
103
+ function buildAllExamplesMarkdown() {
104
+ return AMAZON_DSP_CANONICAL_ENTITY_TYPES.map((entityType) => ENTITY_EXAMPLES[entityType]).join("\n\n---\n\n");
105
+ }
106
+ export const entityExampleResources = AMAZON_DSP_CANONICAL_ENTITY_TYPES.map((entityType) => ({
107
+ uri: `entity-examples://amazonDsp/${entityType}`,
108
+ name: `Amazon DSP ${entityType} Examples`,
109
+ description: `Example payloads for creating and updating Amazon DSP ${entityType} entities`,
110
+ mimeType: "text/markdown",
111
+ getContent: () => ENTITY_EXAMPLES[entityType] ??
112
+ `# Amazon DSP ${entityType} Examples\n\nNo examples available.\n`,
113
+ }));
114
+ export const entityExampleAllResource = {
115
+ uri: "entity-examples://amazonDsp/all",
116
+ name: "Amazon DSP All Entity Examples",
117
+ description: "Combined example payloads for all Amazon DSP entity types",
118
+ mimeType: "text/markdown",
119
+ getContent: buildAllExamplesMarkdown,
120
+ };
121
+ //# sourceMappingURL=entity-examples.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-examples.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-examples.resource.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iCAAiC,EAAE,MAAM,yDAAyD,CAAC;AAE5G,MAAM,eAAe,GAA2B;IAC9C,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR;IACC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;CAoBX;IACC,QAAQ,EAAE;;;;;;;;;;;;;;;CAeX;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;CAgBT;IACC,mBAAmB,EAAE;;;;;;;;;;;;;CAatB;CACA,CAAC;AAEF,SAAS,wBAAwB;IAC/B,OAAO,iCAAiC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAC5F,aAAa,CACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAe,iCAAiC,CAAC,GAAG,CACrF,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACf,GAAG,EAAE,+BAA+B,UAAU,EAAE;IAChD,IAAI,EAAE,cAAc,UAAU,WAAW;IACzC,WAAW,EAAE,yDAAyD,UAAU,WAAW;IAC3F,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CACf,eAAe,CAAC,UAAU,CAAC;QAC3B,gBAAgB,UAAU,uCAAuC;CACpE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAa;IAChD,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,2DAA2D;IACxE,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,wBAAwB;CACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entityHierarchyResource: Resource;
3
+ //# sourceMappingURL=entity-hierarchy.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwD5C,eAAO,MAAM,uBAAuB,EAAE,QAUrC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { AMAZON_DSP_ENTITY_CONTRACT } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ let cachedContent;
3
+ function formatEntityHierarchyMarkdown() {
4
+ const rows = Object.values(AMAZON_DSP_ENTITY_CONTRACT)
5
+ .map((contract) => `| **${contract.canonicalType}** | \`${contract.listPath}?${contract.listFilterParam}=...\` | \`${contract.getPath}\` | ${contract.idField} |`)
6
+ .join("\n");
7
+ const pathRows = Object.values(AMAZON_DSP_ENTITY_CONTRACT)
8
+ .flatMap((contract) => [
9
+ `| \`GET\` | \`${contract.listPath}?${contract.listFilterParam}=...\` | List ${contract.displayName.toLowerCase()} records |`,
10
+ `| \`GET\` | \`${contract.getPath}\` | Get ${contract.displayName.toLowerCase()} |`,
11
+ `| \`POST\` | \`${contract.createPath}\` | Create ${contract.displayName.toLowerCase()} |`,
12
+ `| \`PUT\` | \`${contract.updatePath}\` | Update ${contract.displayName.toLowerCase()} |`,
13
+ ])
14
+ .join("\n");
15
+ return `# Amazon DSP Entity Hierarchy
16
+
17
+ ## Relationship Diagram
18
+
19
+ \`\`\`
20
+ Advertiser
21
+ └── Campaign / Order
22
+ └── Ad Group / Line Item
23
+ ├── Target
24
+ └── Creative Association
25
+ └── Creative
26
+ \`\`\`
27
+
28
+ ## Entity Types
29
+
30
+ | Entity Type | List Endpoint | Get Endpoint | ID Field |
31
+ |-------------|---------------|--------------|----------|
32
+ ${rows}
33
+
34
+ ## API Path Reference
35
+
36
+ | Method | Path | Description |
37
+ |--------|------|-------------|
38
+ ${pathRows}
39
+
40
+ ## Key Notes
41
+ - MCP accepts both \`campaign\` and \`order\` as the same entity type.
42
+ - MCP accepts both \`adGroup\` and \`lineItem\` as the same entity type.
43
+ - Amazon DSP reporting v3 uses \`POST /reporting/reports\` and \`GET /reporting/reports/{reportId}\`.
44
+ - List responses are modeled as JSON objects containing the entity-specific response key plus \`totalResults\`.
45
+ - Entity support in this MCP is intentionally narrower than the full Amazon Ads surface; Guidance, Quick Actions, and newer targeting APIs remain follow-up work.
46
+ `;
47
+ }
48
+ export const entityHierarchyResource = {
49
+ uri: "entity-hierarchy://amazonDsp/all",
50
+ name: "Amazon DSP Entity Hierarchy",
51
+ description: "Parent-child relationships between Amazon DSP entities, API patterns, and creation ordering",
52
+ mimeType: "text/markdown",
53
+ getContent: () => {
54
+ cachedContent ??= formatEntityHierarchyMarkdown();
55
+ return cachedContent;
56
+ },
57
+ };
58
+ //# sourceMappingURL=entity-hierarchy.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAErG,IAAI,aAAiC,CAAC;AAEtC,SAAS,6BAA6B;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;SACnD,GAAG,CACF,CAAC,QAAQ,EAAE,EAAE,CACX,OAAO,QAAQ,CAAC,aAAa,UAAU,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,cAAc,QAAQ,CAAC,OAAO,QAAQ,QAAQ,CAAC,OAAO,IAAI,CACjJ;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;SACvD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrB,iBAAiB,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,iBAAiB,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY;QAC7H,iBAAiB,QAAQ,CAAC,OAAO,YAAY,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI;QACnF,kBAAkB,QAAQ,CAAC,UAAU,eAAe,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI;QAC1F,iBAAiB,QAAQ,CAAC,UAAU,eAAe,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI;KAC1F,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;;;;;;;;;;;;;EAiBP,IAAI;;;;;;EAMJ,QAAQ;;;;;;;;CAQT,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,kCAAkC;IACvC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,6FAA6F;IAC/F,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,6BAA6B,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entitySchemaResources: Resource[];
3
+ export declare const entitySchemaAllResource: Resource;
4
+ //# sourceMappingURL=entity-schemas.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schemas.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+C5C,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAQ3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAMrC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { AMAZON_DSP_CANONICAL_ENTITY_TYPES, AMAZON_DSP_ENTITY_CONTRACT, } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ function buildEntitySchemaMarkdown(entityType) {
3
+ const contract = AMAZON_DSP_ENTITY_CONTRACT[entityType];
4
+ const requiredFields = contract.requiredOnCreate
5
+ .map((rule) => `- \`${rule.field}\` (${rule.expectedType})${rule.hint ? ` — ${rule.hint}` : ""}`)
6
+ .join("\n");
7
+ const aliases = contract.aliases.length > 0 ? contract.aliases.join(", ") : "None";
8
+ const notes = contract.notes.map((note) => `- ${note}`).join("\n");
9
+ return `# Amazon DSP ${contract.displayName} Schema
10
+
11
+ ## Entity Names
12
+ - Canonical MCP type: \`${contract.canonicalType}\`
13
+ - Accepted aliases: ${aliases}
14
+
15
+ ## Endpoint Contract
16
+ - List: \`GET ${contract.listPath}\`
17
+ - Get: \`GET ${contract.getPath}\`
18
+ - Create: \`POST ${contract.createPath}\`
19
+ - Update: \`PUT ${contract.updatePath}\`
20
+ - List filter: \`${contract.listFilterParam}\`
21
+ - Primary ID field: \`${contract.idField}\`
22
+ - List response key: \`${contract.responseKey}\`
23
+
24
+ ## Required Fields For Create
25
+ ${requiredFields}
26
+
27
+ ## Read-Only Fields
28
+ ${contract.readOnlyFields.map((field) => `- \`${field}\``).join("\n")}
29
+
30
+ ## Notes
31
+ ${notes}
32
+ `;
33
+ }
34
+ function buildAllSchemasMarkdown() {
35
+ return AMAZON_DSP_CANONICAL_ENTITY_TYPES.map(buildEntitySchemaMarkdown).join("\n\n---\n\n");
36
+ }
37
+ export const entitySchemaResources = AMAZON_DSP_CANONICAL_ENTITY_TYPES.map((entityType) => ({
38
+ uri: `entity-schema://amazonDsp/${entityType}`,
39
+ name: `Amazon DSP ${entityType} Schema`,
40
+ description: `Field reference for Amazon DSP ${entityType} entity including required fields, optional fields, and read-only fields`,
41
+ mimeType: "text/markdown",
42
+ getContent: () => buildEntitySchemaMarkdown(entityType),
43
+ }));
44
+ export const entitySchemaAllResource = {
45
+ uri: "entity-schema://amazonDsp/all",
46
+ name: "Amazon DSP All Entity Schemas",
47
+ description: "Combined field reference for all Amazon DSP entity types",
48
+ mimeType: "text/markdown",
49
+ getContent: buildAllSchemasMarkdown,
50
+ };
51
+ //# sourceMappingURL=entity-schemas.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schemas.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iCAAiC,EACjC,0BAA0B,GAE3B,MAAM,yDAAyD,CAAC;AAEjE,SAAS,yBAAyB,CAAC,UAAwC;IACzE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,gBAAgB;SAC7C,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnE,OAAO,gBAAgB,QAAQ,CAAC,WAAW;;;0BAGnB,QAAQ,CAAC,aAAa;sBAC1B,OAAO;;;gBAGb,QAAQ,CAAC,QAAQ;eAClB,QAAQ,CAAC,OAAO;mBACZ,QAAQ,CAAC,UAAU;kBACpB,QAAQ,CAAC,UAAU;mBAClB,QAAQ,CAAC,eAAe;wBACnB,QAAQ,CAAC,OAAO;yBACf,QAAQ,CAAC,WAAW;;;EAG3C,cAAc;;;EAGd,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGnE,KAAK;CACN,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,iCAAiC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAe,iCAAiC,CAAC,GAAG,CACpF,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACf,GAAG,EAAE,6BAA6B,UAAU,EAAE;IAC9C,IAAI,EAAE,cAAc,UAAU,SAAS;IACvC,WAAW,EAAE,kCAAkC,UAAU,0EAA0E;IACnI,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,UAAU,CAAC;CACxD,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,0DAA0D;IACvE,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,uBAAuB;CACpC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { entityHierarchyResource } from "./entity-hierarchy.resource.js";
2
+ export { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
3
+ export { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
4
+ export { reportingReferenceResource } from "./reporting-reference.resource.js";
5
+ import type { Resource } from "../types.js";
6
+ export declare const allResources: Resource[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAQ/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsC5C,eAAO,MAAM,YAAY,EAAE,QAAQ,EASlC,CAAC"}
@@ -0,0 +1,53 @@
1
+ export { entityHierarchyResource } from "./entity-hierarchy.resource.js";
2
+ export { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
3
+ export { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
4
+ export { reportingReferenceResource } from "./reporting-reference.resource.js";
5
+ import { entityHierarchyResource } from "./entity-hierarchy.resource.js";
6
+ import { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
7
+ import { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
8
+ import { reportingReferenceResource } from "./reporting-reference.resource.js";
9
+ import { allTools } from "../../tools/definitions/index.js";
10
+ import { createToolExamplesResource, createServerCapabilitiesResource } from "@cesteral/shared";
11
+ const toolExamplesResource = createToolExamplesResource(allTools, "amazon-dsp-mcp");
12
+ const serverCapabilitiesResource = createServerCapabilitiesResource({
13
+ serverName: "amazon-dsp-mcp",
14
+ toolGroups: {
15
+ crud: [
16
+ "amazon_dsp_list_entities",
17
+ "amazon_dsp_get_entity",
18
+ "amazon_dsp_create_entity",
19
+ "amazon_dsp_update_entity",
20
+ "amazon_dsp_delete_entity",
21
+ ],
22
+ account: ["amazon_dsp_list_advertisers"],
23
+ reporting: [
24
+ "amazon_dsp_get_report",
25
+ "amazon_dsp_get_report_breakdowns",
26
+ "amazon_dsp_submit_report",
27
+ "amazon_dsp_check_report_status",
28
+ "amazon_dsp_download_report",
29
+ ],
30
+ bulk: [
31
+ "amazon_dsp_bulk_update_status",
32
+ "amazon_dsp_bulk_create_entities",
33
+ "amazon_dsp_bulk_update_entities",
34
+ "amazon_dsp_adjust_bids",
35
+ ],
36
+ targeting: ["amazon_dsp_search_targeting"],
37
+ specialized: ["amazon_dsp_duplicate_entity", "amazon_dsp_get_ad_preview"],
38
+ validation: ["amazon_dsp_validate_entity"],
39
+ },
40
+ commonWorkflows: ["campaign_setup", "async_reporting", "audience_targeting"],
41
+ startHere: "amazon_dsp_list_advertisers",
42
+ });
43
+ export const allResources = [
44
+ entityHierarchyResource,
45
+ entitySchemaAllResource,
46
+ ...entitySchemaResources,
47
+ entityExampleAllResource,
48
+ ...entityExampleResources,
49
+ reportingReferenceResource,
50
+ ...(toolExamplesResource ? [toolExamplesResource] : []),
51
+ serverCapabilitiesResource,
52
+ ];
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AAGhG,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACpF,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;IAClE,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,0BAA0B;YAC1B,uBAAuB;YACvB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;SAC3B;QACD,OAAO,EAAE,CAAC,6BAA6B,CAAC;QACxC,SAAS,EAAE;YACT,uBAAuB;YACvB,kCAAkC;YAClC,0BAA0B;YAC1B,gCAAgC;YAChC,4BAA4B;SAC7B;QACD,IAAI,EAAE;YACJ,+BAA+B;YAC/B,iCAAiC;YACjC,iCAAiC;YACjC,wBAAwB;SACzB;QACD,SAAS,EAAE,CAAC,6BAA6B,CAAC;QAC1C,WAAW,EAAE,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;QACzE,UAAU,EAAE,CAAC,4BAA4B,CAAC;KAC3C;IACD,eAAe,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;IAC5E,SAAS,EAAE,6BAA6B;CACzC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,uBAAuB;IACvB,uBAAuB;IACvB,GAAG,qBAAqB;IACxB,wBAAwB;IACxB,GAAG,sBAAsB;IACzB,0BAA0B;IAC1B,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAA2C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,0BAAiD;CAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const reportingReferenceResource: Resource;
3
+ //# sourceMappingURL=reporting-reference.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-reference.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/reporting-reference.resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8C5C,eAAO,MAAM,0BAA0B,EAAE,QAUxC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { AMAZON_DSP_REPORTING_CONTRACT } from "../../../services/amazon-dsp/amazon-dsp-api-contract.js";
2
+ let cachedContent;
3
+ function formatReportingReferenceMarkdown() {
4
+ return `# Amazon DSP Reporting Reference
5
+
6
+ ## Legacy /dsp/reports Contract
7
+ - Submit endpoint: \`POST ${AMAZON_DSP_REPORTING_CONTRACT.submitPathTemplate}\`
8
+ - Status endpoint: \`GET ${AMAZON_DSP_REPORTING_CONTRACT.statusPathTemplate}\`
9
+ - Content-Type: \`application/json\` (no vendor media type)
10
+ - Status values: ${AMAZON_DSP_REPORTING_CONTRACT.statuses.join(", ")}
11
+ - Default timeUnit: \`${AMAZON_DSP_REPORTING_CONTRACT.defaultTimeUnit}\`
12
+
13
+ ## Allowed \`type\` Values
14
+ ${AMAZON_DSP_REPORTING_CONTRACT.reportTypes.map((id) => `- \`${id}\``).join("\n")}
15
+
16
+ ## Allowed \`dimensions\` (per type, where known)
17
+ ${Object.entries(AMAZON_DSP_REPORTING_CONTRACT.dimensionsByType)
18
+ .map(([type, dims]) => `- \`${type}\`: ${dims.map((d) => `\`${d}\``).join(", ")}`)
19
+ .join("\n")}
20
+
21
+ ## Known Metric Names (incomplete — the API returns an authoritative invalid-list in 422 errors)
22
+ ${AMAZON_DSP_REPORTING_CONTRACT.knownMetrics.map((m) => `- \`${m}\``).join("\n")}
23
+
24
+ ## Notes
25
+ ${AMAZON_DSP_REPORTING_CONTRACT.notes.map((note) => `- ${note}`).join("\n")}
26
+
27
+ ## Example Request
28
+ \`\`\`json
29
+ {
30
+ "startDate": "20260301",
31
+ "endDate": "20260304",
32
+ "type": "CAMPAIGN",
33
+ "dimensions": ["ORDER", "LINE_ITEM"],
34
+ "metrics": "impressions,totalCost",
35
+ "timeUnit": "DAILY"
36
+ }
37
+ \`\`\`
38
+ `;
39
+ }
40
+ export const reportingReferenceResource = {
41
+ uri: "reporting-reference://amazonDsp",
42
+ name: "Amazon DSP Reporting Reference",
43
+ description: "Available dimensions, metrics, report types, and example configurations for Amazon DSP reporting",
44
+ mimeType: "text/markdown",
45
+ getContent: () => {
46
+ cachedContent ??= formatReportingReferenceMarkdown();
47
+ return cachedContent;
48
+ },
49
+ };
50
+ //# sourceMappingURL=reporting-reference.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-reference.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/reporting-reference.resource.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AAExG,IAAI,aAAiC,CAAC;AAEtC,SAAS,gCAAgC;IACvC,OAAO;;;4BAGmB,6BAA6B,CAAC,kBAAkB;2BACjD,6BAA6B,CAAC,kBAAkB;;mBAExD,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC5C,6BAA6B,CAAC,eAAe;;;EAGnE,6BAA6B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG/E,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;SAC7D,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACf,OAAO,IAAI,OAAQ,IAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF;SACA,IAAI,CAAC,IAAI,CAAC;;;EAGX,6BAA6B,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG9E,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;CAa1E,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAa;IAClD,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,kGAAkG;IACpG,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,gCAAgC,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { Resource } from "./types.js";
2
+ export { allResources } from "./definitions/index.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/index.ts"],"names":[],"mappings":"AAOA,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { allResources } from "./definitions/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface Resource {
2
+ uri: string;
3
+ name: string;
4
+ description: string;
5
+ mimeType: string;
6
+ getContent: () => string;
7
+ }
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/types.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,QAAQ;IAEvB,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { Logger } from "pino";
3
+ export declare function createMcpServer(logger: Logger, sessionId?: string, gcsBucket?: string): Promise<McpServer>;
4
+ export declare function runStdioServer(server: McpServer, logger: Logger): Promise<void>;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAmBtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAuCnC,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAkIpB;AAKD,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF"}
@@ -0,0 +1,137 @@
1
+ import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { allTools } from "./tools/index.js";
4
+ import { allResources } from "./resources/index.js";
5
+ import { promptRegistry } from "./prompts/index.js";
6
+ import { createOperationContext } from "@cesteral/shared";
7
+ import { reportCsvStore, sessionServiceStore } from "../services/session-services.js";
8
+ import { extractZodShape, registerReportCsvResource, registerToolsFromDefinitions, registerPromptsFromDefinitions, registerStaticResourcesFromDefinitions, InteractionLogger, isConformanceFixturesEnabled, } from "@cesteral/shared";
9
+ import packageJson from "../../package.json" with { type: "json" };
10
+ const AMAZON_DSP_PACKAGE_NAME = "amazon-dsp-mcp";
11
+ const AMAZON_DSP_PLATFORM = "amazon_dsp";
12
+ const amazonDspWorkflowIdByToolName = {
13
+ amazon_dsp_list_entities: "mcp.execute.amazon_dsp_entity_read",
14
+ amazon_dsp_get_entity: "mcp.execute.amazon_dsp_entity_read",
15
+ amazon_dsp_list_advertisers: "mcp.execute.amazon_dsp_entity_read",
16
+ amazon_dsp_create_entity: "mcp.execute.amazon_dsp_entity_update",
17
+ amazon_dsp_update_entity: "mcp.execute.amazon_dsp_entity_update",
18
+ amazon_dsp_delete_entity: "mcp.execute.amazon_dsp_entity_update",
19
+ amazon_dsp_get_report: "mcp.execute.amazon_dsp_reporting",
20
+ amazon_dsp_get_report_breakdowns: "mcp.execute.amazon_dsp_reporting",
21
+ amazon_dsp_submit_report: "mcp.execute.amazon_dsp_reporting",
22
+ amazon_dsp_check_report_status: "mcp.execute.amazon_dsp_reporting",
23
+ amazon_dsp_download_report: "mcp.execute.amazon_dsp_reporting",
24
+ amazon_dsp_bulk_update_status: "mcp.execute.amazon_dsp_bulk_operations",
25
+ amazon_dsp_bulk_create_entities: "mcp.execute.amazon_dsp_bulk_operations",
26
+ amazon_dsp_bulk_update_entities: "mcp.execute.amazon_dsp_bulk_operations",
27
+ amazon_dsp_adjust_bids: "mcp.execute.amazon_dsp_bulk_operations",
28
+ amazon_dsp_search_targeting: "mcp.execute.amazon_dsp_entity_read",
29
+ amazon_dsp_get_targeting_options: "mcp.execute.amazon_dsp_entity_read",
30
+ amazon_dsp_duplicate_entity: "mcp.execute.amazon_dsp_entity_update",
31
+ amazon_dsp_get_audience_estimate: "mcp.execute.amazon_dsp_entity_read",
32
+ amazon_dsp_get_ad_preview: "mcp.execute.amazon_dsp_entity_read",
33
+ amazon_dsp_validate_entity: "mcp.execute.amazon_dsp_entity_read",
34
+ };
35
+ export async function createMcpServer(logger, sessionId, gcsBucket) {
36
+ const server = new McpServer({
37
+ name: "amazon-dsp-mcp",
38
+ version: packageJson.version,
39
+ description: "Amazon DSP campaign management and reporting via the Amazon Advertising API. Supports campaign, ad group, creative, audience, profile-scoped auth, async reporting, targeting, and preview workflows.",
40
+ }, {
41
+ capabilities: {
42
+ logging: {},
43
+ },
44
+ instructions: "Amazon DSP campaign management and reporting server. Supports campaign, ad group, creative, audience, async reporting, targeting, and bulk operations via the Amazon Advertising API. " +
45
+ "Use amazon_dsp_list_advertisers to discover accounts, amazon_dsp_list_entities to browse entities. " +
46
+ "See MCP Resources for entity schemas and MCP Prompts for workflow guidance.",
47
+ });
48
+ const interactionLogger = new InteractionLogger({
49
+ serverName: AMAZON_DSP_PACKAGE_NAME,
50
+ logger,
51
+ gcsBucket,
52
+ });
53
+ registerToolsFromDefinitions({
54
+ server,
55
+ tools: allTools,
56
+ logger,
57
+ sessionId,
58
+ transformSchema: (schema) => extractZodShape(schema),
59
+ createRequestContext: (params) => createOperationContext({
60
+ operation: params.operation,
61
+ additionalContext: params.additionalContext,
62
+ }),
63
+ defaultTextFormat: "compact",
64
+ packageName: AMAZON_DSP_PACKAGE_NAME,
65
+ platform: AMAZON_DSP_PLATFORM,
66
+ workflowIdByToolName: amazonDspWorkflowIdByToolName,
67
+ interactionLogger,
68
+ authContextResolver: sessionId
69
+ ? () => sessionServiceStore.getAuthContext(sessionId)
70
+ : undefined,
71
+ });
72
+ registerStaticResourcesFromDefinitions({
73
+ server,
74
+ resources: allResources,
75
+ logger,
76
+ });
77
+ registerReportCsvResource({
78
+ server,
79
+ ResourceTemplate,
80
+ store: reportCsvStore,
81
+ platform: "Amazon DSP",
82
+ downloadToolName: "amazon_dsp_download_report",
83
+ logger,
84
+ });
85
+ if (isConformanceFixturesEnabled()) {
86
+ const { conformanceResources, conformanceResourceTemplate, conformancePrompts } = await import("@cesteral/shared");
87
+ const { ResourceTemplate: McpResourceTemplate } = await import("@modelcontextprotocol/sdk/server/mcp.js");
88
+ registerStaticResourcesFromDefinitions({
89
+ server,
90
+ resources: conformanceResources,
91
+ logger,
92
+ });
93
+ const template = new McpResourceTemplate(conformanceResourceTemplate.uriTemplate, {
94
+ list: undefined,
95
+ });
96
+ server.registerResource("conformance_template", template, {
97
+ description: conformanceResourceTemplate.description,
98
+ mimeType: conformanceResourceTemplate.mimeType,
99
+ }, async (uri, variables) => {
100
+ const id = variables.id || "unknown";
101
+ const content = conformanceResourceTemplate.getContent(id);
102
+ return {
103
+ contents: [
104
+ {
105
+ uri: uri.href,
106
+ mimeType: conformanceResourceTemplate.mimeType,
107
+ text: content,
108
+ },
109
+ ],
110
+ };
111
+ });
112
+ registerPromptsFromDefinitions({
113
+ server: server,
114
+ prompts: conformancePrompts,
115
+ logger,
116
+ });
117
+ }
118
+ const allPrompts = Array.from(promptRegistry.values()).map((def) => ({
119
+ name: def.prompt.name,
120
+ description: def.prompt.description ?? "",
121
+ arguments: def.prompt.arguments,
122
+ generateMessage: def.generateMessage,
123
+ }));
124
+ registerPromptsFromDefinitions({
125
+ server: server,
126
+ prompts: allPrompts,
127
+ logger,
128
+ });
129
+ return server;
130
+ }
131
+ export async function runStdioServer(server, logger) {
132
+ logger.info("Starting MCP server with stdio transport");
133
+ const transport = new StdioServerTransport();
134
+ await server.connect(transport);
135
+ logger.info("MCP server connected via stdio");
136
+ }
137
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,sCAAsC,EACtC,iBAAiB,EACjB,4BAA4B,GAI7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC,MAAM,6BAA6B,GAA2B;IAE5D,wBAAwB,EAAE,oCAAoC;IAC9D,qBAAqB,EAAE,oCAAoC;IAC3D,2BAA2B,EAAE,oCAAoC;IAEjE,wBAAwB,EAAE,sCAAsC;IAChE,wBAAwB,EAAE,sCAAsC;IAChE,wBAAwB,EAAE,sCAAsC;IAEhE,qBAAqB,EAAE,kCAAkC;IACzD,gCAAgC,EAAE,kCAAkC;IACpE,wBAAwB,EAAE,kCAAkC;IAC5D,8BAA8B,EAAE,kCAAkC;IAClE,0BAA0B,EAAE,kCAAkC;IAE9D,6BAA6B,EAAE,wCAAwC;IACvE,+BAA+B,EAAE,wCAAwC;IACzE,+BAA+B,EAAE,wCAAwC;IACzE,sBAAsB,EAAE,wCAAwC;IAEhE,2BAA2B,EAAE,oCAAoC;IACjE,gCAAgC,EAAE,oCAAoC;IAEtE,2BAA2B,EAAE,sCAAsC;IACnE,gCAAgC,EAAE,oCAAoC;IACtE,yBAAyB,EAAE,oCAAoC;IAC/D,0BAA0B,EAAE,oCAAoC;CACjE,CAAC;AAKF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,SAAkB,EAClB,SAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,WAAW,EACT,uMAAuM;KAC1M,EACD;QACE,YAAY,EAAE;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EACV,wLAAwL;YACxL,qGAAqG;YACrG,6EAA6E;KAChF,CACF,CAAC;IAGF,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,UAAU,EAAE,uBAAuB;QACnC,MAAM;QACN,SAAS;KACV,CAAC,CAAC;IAGH,4BAA4B,CAAC;QAC3B,MAAM;QACN,KAAK,EAAE,QAAQ;QACf,MAAM;QACN,SAAS;QACT,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;QACpD,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC/B,sBAAsB,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAC;QACJ,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,mBAAmB;QAC7B,oBAAoB,EAAE,6BAA6B;QACnD,iBAAiB;QACjB,mBAAmB,EAAE,SAAS;YAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAAC;YACrD,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;IAGH,sCAAsC,CAAC;QACrC,MAAM;QACN,SAAS,EAAE,YAAY;QACvB,MAAM;KACP,CAAC,CAAC;IAKH,yBAAyB,CAAC;QACxB,MAAM;QACN,gBAAgB;QAChB,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,YAAY;QACtB,gBAAgB,EAAE,4BAA4B;QAC9C,MAAM;KACP,CAAC,CAAC;IAGH,IAAI,4BAA4B,EAAE,EAAE,CAAC;QACnC,MAAM,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAC5F,kBAAkB,CACnB,CAAC;QACF,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAC5D,yCAAyC,CAC1C,CAAC;QAEF,sCAAsC,CAAC;YACrC,MAAM;YACN,SAAS,EAAE,oBAAoB;YAC/B,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,2BAA2B,CAAC,WAAW,EAAE;YAChF,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,CACrB,sBAAsB,EACtB,QAAQ,EACR;YACE,WAAW,EAAE,2BAA2B,CAAC,WAAW;YACpD,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;SAC/C,EACD,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;YACvB,MAAM,EAAE,GAAI,SAAS,CAAC,EAAa,IAAI,SAAS,CAAC;YACjD,MAAM,OAAO,GAAG,2BAA2B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,GAAG,CAAC,IAAI;wBACb,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;wBAC9C,IAAI,EAAE,OAAO;qBACd;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,8BAA8B,CAAC;YAC7B,MAAM,EAAE,MAAwC;YAChD,OAAO,EAAE,kBAAkB;YAC3B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAGD,MAAM,UAAU,GAAiC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CACtF,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE;QACzC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAmD;QACzE,eAAe,EAAE,GAAG,CAAC,eAAe;KACrC,CAAC,CACH,CAAC;IACF,8BAA8B,CAAC;QAC7B,MAAM,EAAE,MAAwC;QAChD,OAAO,EAAE,UAAU;QACnB,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAiB,EAAE,MAAc;IACpE,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC"}