@cesteral/ttd-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 (427) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +308 -0
  3. package/dist/auth/index.d.ts +3 -0
  4. package/dist/auth/index.d.ts.map +1 -0
  5. package/dist/auth/index.js +3 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/ttd-auth-adapter.d.ts +21 -0
  8. package/dist/auth/ttd-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/ttd-auth-adapter.js +70 -0
  10. package/dist/auth/ttd-auth-adapter.js.map +1 -0
  11. package/dist/auth/ttd-auth-strategy.d.ts +10 -0
  12. package/dist/auth/ttd-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/ttd-auth-strategy.js +28 -0
  14. package/dist/auth/ttd-auth-strategy.js.map +1 -0
  15. package/dist/config/index.d.ts +100 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +47 -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 +45 -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 +286 -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 +245 -0
  30. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js +102 -0
  34. package/dist/mcp-server/prompts/definitions/creative-setup-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 +215 -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 +162 -0
  50. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.js +163 -0
  54. package/dist/mcp-server/prompts/definitions/report-generation-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 +259 -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 +193 -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 +119 -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 +388 -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 +145 -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 +318 -0
  82. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts +3 -0
  84. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/field-rules.resource.js +28 -0
  86. package/dist/mcp-server/resources/definitions/field-rules.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts +3 -0
  88. package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/graphql-reference.resource.js +442 -0
  90. package/dist/mcp-server/resources/definitions/graphql-reference.resource.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  92. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/index.js +108 -0
  94. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  95. package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts +3 -0
  96. package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts.map +1 -0
  97. package/dist/mcp-server/resources/definitions/report-reference.resource.js +291 -0
  98. package/dist/mcp-server/resources/definitions/report-reference.resource.js.map +1 -0
  99. package/dist/mcp-server/resources/index.d.ts +3 -0
  100. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  101. package/dist/mcp-server/resources/index.js +2 -0
  102. package/dist/mcp-server/resources/index.js.map +1 -0
  103. package/dist/mcp-server/resources/types.d.ts +8 -0
  104. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  105. package/dist/mcp-server/resources/types.js +2 -0
  106. package/dist/mcp-server/resources/types.js.map +1 -0
  107. package/dist/mcp-server/resources/utils/field-rules.d.ts +18 -0
  108. package/dist/mcp-server/resources/utils/field-rules.d.ts.map +1 -0
  109. package/dist/mcp-server/resources/utils/field-rules.js +117 -0
  110. package/dist/mcp-server/resources/utils/field-rules.js.map +1 -0
  111. package/dist/mcp-server/server.d.ts +5 -0
  112. package/dist/mcp-server/server.d.ts.map +1 -0
  113. package/dist/mcp-server/server.js +162 -0
  114. package/dist/mcp-server/server.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +1137 -0
  116. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +165 -0
  118. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts +145 -0
  120. package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/archive-entities.tool.js +120 -0
  122. package/dist/mcp-server/tools/definitions/archive-entities.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts +174 -0
  124. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js +141 -0
  126. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts +225 -0
  128. package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/bid-list.tool.js +169 -0
  130. package/dist/mcp-server/tools/definitions/bid-list.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +198 -0
  132. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +135 -0
  134. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +258 -0
  136. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +187 -0
  138. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +170 -0
  140. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +137 -0
  142. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts +109 -0
  144. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js +134 -0
  146. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +112 -0
  148. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/check-report-status.tool.js +94 -0
  150. package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts +181 -0
  152. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js +52 -0
  154. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts +300 -0
  156. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js +63 -0
  158. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts +482 -0
  160. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js +121 -0
  162. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts +172 -0
  164. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js +55 -0
  166. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts +286 -0
  168. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js +63 -0
  170. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts +458 -0
  172. package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/create-campaigns.tool.js +124 -0
  174. package/dist/mcp-server/tools/definitions/create-campaigns.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +196 -0
  176. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/create-entity.tool.js +126 -0
  178. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts +147 -0
  180. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js +171 -0
  182. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts +370 -0
  184. package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/create-report-template.tool.js +224 -0
  186. package/dist/mcp-server/tools/definitions/create-report-template.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts +316 -0
  188. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js +247 -0
  190. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +147 -0
  192. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +112 -0
  194. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  195. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts +79 -0
  196. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js +89 -0
  198. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js.map +1 -0
  199. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
  200. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/definitions/download-report.tool.js +160 -0
  202. package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
  203. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts +147 -0
  204. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js +134 -0
  206. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js.map +1 -0
  207. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +80 -0
  208. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +82 -0
  210. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  211. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts +61 -0
  212. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts.map +1 -0
  213. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js +51 -0
  214. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js.map +1 -0
  215. package/dist/mcp-server/tools/definitions/get-context.tool.d.ts +77 -0
  216. package/dist/mcp-server/tools/definitions/get-context.tool.d.ts.map +1 -0
  217. package/dist/mcp-server/tools/definitions/get-context.tool.js +80 -0
  218. package/dist/mcp-server/tools/definitions/get-context.tool.js.map +1 -0
  219. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts +169 -0
  220. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts.map +1 -0
  221. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js +138 -0
  222. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js.map +1 -0
  223. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +129 -0
  224. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  225. package/dist/mcp-server/tools/definitions/get-entity.tool.js +88 -0
  226. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  227. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts +110 -0
  228. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts.map +1 -0
  229. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js +58 -0
  230. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js.map +1 -0
  231. package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts +61 -0
  232. package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts.map +1 -0
  233. package/dist/mcp-server/tools/definitions/get-job-status.tool.js +54 -0
  234. package/dist/mcp-server/tools/definitions/get-job-status.tool.js.map +1 -0
  235. package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts +131 -0
  236. package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts.map +1 -0
  237. package/dist/mcp-server/tools/definitions/get-report-executions.tool.js +253 -0
  238. package/dist/mcp-server/tools/definitions/get-report-executions.tool.js.map +1 -0
  239. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts +197 -0
  240. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts.map +1 -0
  241. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js +66 -0
  242. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js.map +1 -0
  243. package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts +303 -0
  244. package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts.map +1 -0
  245. package/dist/mcp-server/tools/definitions/get-report-template.tool.js +139 -0
  246. package/dist/mcp-server/tools/definitions/get-report-template.tool.js.map +1 -0
  247. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts +152 -0
  248. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts.map +1 -0
  249. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js +167 -0
  250. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js.map +1 -0
  251. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +126 -0
  252. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  253. package/dist/mcp-server/tools/definitions/get-report.tool.js +138 -0
  254. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  255. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts +104 -0
  256. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts.map +1 -0
  257. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js +57 -0
  258. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js.map +1 -0
  259. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts +92 -0
  260. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts.map +1 -0
  261. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js +124 -0
  262. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js.map +1 -0
  263. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts +68 -0
  264. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts.map +1 -0
  265. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js +102 -0
  266. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js.map +1 -0
  267. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts +102 -0
  268. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts.map +1 -0
  269. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js +152 -0
  270. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js.map +1 -0
  271. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts +93 -0
  272. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts.map +1 -0
  273. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js +133 -0
  274. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js.map +1 -0
  275. package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts +189 -0
  276. package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts.map +1 -0
  277. package/dist/mcp-server/tools/definitions/graphql-query.tool.js +143 -0
  278. package/dist/mcp-server/tools/definitions/graphql-query.tool.js.map +1 -0
  279. package/dist/mcp-server/tools/definitions/index.d.ts +45 -0
  280. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  281. package/dist/mcp-server/tools/definitions/index.js +135 -0
  282. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  283. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +231 -0
  284. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  285. package/dist/mcp-server/tools/definitions/list-entities.tool.js +147 -0
  286. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  287. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts +282 -0
  288. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts.map +1 -0
  289. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js +128 -0
  290. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js.map +1 -0
  291. package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts +140 -0
  292. package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts.map +1 -0
  293. package/dist/mcp-server/tools/definitions/list-report-templates.tool.js +118 -0
  294. package/dist/mcp-server/tools/definitions/list-report-templates.tool.js.map +1 -0
  295. package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts +97 -0
  296. package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts.map +1 -0
  297. package/dist/mcp-server/tools/definitions/list-report-types.tool.js +89 -0
  298. package/dist/mcp-server/tools/definitions/list-report-types.tool.js.map +1 -0
  299. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts +109 -0
  300. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts.map +1 -0
  301. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js +130 -0
  302. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js.map +1 -0
  303. package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts +74 -0
  304. package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts.map +1 -0
  305. package/dist/mcp-server/tools/definitions/rest-request.tool.js +54 -0
  306. package/dist/mcp-server/tools/definitions/rest-request.tool.js.map +1 -0
  307. package/dist/mcp-server/tools/definitions/seed.tool.d.ts +156 -0
  308. package/dist/mcp-server/tools/definitions/seed.tool.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/definitions/seed.tool.js +316 -0
  310. package/dist/mcp-server/tools/definitions/seed.tool.js.map +1 -0
  311. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +114 -0
  312. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/definitions/submit-report.tool.js +136 -0
  314. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  315. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts +82 -0
  316. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts.map +1 -0
  317. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js +51 -0
  318. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js.map +1 -0
  319. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts +158 -0
  320. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts.map +1 -0
  321. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js +63 -0
  322. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js.map +1 -0
  323. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts +241 -0
  324. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js +120 -0
  326. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js.map +1 -0
  327. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts +82 -0
  328. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts.map +1 -0
  329. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js +53 -0
  330. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js.map +1 -0
  331. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts +158 -0
  332. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts.map +1 -0
  333. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js +63 -0
  334. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js.map +1 -0
  335. package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts +241 -0
  336. package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts.map +1 -0
  337. package/dist/mcp-server/tools/definitions/update-campaigns.tool.js +120 -0
  338. package/dist/mcp-server/tools/definitions/update-campaigns.tool.js.map +1 -0
  339. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +164 -0
  340. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  341. package/dist/mcp-server/tools/definitions/update-entity.tool.js +101 -0
  342. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  343. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts +116 -0
  344. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts.map +1 -0
  345. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js +134 -0
  346. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js.map +1 -0
  347. package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts +358 -0
  348. package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts.map +1 -0
  349. package/dist/mcp-server/tools/definitions/update-report-template.tool.js +156 -0
  350. package/dist/mcp-server/tools/definitions/update-report-template.tool.js.map +1 -0
  351. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +226 -0
  352. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  353. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +205 -0
  354. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  355. package/dist/mcp-server/tools/index.d.ts +2 -0
  356. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  357. package/dist/mcp-server/tools/index.js +2 -0
  358. package/dist/mcp-server/tools/index.js.map +1 -0
  359. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +18 -0
  360. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  361. package/dist/mcp-server/tools/utils/entity-mapping.js +66 -0
  362. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  363. package/dist/mcp-server/tools/utils/graphql-errors.d.ts +13 -0
  364. package/dist/mcp-server/tools/utils/graphql-errors.d.ts.map +1 -0
  365. package/dist/mcp-server/tools/utils/graphql-errors.js +48 -0
  366. package/dist/mcp-server/tools/utils/graphql-errors.js.map +1 -0
  367. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +11 -0
  368. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts.map +1 -0
  369. package/dist/mcp-server/tools/utils/parent-id-validation.js +60 -0
  370. package/dist/mcp-server/tools/utils/parent-id-validation.js.map +1 -0
  371. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  372. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  373. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  374. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  375. package/dist/mcp-server/tools/utils/workflow-schemas.d.ts +646 -0
  376. package/dist/mcp-server/tools/utils/workflow-schemas.d.ts.map +1 -0
  377. package/dist/mcp-server/tools/utils/workflow-schemas.js +173 -0
  378. package/dist/mcp-server/tools/utils/workflow-schemas.js.map +1 -0
  379. package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
  380. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  381. package/dist/mcp-server/transports/streamable-http-transport.js +74 -0
  382. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  383. package/dist/services/session-services.d.ts +22 -0
  384. package/dist/services/session-services.d.ts.map +1 -0
  385. package/dist/services/session-services.js +24 -0
  386. package/dist/services/session-services.js.map +1 -0
  387. package/dist/services/ttd/ttd-http-client.d.ts +13 -0
  388. package/dist/services/ttd/ttd-http-client.d.ts.map +1 -0
  389. package/dist/services/ttd/ttd-http-client.js +70 -0
  390. package/dist/services/ttd/ttd-http-client.js.map +1 -0
  391. package/dist/services/ttd/ttd-reporting-service.d.ts +79 -0
  392. package/dist/services/ttd/ttd-reporting-service.d.ts.map +1 -0
  393. package/dist/services/ttd/ttd-reporting-service.js +180 -0
  394. package/dist/services/ttd/ttd-reporting-service.js.map +1 -0
  395. package/dist/services/ttd/ttd-service.d.ts +107 -0
  396. package/dist/services/ttd/ttd-service.d.ts.map +1 -0
  397. package/dist/services/ttd/ttd-service.js +307 -0
  398. package/dist/services/ttd/ttd-service.js.map +1 -0
  399. package/dist/services/ttd/types.d.ts +153 -0
  400. package/dist/services/ttd/types.d.ts.map +1 -0
  401. package/dist/services/ttd/types.js +30 -0
  402. package/dist/services/ttd/types.js.map +1 -0
  403. package/dist/types-global/mcp.d.ts +2 -0
  404. package/dist/types-global/mcp.d.ts.map +1 -0
  405. package/dist/types-global/mcp.js +2 -0
  406. package/dist/types-global/mcp.js.map +1 -0
  407. package/dist/utils/errors/index.d.ts +2 -0
  408. package/dist/utils/errors/index.d.ts.map +1 -0
  409. package/dist/utils/errors/index.js +2 -0
  410. package/dist/utils/errors/index.js.map +1 -0
  411. package/dist/utils/platform.d.ts +3 -0
  412. package/dist/utils/platform.d.ts.map +1 -0
  413. package/dist/utils/platform.js +5 -0
  414. package/dist/utils/platform.js.map +1 -0
  415. package/dist/utils/security/rate-limiter.d.ts +3 -0
  416. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  417. package/dist/utils/security/rate-limiter.js +5 -0
  418. package/dist/utils/security/rate-limiter.js.map +1 -0
  419. package/dist/utils/telemetry/index.d.ts +2 -0
  420. package/dist/utils/telemetry/index.d.ts.map +1 -0
  421. package/dist/utils/telemetry/index.js +2 -0
  422. package/dist/utils/telemetry/index.js.map +1 -0
  423. package/dist/utils/telemetry/tracing.d.ts +3 -0
  424. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  425. package/dist/utils/telemetry/tracing.js +4 -0
  426. package/dist/utils/telemetry/tracing.js.map +1 -0
  427. package/package.json +56 -0
@@ -0,0 +1,156 @@
1
+ import { z } from "zod";
2
+ import { resolveSessionServices } from "../utils/resolve-session.js";
3
+ import { MYREPORTS_TEMPLATE_ACCESS_ERROR, throwIfGraphqlErrors } from "../utils/graphql-errors.js";
4
+ const TOOL_NAME = "ttd_update_report_template";
5
+ const TOOL_TITLE = "Update TTD Report Template (GraphQL)";
6
+ const TOOL_DESCRIPTION = `Update an existing report template via TTD GraphQL (\`myReportsTemplateUpdate\`).
7
+
8
+ **IMPORTANT:** The updated structure **completely replaces** the existing template. You must re-include all fields and metrics you want to keep — any omitted columns will be removed.
9
+
10
+ Use \`ttd_get_report_template\` first to retrieve the current template structure before updating.
11
+ Use \`ttd_list_report_templates\` to find the template ID.
12
+ Use \`ttd_list_report_types\` and \`ttd_get_report_type_schema\` to discover available fields and metrics.`;
13
+ const ReportTemplateColumnSchema = z.object({
14
+ columnId: z.string().describe("Column or metric ID"),
15
+ columnOrder: z.number().int().min(1).describe("Display order of this column in the report"),
16
+ includedInPivot: z.boolean().describe("Whether to include this column in the Excel pivot table"),
17
+ });
18
+ const ReportTemplateResultSetSchema = z.object({
19
+ name: z.string().describe("Tab name in the report"),
20
+ reportTypeId: z.string().describe("Report type ID"),
21
+ fields: z.array(ReportTemplateColumnSchema).describe("Dimension fields to include"),
22
+ metrics: z.array(ReportTemplateColumnSchema).describe("Metric columns to include"),
23
+ conversionMetrics: z
24
+ .array(ReportTemplateColumnSchema)
25
+ .optional()
26
+ .describe("Conversion metric columns to include (optional)"),
27
+ });
28
+ export const UpdateReportTemplateInputSchema = z
29
+ .object({
30
+ id: z.string().min(1).describe("ID of the report template to update"),
31
+ name: z.string().min(1).describe("New name for the report template"),
32
+ resultSets: z
33
+ .array(ReportTemplateResultSetSchema)
34
+ .min(1)
35
+ .max(29)
36
+ .describe("Complete new tab structure (up to 29 tabs). Replaces the existing structure entirely — re-include all columns you want to keep."),
37
+ })
38
+ .describe("Parameters for updating a TTD report template");
39
+ export const UpdateReportTemplateOutputSchema = z
40
+ .object({
41
+ templateData: z.unknown().optional().describe("Raw data scalar returned by TTD"),
42
+ errors: z
43
+ .array(z.object({ field: z.string().optional(), message: z.string() }))
44
+ .optional()
45
+ .describe("Mutation errors from TTD"),
46
+ rawResponse: z.record(z.unknown()).optional(),
47
+ timestamp: z.string().datetime(),
48
+ })
49
+ .describe("Result of report template update");
50
+ const UPDATE_REPORT_TEMPLATE_MUTATION = `mutation UpdateReportTemplate($input: MyReportsTemplateUpdateInput!) {
51
+ myReportsTemplateUpdate(input: $input) {
52
+ data
53
+ errors {
54
+ __typename
55
+ ... on MutationError {
56
+ field
57
+ message
58
+ }
59
+ }
60
+ }
61
+ }`;
62
+ export async function updateReportTemplateLogic(input, context, sdkContext) {
63
+ const { ttdService } = resolveSessionServices(sdkContext);
64
+ const variables = {
65
+ input: {
66
+ id: input.id,
67
+ name: input.name,
68
+ resultSets: input.resultSets,
69
+ },
70
+ };
71
+ const raw = (await ttdService.graphqlQuery(UPDATE_REPORT_TEMPLATE_MUTATION, variables, context));
72
+ throwIfGraphqlErrors(raw, "GraphQL error updating report template", {
73
+ unauthorizedMessage: MYREPORTS_TEMPLATE_ACCESS_ERROR,
74
+ });
75
+ const gqlData = raw.data ?? {};
76
+ const mutationResult = gqlData.myReportsTemplateUpdate ?? {};
77
+ const errors = mutationResult.errors;
78
+ return {
79
+ templateData: mutationResult.data,
80
+ errors: errors?.length ? errors : undefined,
81
+ rawResponse: raw,
82
+ timestamp: new Date().toISOString(),
83
+ };
84
+ }
85
+ export function updateReportTemplateResponseFormatter(result) {
86
+ if (result.errors?.length) {
87
+ return [
88
+ {
89
+ type: "text",
90
+ text: `Report template update failed:\n\n` +
91
+ result.errors.map((e) => `- ${e.field ? `${e.field}: ` : ""}${e.message}`).join("\n") +
92
+ `\n\nTimestamp: ${result.timestamp}`,
93
+ },
94
+ ];
95
+ }
96
+ if (!result.templateData) {
97
+ return [
98
+ {
99
+ type: "text",
100
+ text: `Report template update returned no template data. The mutation may not have executed.\n\n` +
101
+ `This usually means the API token lacks MyReports write access. ` +
102
+ `Check the raw response for details:\n\n` +
103
+ `${JSON.stringify(result.rawResponse, null, 2)}\n\n` +
104
+ `Timestamp: ${result.timestamp}`,
105
+ },
106
+ ];
107
+ }
108
+ return [
109
+ {
110
+ type: "text",
111
+ text: `Report template updated successfully.\n\n` +
112
+ `Template data: ${JSON.stringify(result.templateData, null, 2)}\n\n` +
113
+ `Timestamp: ${result.timestamp}`,
114
+ },
115
+ ];
116
+ }
117
+ export const updateReportTemplateTool = {
118
+ name: TOOL_NAME,
119
+ title: TOOL_TITLE,
120
+ description: TOOL_DESCRIPTION,
121
+ inputSchema: UpdateReportTemplateInputSchema,
122
+ outputSchema: UpdateReportTemplateOutputSchema,
123
+ annotations: {
124
+ readOnlyHint: false,
125
+ openWorldHint: true,
126
+ destructiveHint: true,
127
+ idempotentHint: false,
128
+ },
129
+ inputExamples: [
130
+ {
131
+ label: "Update a report template with new columns",
132
+ input: {
133
+ id: "template-id-placeholder",
134
+ name: "Updated Weekly Report",
135
+ resultSets: [
136
+ {
137
+ name: "Tab 1",
138
+ reportTypeId: "60",
139
+ fields: [
140
+ { columnId: "10", columnOrder: 1, includedInPivot: true },
141
+ { columnId: "1", columnOrder: 2, includedInPivot: false },
142
+ ],
143
+ metrics: [
144
+ { columnId: "7", columnOrder: 3, includedInPivot: true },
145
+ { columnId: "25", columnOrder: 4, includedInPivot: true },
146
+ { columnId: "58", columnOrder: 5, includedInPivot: true },
147
+ ],
148
+ },
149
+ ],
150
+ },
151
+ },
152
+ ],
153
+ logic: updateReportTemplateLogic,
154
+ responseFormatter: updateReportTemplateResponseFormatter,
155
+ };
156
+ //# sourceMappingURL=update-report-template.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-report-template.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/update-report-template.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEnG,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAC/C,MAAM,UAAU,GAAG,sCAAsC,CAAC;AAC1D,MAAM,gBAAgB,GAAG;;;;;;2GAMkF,CAAC;AAE5G,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC3F,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CACjG,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAClF,iBAAiB,EAAE,CAAC;SACjB,KAAK,CAAC,0BAA0B,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC;KAC7C,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACpE,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,6BAA6B,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CACP,iIAAiI,CAClI;CACJ,CAAC;KACD,QAAQ,CAAC,+CAA+C,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC;KAC9C,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChF,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACtE,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,QAAQ,CAAC,kCAAkC,CAAC,CAAC;AAKhD,MAAM,+BAA+B,GAAG;;;;;;;;;;;EAWtC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAgC,EAChC,OAAuB,EACvB,UAAuB;IAEvB,MAAM,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B;KACF,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,MAAM,UAAU,CAAC,YAAY,CACxC,+BAA+B,EAC/B,SAAS,EACT,OAAO,CACR,CAA4B,CAAC;IAE9B,oBAAoB,CAAC,GAAG,EAAE,wCAAwC,EAAE;QAClE,mBAAmB,EAAE,+BAA+B;KACrD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAI,GAAG,CAAC,IAA4C,IAAI,EAAE,CAAC;IACxE,MAAM,cAAc,GACjB,OAAO,CAAC,uBAA+D,IAAI,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAgE,CAAC;IAE/F,OAAO;QACL,YAAY,EAAE,cAAc,CAAC,IAAI;QACjC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3C,WAAW,EAAE,GAA8B;QAC3C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,MAAkC;IAElC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EACF,oCAAoC;oBACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrF,kBAAkB,MAAM,CAAC,SAAS,EAAE;aACvC;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO;YACL;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EACF,2FAA2F;oBAC3F,iEAAiE;oBACjE,yCAAyC;oBACzC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM;oBACpD,cAAc,MAAM,CAAC,SAAS,EAAE;aACnC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL;YACE,IAAI,EAAE,MAAe;YACrB,IAAI,EACF,2CAA2C;gBAC3C,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM;gBACpE,cAAc,MAAM,CAAC,SAAS,EAAE;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,+BAA+B;IAC5C,YAAY,EAAE,gCAAgC;IAC9C,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;KACtB;IACD,aAAa,EAAE;QACb;YACE,KAAK,EAAE,2CAA2C;YAClD,KAAK,EAAE;gBACL,EAAE,EAAE,yBAAyB;gBAC7B,IAAI,EAAE,uBAAuB;gBAC7B,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,OAAO;wBACb,YAAY,EAAE,IAAI;wBAClB,MAAM,EAAE;4BACN,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;4BACzD,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;yBAC1D;wBACD,OAAO,EAAE;4BACP,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;4BACxD,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;4BACzD,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;yBAC1D;qBACF;iBACF;aACF;SACF;KACF;IACD,KAAK,EAAE,yBAAyB;IAChC,iBAAiB,EAAE,qCAAqC;CACzD,CAAC"}
@@ -0,0 +1,226 @@
1
+ import { z } from "zod";
2
+ import type { RequestContext } from "@cesteral/shared";
3
+ import { validateEntityResponseFormatter } from "@cesteral/shared";
4
+ import type { SdkContext } from "@cesteral/shared";
5
+ export declare const ValidateEntityInputSchema: z.ZodObject<{
6
+ entityType: z.ZodEnum<[string, ...string[]]>;
7
+ mode: z.ZodEnum<["create", "update"]>;
8
+ entityId: z.ZodOptional<z.ZodString>;
9
+ partnerId: z.ZodOptional<z.ZodString>;
10
+ advertiserId: z.ZodOptional<z.ZodString>;
11
+ campaignId: z.ZodOptional<z.ZodString>;
12
+ adGroupId: z.ZodOptional<z.ZodString>;
13
+ data: z.ZodRecord<z.ZodString, z.ZodAny>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ entityType: string;
16
+ data: Record<string, any>;
17
+ mode: "create" | "update";
18
+ advertiserId?: string | undefined;
19
+ campaignId?: string | undefined;
20
+ adGroupId?: string | undefined;
21
+ partnerId?: string | undefined;
22
+ entityId?: string | undefined;
23
+ }, {
24
+ entityType: string;
25
+ data: Record<string, any>;
26
+ mode: "create" | "update";
27
+ advertiserId?: string | undefined;
28
+ campaignId?: string | undefined;
29
+ adGroupId?: string | undefined;
30
+ partnerId?: string | undefined;
31
+ entityId?: string | undefined;
32
+ }>;
33
+ export declare const ValidateEntityOutputSchema: z.ZodObject<{
34
+ valid: z.ZodBoolean;
35
+ entityType: z.ZodString;
36
+ mode: z.ZodString;
37
+ issues: z.ZodArray<z.ZodObject<{
38
+ field: z.ZodString;
39
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
40
+ message: z.ZodString;
41
+ hint: z.ZodOptional<z.ZodString>;
42
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
43
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
46
+ message: string;
47
+ field: string;
48
+ hint?: string | undefined;
49
+ suggestedValues?: string[] | undefined;
50
+ severity?: "warning" | "error" | undefined;
51
+ }, {
52
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
53
+ message: string;
54
+ field: string;
55
+ hint?: string | undefined;
56
+ suggestedValues?: string[] | undefined;
57
+ severity?: "warning" | "error" | undefined;
58
+ }>, "many">;
59
+ nextAction: z.ZodOptional<z.ZodString>;
60
+ timestamp: z.ZodString;
61
+ }, "strip", z.ZodTypeAny, {
62
+ issues: {
63
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
64
+ message: string;
65
+ field: string;
66
+ hint?: string | undefined;
67
+ suggestedValues?: string[] | undefined;
68
+ severity?: "warning" | "error" | undefined;
69
+ }[];
70
+ valid: boolean;
71
+ entityType: string;
72
+ timestamp: string;
73
+ mode: string;
74
+ nextAction?: string | undefined;
75
+ }, {
76
+ issues: {
77
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
78
+ message: string;
79
+ field: string;
80
+ hint?: string | undefined;
81
+ suggestedValues?: string[] | undefined;
82
+ severity?: "warning" | "error" | undefined;
83
+ }[];
84
+ valid: boolean;
85
+ entityType: string;
86
+ timestamp: string;
87
+ mode: string;
88
+ nextAction?: string | undefined;
89
+ }>;
90
+ type ValidateEntityInput = z.infer<typeof ValidateEntityInputSchema>;
91
+ type ValidateEntityOutput = z.infer<typeof ValidateEntityOutputSchema>;
92
+ export declare function validateEntityLogic(input: ValidateEntityInput, _context: RequestContext, _sdkContext?: SdkContext): Promise<ValidateEntityOutput>;
93
+ export declare const validateEntityTool: {
94
+ name: string;
95
+ title: string;
96
+ description: string;
97
+ inputSchema: z.ZodObject<{
98
+ entityType: z.ZodEnum<[string, ...string[]]>;
99
+ mode: z.ZodEnum<["create", "update"]>;
100
+ entityId: z.ZodOptional<z.ZodString>;
101
+ partnerId: z.ZodOptional<z.ZodString>;
102
+ advertiserId: z.ZodOptional<z.ZodString>;
103
+ campaignId: z.ZodOptional<z.ZodString>;
104
+ adGroupId: z.ZodOptional<z.ZodString>;
105
+ data: z.ZodRecord<z.ZodString, z.ZodAny>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ entityType: string;
108
+ data: Record<string, any>;
109
+ mode: "create" | "update";
110
+ advertiserId?: string | undefined;
111
+ campaignId?: string | undefined;
112
+ adGroupId?: string | undefined;
113
+ partnerId?: string | undefined;
114
+ entityId?: string | undefined;
115
+ }, {
116
+ entityType: string;
117
+ data: Record<string, any>;
118
+ mode: "create" | "update";
119
+ advertiserId?: string | undefined;
120
+ campaignId?: string | undefined;
121
+ adGroupId?: string | undefined;
122
+ partnerId?: string | undefined;
123
+ entityId?: string | undefined;
124
+ }>;
125
+ outputSchema: z.ZodObject<{
126
+ valid: z.ZodBoolean;
127
+ entityType: z.ZodString;
128
+ mode: z.ZodString;
129
+ issues: z.ZodArray<z.ZodObject<{
130
+ field: z.ZodString;
131
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
132
+ message: z.ZodString;
133
+ hint: z.ZodOptional<z.ZodString>;
134
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
135
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
136
+ }, "strip", z.ZodTypeAny, {
137
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
138
+ message: string;
139
+ field: string;
140
+ hint?: string | undefined;
141
+ suggestedValues?: string[] | undefined;
142
+ severity?: "warning" | "error" | undefined;
143
+ }, {
144
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
145
+ message: string;
146
+ field: string;
147
+ hint?: string | undefined;
148
+ suggestedValues?: string[] | undefined;
149
+ severity?: "warning" | "error" | undefined;
150
+ }>, "many">;
151
+ nextAction: z.ZodOptional<z.ZodString>;
152
+ timestamp: z.ZodString;
153
+ }, "strip", z.ZodTypeAny, {
154
+ issues: {
155
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
156
+ message: string;
157
+ field: string;
158
+ hint?: string | undefined;
159
+ suggestedValues?: string[] | undefined;
160
+ severity?: "warning" | "error" | undefined;
161
+ }[];
162
+ valid: boolean;
163
+ entityType: string;
164
+ timestamp: string;
165
+ mode: string;
166
+ nextAction?: string | undefined;
167
+ }, {
168
+ issues: {
169
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
170
+ message: string;
171
+ field: string;
172
+ hint?: string | undefined;
173
+ suggestedValues?: string[] | undefined;
174
+ severity?: "warning" | "error" | undefined;
175
+ }[];
176
+ valid: boolean;
177
+ entityType: string;
178
+ timestamp: string;
179
+ mode: string;
180
+ nextAction?: string | undefined;
181
+ }>;
182
+ annotations: {
183
+ readOnlyHint: boolean;
184
+ idempotentHint: boolean;
185
+ openWorldHint: boolean;
186
+ destructiveHint: boolean;
187
+ };
188
+ inputExamples: ({
189
+ label: string;
190
+ input: {
191
+ entityType: string;
192
+ mode: string;
193
+ data: {
194
+ AdvertiserId: string;
195
+ CampaignName: string;
196
+ Budget: {
197
+ Amount: number;
198
+ CurrencyCode: string;
199
+ };
200
+ StartDate: string;
201
+ EndDate: string;
202
+ PacingMode: string;
203
+ AdGroupName?: undefined;
204
+ };
205
+ };
206
+ } | {
207
+ label: string;
208
+ input: {
209
+ entityType: string;
210
+ mode: string;
211
+ data: {
212
+ AdGroupName: string;
213
+ AdvertiserId?: undefined;
214
+ CampaignName?: undefined;
215
+ Budget?: undefined;
216
+ StartDate?: undefined;
217
+ EndDate?: undefined;
218
+ PacingMode?: undefined;
219
+ };
220
+ };
221
+ })[];
222
+ logic: typeof validateEntityLogic;
223
+ responseFormatter: typeof validateEntityResponseFormatter;
224
+ };
225
+ export {};
226
+ //# 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":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAKL,+BAA+B,EAEhC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA6BnD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBuB,CAAC;AAW9D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASP,CAAC;AAMjC,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACrE,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAMvE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,cAAc,EACxB,WAAW,CAAC,EAAE,UAAU,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAuI/B;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC9B,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { z } from "zod";
2
+ import { getEntityTypeEnum } from "../utils/entity-mapping.js";
3
+ import { validateRequiredFieldsStructured, validateEnumFieldsStructured, checkReadOnlyFieldsStructured, validateEntityResponseFormatter, buildNextAction, } from "@cesteral/shared";
4
+ import { mergeParentIdsIntoData } from "../utils/parent-id-validation.js";
5
+ import { REQUIRED_FIELDS_CREATE, OPTIONAL_ENUM_FIELDS, READ_ONLY_FIELDS, POSITIVE_NUMBER_FIELDS, } from "../../resources/utils/field-rules.js";
6
+ const TOOL_NAME = "ttd_validate_entity";
7
+ const TOOL_TITLE = "TTD Entity Validation (Client-Side)";
8
+ const TOOL_DESCRIPTION = `Validate an entity payload against known TTD requirements without calling the API. Checks required fields, data types, and common configuration mistakes.
9
+
10
+ **Supported entity types:** ${getEntityTypeEnum().join(", ")}
11
+
12
+ This is a pure client-side check — it catches missing required fields and
13
+ obvious type errors. The TTD API may still reject payloads for business-rule
14
+ reasons (e.g., invalid pacing mode / budget combinations).
15
+
16
+ Required-field tables, enum suggestions, and read-only field lists per entity type are also exposed as MCP resources. Valid values: see resource \`ttd-field-rules://{entityType}\`.`;
17
+ export const ValidateEntityInputSchema = z
18
+ .object({
19
+ entityType: z.enum(getEntityTypeEnum()).describe("Type of entity to validate"),
20
+ mode: z.enum(["create", "update"]).describe("Whether validating for creation or update"),
21
+ entityId: z.string().optional().describe("Entity ID (recommended for update mode)"),
22
+ partnerId: z
23
+ .string()
24
+ .optional()
25
+ .describe("Partner ID (merged into data as PartnerId before validation, mirrors create tool)"),
26
+ advertiserId: z
27
+ .string()
28
+ .optional()
29
+ .describe("Advertiser ID (merged into data before validation, mirrors create/update tools)"),
30
+ campaignId: z.string().optional().describe("Campaign ID (merged into data before validation)"),
31
+ adGroupId: z.string().optional().describe("Ad group ID (merged into data before validation)"),
32
+ data: z.record(z.any()).describe("Entity payload to validate"),
33
+ })
34
+ .describe("Parameters for validating a TTD entity payload");
35
+ const ValidationIssueSchema = z.object({
36
+ field: z.string(),
37
+ code: z.enum(["missing", "wrongType", "invalidValue", "readOnly", "custom"]),
38
+ message: z.string(),
39
+ hint: z.string().optional(),
40
+ suggestedValues: z.array(z.string()).optional(),
41
+ severity: z.enum(["error", "warning"]).optional(),
42
+ });
43
+ export const ValidateEntityOutputSchema = z
44
+ .object({
45
+ valid: z.boolean().describe("Whether the payload passed validation"),
46
+ entityType: z.string().describe("Entity type that was validated"),
47
+ mode: z.string().describe("Validation mode (create or update)"),
48
+ issues: z.array(ValidationIssueSchema),
49
+ nextAction: z.string().optional(),
50
+ timestamp: z.string().datetime().describe("ISO-8601 timestamp of validation"),
51
+ })
52
+ .describe("Validation result");
53
+ export async function validateEntityLogic(input, _context, _sdkContext) {
54
+ const { entityType, mode } = input;
55
+ const data = mergeParentIdsIntoData(input.data, input);
56
+ const issues = [];
57
+ const rules = REQUIRED_FIELDS_CREATE[entityType] ?? [];
58
+ const optionalRules = OPTIONAL_ENUM_FIELDS[entityType] ?? [];
59
+ issues.push(...validateEnumFieldsStructured(data, [...rules, ...optionalRules]));
60
+ if (mode === "create") {
61
+ issues.push(...validateRequiredFieldsStructured(data, rules));
62
+ if (entityType === "campaign" && data.Budget && typeof data.Budget === "object") {
63
+ const budget = data.Budget;
64
+ if (budget.Amount === undefined) {
65
+ issues.push({
66
+ field: "Budget.Amount",
67
+ code: "missing",
68
+ message: 'Field "Budget.Amount" is required',
69
+ severity: "error",
70
+ });
71
+ }
72
+ if (!budget.CurrencyCode) {
73
+ issues.push({
74
+ field: "Budget.CurrencyCode",
75
+ code: "missing",
76
+ message: 'Field "Budget.CurrencyCode" is required',
77
+ severity: "error",
78
+ });
79
+ }
80
+ }
81
+ if (entityType === "adGroup" && data.RTBAttributes && typeof data.RTBAttributes === "object") {
82
+ const rtb = data.RTBAttributes;
83
+ if (!rtb.BudgetSettings) {
84
+ issues.push({
85
+ field: "RTBAttributes.BudgetSettings",
86
+ code: "missing",
87
+ message: 'Field "RTBAttributes.BudgetSettings" is recommended for ad group creation',
88
+ severity: "warning",
89
+ });
90
+ }
91
+ if (!rtb.BaseBidCPM) {
92
+ issues.push({
93
+ field: "RTBAttributes.BaseBidCPM",
94
+ code: "missing",
95
+ message: 'Field "RTBAttributes.BaseBidCPM" is recommended for ad group creation',
96
+ severity: "warning",
97
+ });
98
+ }
99
+ }
100
+ }
101
+ if (mode === "update") {
102
+ if (Object.keys(data).length === 0) {
103
+ issues.push({
104
+ field: "data",
105
+ code: "custom",
106
+ message: "Update payload must contain at least one field to update",
107
+ severity: "error",
108
+ });
109
+ }
110
+ issues.push(...checkReadOnlyFieldsStructured(data, READ_ONLY_FIELDS, (field) => `Field "${field}" is a system field and may be ignored by the API on update`));
111
+ }
112
+ const budgetObj = data.Budget;
113
+ if (budgetObj && typeof budgetObj === "object") {
114
+ const amount = budgetObj.Amount;
115
+ if (amount !== undefined && typeof amount === "number" && amount <= 0) {
116
+ issues.push({
117
+ field: "Budget.Amount",
118
+ code: "invalidValue",
119
+ message: 'Field "Budget.Amount" must be a positive number',
120
+ severity: "error",
121
+ });
122
+ }
123
+ }
124
+ for (const field of POSITIVE_NUMBER_FIELDS) {
125
+ const value = data[field];
126
+ if (value !== undefined && typeof value === "number" && value <= 0) {
127
+ issues.push({
128
+ field,
129
+ code: "invalidValue",
130
+ message: `Field "${field}" must be a positive number`,
131
+ severity: "error",
132
+ });
133
+ }
134
+ }
135
+ const errorIssues = issues.filter((i) => i.severity !== "warning");
136
+ let nextAction;
137
+ if (errorIssues.length > 0) {
138
+ const parentMissing = errorIssues.find((i) => ["AdvertiserId", "CampaignId", "AdGroupId", "PartnerId"].includes(i.field));
139
+ if (parentMissing) {
140
+ nextAction = buildNextAction({
141
+ kind: "list-entity",
142
+ tool: "ttd_list_entities",
143
+ field: parentMissing.field,
144
+ });
145
+ }
146
+ else {
147
+ nextAction = buildNextAction({
148
+ kind: "read-resource",
149
+ uri: `ttd-field-rules://${entityType}`,
150
+ purpose: `the ${entityType} required-field reference`,
151
+ });
152
+ }
153
+ }
154
+ return {
155
+ valid: errorIssues.length === 0,
156
+ entityType,
157
+ mode,
158
+ issues,
159
+ ...(nextAction ? { nextAction } : {}),
160
+ timestamp: new Date().toISOString(),
161
+ };
162
+ }
163
+ export const validateEntityTool = {
164
+ name: TOOL_NAME,
165
+ title: TOOL_TITLE,
166
+ description: TOOL_DESCRIPTION,
167
+ inputSchema: ValidateEntityInputSchema,
168
+ outputSchema: ValidateEntityOutputSchema,
169
+ annotations: {
170
+ readOnlyHint: true,
171
+ idempotentHint: true,
172
+ openWorldHint: false,
173
+ destructiveHint: false,
174
+ },
175
+ inputExamples: [
176
+ {
177
+ label: "Valid campaign create",
178
+ input: {
179
+ entityType: "campaign",
180
+ mode: "create",
181
+ data: {
182
+ AdvertiserId: "adv123abc",
183
+ CampaignName: "Q1 2025 Brand Awareness",
184
+ Budget: { Amount: 50000, CurrencyCode: "USD" },
185
+ StartDate: "2025-01-01T00:00:00Z",
186
+ EndDate: "2025-03-31T23:59:59Z",
187
+ PacingMode: "PaceAhead",
188
+ },
189
+ },
190
+ },
191
+ {
192
+ label: "Missing required fields (ad group)",
193
+ input: {
194
+ entityType: "adGroup",
195
+ mode: "create",
196
+ data: {
197
+ AdGroupName: "Prospecting - Display",
198
+ },
199
+ },
200
+ },
201
+ ],
202
+ logic: validateEntityLogic,
203
+ responseFormatter: validateEntityResponseFormatter,
204
+ };
205
+ //# 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,18 @@
1
+ export type TtdEntityType = "advertiser" | "campaign" | "adGroup" | "creative" | "conversionTracker";
2
+ export type BulkSupportedEntityType = "campaign" | "adGroup";
3
+ export interface TtdEntityConfig {
4
+ apiPath: string;
5
+ queryPath: string;
6
+ parentIds: ParentIdKey[];
7
+ idField: string;
8
+ supportsBulk?: boolean;
9
+ supportsArchive?: boolean;
10
+ }
11
+ export type ParentIdKey = "advertiserId" | "campaignId" | "adGroupId" | "partnerId";
12
+ export declare function getEntityConfig(entityType: TtdEntityType): TtdEntityConfig;
13
+ export declare function getSupportedEntityTypes(): TtdEntityType[];
14
+ export declare function getEntityTypeEnum(): [string, ...string[]];
15
+ export declare function getBulkSupportedEntityTypes(): BulkSupportedEntityType[];
16
+ export declare function getBulkEntityTypeEnum(): [string, ...string[]];
17
+ export declare function getArchiveSupportedEntityTypes(): TtdEntityType[];
18
+ //# 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":"AAmBA,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,UAAU,GACV,SAAS,GACT,UAAU,GACV,mBAAmB,CAAC;AAGxB,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAuCpF,wBAAgB,eAAe,CAAC,UAAU,EAAE,aAAa,GAAG,eAAe,CAM1E;AAED,wBAAgB,uBAAuB,IAAI,aAAa,EAAE,CAEzD;AAED,wBAAgB,iBAAiB,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAGzD;AAED,wBAAgB,2BAA2B,IAAI,uBAAuB,EAAE,CAIvE;AAED,wBAAgB,qBAAqB,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAG7D;AAED,wBAAgB,8BAA8B,IAAI,aAAa,EAAE,CAIhE"}