@cesteral/tiktok-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 (267) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +347 -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/tiktok-auth-adapter.d.ts +40 -0
  8. package/dist/auth/tiktok-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/tiktok-auth-adapter.js +126 -0
  10. package/dist/auth/tiktok-auth-adapter.js.map +1 -0
  11. package/dist/auth/tiktok-auth-strategy.d.ts +14 -0
  12. package/dist/auth/tiktok-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/tiktok-auth-strategy.js +54 -0
  14. package/dist/auth/tiktok-auth-strategy.js.map +1 -0
  15. package/dist/config/index.d.ts +120 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +55 -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 +47 -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 +104 -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 +121 -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 +198 -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 +189 -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 +200 -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 +93 -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 +182 -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 +147 -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 +135 -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 +8 -0
  84. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/index.js +79 -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 +165 -0
  90. package/dist/mcp-server/resources/definitions/reporting-reference.resource.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts +3 -0
  92. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/targeting-reference.resource.js +134 -0
  94. package/dist/mcp-server/resources/definitions/targeting-reference.resource.js.map +1 -0
  95. package/dist/mcp-server/resources/index.d.ts +3 -0
  96. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  97. package/dist/mcp-server/resources/index.js +2 -0
  98. package/dist/mcp-server/resources/index.js.map +1 -0
  99. package/dist/mcp-server/resources/types.d.ts +8 -0
  100. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  101. package/dist/mcp-server/resources/types.js +2 -0
  102. package/dist/mcp-server/resources/types.js.map +1 -0
  103. package/dist/mcp-server/server.d.ts +5 -0
  104. package/dist/mcp-server/server.d.ts.map +1 -0
  105. package/dist/mcp-server/server.js +134 -0
  106. package/dist/mcp-server/server.js.map +1 -0
  107. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +209 -0
  108. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  109. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +141 -0
  110. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  111. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +151 -0
  112. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  113. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +112 -0
  114. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +193 -0
  116. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +130 -0
  118. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +153 -0
  120. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +137 -0
  122. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +119 -0
  124. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/check-report-status.tool.js +89 -0
  126. package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +115 -0
  128. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/create-entity.tool.js +103 -0
  130. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +100 -0
  132. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +110 -0
  134. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
  136. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/download-report.tool.js +105 -0
  138. package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts +105 -0
  140. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js +85 -0
  142. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +89 -0
  144. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +74 -0
  146. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts +89 -0
  148. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js +83 -0
  150. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts +85 -0
  152. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js +88 -0
  154. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +76 -0
  156. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/get-entity.tool.js +71 -0
  158. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts +295 -0
  160. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js +174 -0
  162. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +303 -0
  164. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/get-report.tool.js +178 -0
  166. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +127 -0
  168. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +120 -0
  170. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/index.d.ts +26 -0
  172. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/index.js +78 -0
  174. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts +54 -0
  176. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js +58 -0
  178. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +167 -0
  180. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/list-entities.tool.js +114 -0
  182. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +131 -0
  184. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/search-targeting.tool.js +123 -0
  186. package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +153 -0
  188. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/submit-report.tool.js +117 -0
  190. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +111 -0
  192. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/definitions/update-entity.tool.js +89 -0
  194. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  195. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts +87 -0
  196. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/definitions/upload-image.tool.js +82 -0
  198. package/dist/mcp-server/tools/definitions/upload-image.tool.js.map +1 -0
  199. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts +88 -0
  200. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/definitions/upload-video.tool.js +113 -0
  202. package/dist/mcp-server/tools/definitions/upload-video.tool.js.map +1 -0
  203. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +197 -0
  204. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +237 -0
  206. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  207. package/dist/mcp-server/tools/index.d.ts +2 -0
  208. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/index.js +2 -0
  210. package/dist/mcp-server/tools/index.js.map +1 -0
  211. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +22 -0
  212. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  213. package/dist/mcp-server/tools/utils/entity-mapping.js +121 -0
  214. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  215. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  216. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  217. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  218. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  219. package/dist/mcp-server/transports/streamable-http-transport.d.ts +59 -0
  220. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  221. package/dist/mcp-server/transports/streamable-http-transport.js +107 -0
  222. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  223. package/dist/services/session-services.d.ts +21 -0
  224. package/dist/services/session-services.d.ts.map +1 -0
  225. package/dist/services/session-services.js +25 -0
  226. package/dist/services/session-services.js.map +1 -0
  227. package/dist/services/tiktok/tiktok-http-client.d.ts +19 -0
  228. package/dist/services/tiktok/tiktok-http-client.d.ts.map +1 -0
  229. package/dist/services/tiktok/tiktok-http-client.js +184 -0
  230. package/dist/services/tiktok/tiktok-http-client.js.map +1 -0
  231. package/dist/services/tiktok/tiktok-reporting-service.d.ts +62 -0
  232. package/dist/services/tiktok/tiktok-reporting-service.d.ts.map +1 -0
  233. package/dist/services/tiktok/tiktok-reporting-service.js +129 -0
  234. package/dist/services/tiktok/tiktok-reporting-service.js.map +1 -0
  235. package/dist/services/tiktok/tiktok-service.d.ts +86 -0
  236. package/dist/services/tiktok/tiktok-service.d.ts.map +1 -0
  237. package/dist/services/tiktok/tiktok-service.js +217 -0
  238. package/dist/services/tiktok/tiktok-service.js.map +1 -0
  239. package/dist/services/tiktok/types.d.ts +161 -0
  240. package/dist/services/tiktok/types.d.ts.map +1 -0
  241. package/dist/services/tiktok/types.js +31 -0
  242. package/dist/services/tiktok/types.js.map +1 -0
  243. package/dist/types-global/mcp.d.ts +2 -0
  244. package/dist/types-global/mcp.d.ts.map +1 -0
  245. package/dist/types-global/mcp.js +2 -0
  246. package/dist/types-global/mcp.js.map +1 -0
  247. package/dist/utils/errors/index.d.ts +2 -0
  248. package/dist/utils/errors/index.d.ts.map +1 -0
  249. package/dist/utils/errors/index.js +2 -0
  250. package/dist/utils/errors/index.js.map +1 -0
  251. package/dist/utils/platform.d.ts +3 -0
  252. package/dist/utils/platform.d.ts.map +1 -0
  253. package/dist/utils/platform.js +5 -0
  254. package/dist/utils/platform.js.map +1 -0
  255. package/dist/utils/security/rate-limiter.d.ts +3 -0
  256. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  257. package/dist/utils/security/rate-limiter.js +5 -0
  258. package/dist/utils/security/rate-limiter.js.map +1 -0
  259. package/dist/utils/telemetry/index.d.ts +2 -0
  260. package/dist/utils/telemetry/index.d.ts.map +1 -0
  261. package/dist/utils/telemetry/index.js +2 -0
  262. package/dist/utils/telemetry/index.js.map +1 -0
  263. package/dist/utils/telemetry/tracing.d.ts +3 -0
  264. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  265. package/dist/utils/telemetry/tracing.js +4 -0
  266. package/dist/utils/telemetry/tracing.js.map +1 -0
  267. package/package.json +55 -0
@@ -0,0 +1,170 @@
1
+ export const crossPlatformPerformancePrompt = {
2
+ name: "cross_platform_performance_comparison",
3
+ description: "Guide for comparing campaign performance across DV360 (via dbm-mcp), The Trade Desk (ttd-mcp), Google Ads (gads-mcp), and Meta Ads (meta-mcp). Normalizes metrics, identifies top performers, and recommends budget reallocation.",
4
+ arguments: [
5
+ {
6
+ name: "dateRange",
7
+ description: "Date range for comparison (e.g., LAST_7_DAYS, LAST_30_DAYS, or custom YYYY-MM-DD format)",
8
+ required: false,
9
+ },
10
+ ],
11
+ };
12
+ export function getCrossPlatformPerformanceMessage(args) {
13
+ const dateRange = args?.dateRange || "LAST_7_DAYS";
14
+ return `# Cross-Platform Performance Comparison
15
+
16
+ Date Range: \`${dateRange}\`
17
+
18
+ This workflow coordinates across multiple MCP servers to gather, normalize, and compare campaign performance. You must be connected to all relevant servers.
19
+
20
+ ---
21
+
22
+ ## Step 1: Gather Metrics from Each Platform
23
+
24
+ ### DV360 (via dbm-mcp)
25
+
26
+ \`\`\`json
27
+ {
28
+ "tool": "dbm_get_performance_metrics",
29
+ "params": {
30
+ "campaignId": "{dv360CampaignId}",
31
+ "advertiserId": "{dv360AdvertiserId}",
32
+ "dateRange": "${dateRange}"
33
+ }
34
+ }
35
+ \`\`\`
36
+
37
+ Key metrics returned: impressions, clicks, spend, CPM, CTR, CPA, ROAS.
38
+
39
+ ### The Trade Desk (via ttd-mcp)
40
+
41
+ \`\`\`json
42
+ {
43
+ "tool": "ttd_get_report",
44
+ "params": {
45
+ "reportName": "Cross-Platform Comparison",
46
+ "dateRange": "${dateRange}",
47
+ "dimensions": ["CampaignId", "CampaignName"],
48
+ "metrics": ["Impressions", "Clicks", "TotalCostAdvertiserCurrency", "Conversions", "Revenue"],
49
+ "advertiserIds": ["{ttdAdvertiserId}"]
50
+ }
51
+ }
52
+ \`\`\`
53
+
54
+ ### Google Ads (via gads-mcp)
55
+
56
+ \`\`\`json
57
+ {
58
+ "tool": "gads_get_insights",
59
+ "params": {
60
+ "customerId": "{gadsCustomerId}",
61
+ "entityType": "campaign",
62
+ "dateRange": "${dateRange}"
63
+ }
64
+ }
65
+ \`\`\`
66
+
67
+ ### Meta Ads (via meta-mcp)
68
+
69
+ \`\`\`json
70
+ {
71
+ "tool": "meta_get_insights",
72
+ "params": {
73
+ "entityId": "{metaCampaignId}",
74
+ "fields": ["impressions", "clicks", "spend", "cpm", "ctr", "cpc", "conversions", "cost_per_action_type"],
75
+ "datePreset": "last_7d"
76
+ }
77
+ }
78
+ \`\`\`
79
+
80
+ ---
81
+
82
+ ## Step 2: Normalize Metrics
83
+
84
+ Each platform reports metrics differently. Normalize to a common format:
85
+
86
+ | Metric | DV360 (dbm-mcp) | TTD (ttd-mcp) | Google Ads (gads-mcp) | Meta (meta-mcp) |
87
+ |--------|-----------------|---------------|----------------------|-----------------|
88
+ | **Spend** | USD (from report) | Advertiser currency | Micros (÷ 1,000,000) | Cents (÷ 100) |
89
+ | **CPM** | Calculated | Calculated | Micros (÷ 1,000,000) | Cents (÷ 100) |
90
+ | **CPC** | Calculated | Calculated | Micros (÷ 1,000,000) | Cents (÷ 100) |
91
+ | **CTR** | Ratio (0-1) | Ratio (0-1) | Ratio (0-1) | Percentage string |
92
+ | **Conversions** | Bid Manager metric | \`Conversions\` field | \`conversions\` metric | \`conversions\` field |
93
+
94
+ ### Normalization formulas:
95
+
96
+ - **Google Ads micros → USD**: Divide by 1,000,000
97
+ - **Meta cents → USD**: Divide by 100
98
+ - **Meta CTR string → number**: Parse "1.23%" to 0.0123
99
+ - **CPM**: (Spend / Impressions) × 1,000
100
+ - **CTR**: Clicks / Impressions
101
+ - **CPA**: Spend / Conversions
102
+ - **ROAS**: Revenue / Spend
103
+
104
+ ---
105
+
106
+ ## Step 3: Compare in Normalized Table
107
+
108
+ Present results in a unified format:
109
+
110
+ | Platform | Campaign | Impressions | Clicks | CTR | Spend (USD) | CPM (USD) | CPA (USD) | ROAS |
111
+ |----------|----------|-------------|--------|-----|-------------|-----------|-----------|------|
112
+ | DV360 | {name} | {n} | {n} | {%} | \${n} | \${n} | \${n} | {n}x |
113
+ | TTD | {name} | {n} | {n} | {%} | \${n} | \${n} | \${n} | {n}x |
114
+ | Google Ads | {name} | {n} | {n} | {%} | \${n} | \${n} | \${n} | {n}x |
115
+ | Meta | {name} | {n} | {n} | {%} | \${n} | \${n} | \${n} | {n}x |
116
+
117
+ ---
118
+
119
+ ## Step 4: Identify Winners and Losers
120
+
121
+ Rank platforms by key efficiency metrics:
122
+
123
+ ### By CPA (lower is better)
124
+ 1. Best CPA platform → candidate for budget increase
125
+ 2. Worst CPA platform → candidate for budget decrease or pause
126
+
127
+ ### By ROAS (higher is better)
128
+ 1. Best ROAS platform → highest return on investment
129
+ 2. Worst ROAS platform → losing money if < 1.0
130
+
131
+ ### By CPM (context-dependent)
132
+ - Low CPM + low CTR → cheap but ineffective (awareness only)
133
+ - High CPM + high CTR → expensive but effective (consider if CPA is good)
134
+
135
+ ---
136
+
137
+ ## Step 5: Recommend Budget Reallocation
138
+
139
+ Based on the comparison, suggest budget moves:
140
+
141
+ ### Conservative Approach (low risk)
142
+ - Shift 10-15% of budget from worst performer to best performer
143
+ - Monitor for 1 week before making further changes
144
+
145
+ ### Aggressive Approach (high confidence)
146
+ - Shift 25-30% of budget from worst performer to best performer
147
+ - Pause campaigns on platforms with ROAS < 0.5
148
+
149
+ ### Execution
150
+
151
+ For each platform where budget changes are needed:
152
+
153
+ - **DV360**: Use \`dv360_update_entity\` (via dv360-mcp) to adjust IO/Line Item budgets
154
+ - **TTD**: Use \`ttd_update_entity\` (via ttd-mcp) to adjust campaign/ad group budgets
155
+ - **Google Ads**: Use \`gads_update_entity\` (via gads-mcp) to adjust campaign budgets
156
+ - **Meta**: Use \`meta_update_entity\` (via meta-mcp) to adjust campaign/ad set budgets
157
+
158
+ ---
159
+
160
+ ## Gotchas
161
+
162
+ - **Date ranges differ by platform**: DV360 uses Bid Manager presets (LAST_7_DAYS), TTD uses date strings, Google Ads uses date ranges in GAQL, Meta uses datePreset or timeRange. Align dates carefully.
163
+ - **Currency differences**: Ensure all platforms report in the same currency before comparing. TTD reports in advertiser currency, others in USD by default.
164
+ - **Attribution models differ**: Each platform attributes conversions differently. Cross-platform CPA comparisons are directional, not exact.
165
+ - **Data freshness varies**: Meta has up to 48-hour lag. DV360 reports are async. TTD and Google Ads are near-real-time. Compare data from the same time window.
166
+ - **Impression counting differs**: Viewability standards vary by platform. CPM comparisons should account for this.
167
+ - **Not all campaigns are comparable**: Only compare campaigns targeting similar audiences, geos, and objectives. A brand awareness campaign on DV360 shouldn't be compared with a direct response campaign on Google Ads.
168
+ `;
169
+ }
170
+ //# sourceMappingURL=cross-platform-performance.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-platform-performance.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/cross-platform-performance.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,8BAA8B,GAAW;IACpD,IAAI,EAAE,uCAAuC;IAC7C,WAAW,EACT,mOAAmO;IACrO,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,0FAA0F;YAC5F,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,kCAAkC,CAAC,IAA6B;IAC9E,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,aAAa,CAAC;IAEnD,OAAO;;gBAEO,SAAS;;;;;;;;;;;;;;;;oBAgBL,SAAS;;;;;;;;;;;;;;oBAcT,SAAS;;;;;;;;;;;;;;;;oBAgBT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0G5B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const tiktokEntityDuplicationWorkflowPrompt: Prompt;
3
+ export declare function getTiktokEntityDuplicationWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=entity-duplication-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-duplication-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAQjE,eAAO,MAAM,qCAAqC,EAAE,MAqBnD,CAAC;AAEF,wBAAgB,yCAAyC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAgL/F"}
@@ -0,0 +1,198 @@
1
+ export const tiktokEntityDuplicationWorkflowPrompt = {
2
+ name: "tiktok_entity_duplication_workflow",
3
+ description: "Step-by-step guide for duplicating TikTok Ads campaigns, ad groups, and ads using tiktok_duplicate_entity — covers A/B testing, scaling, and common patterns.",
4
+ arguments: [
5
+ {
6
+ name: "entityType",
7
+ description: "Entity type to duplicate: campaign, adGroup, or ad",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "entityId",
12
+ description: "Numeric ID of the entity to duplicate",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "advertiserId",
17
+ description: "TikTok Advertiser ID",
18
+ required: true,
19
+ },
20
+ ],
21
+ };
22
+ export function getTiktokEntityDuplicationWorkflowMessage(args) {
23
+ const entityType = args?.entityType || "{entityType}";
24
+ const entityId = args?.entityId || "{entityId}";
25
+ const advertiserId = args?.advertiserId || "{advertiserId}";
26
+ return `# TikTok Entity Duplication Workflow
27
+
28
+ Entity Type: \`${entityType}\`
29
+ Entity ID: \`${entityId}\`
30
+ Advertiser ID: \`${advertiserId}\`
31
+
32
+ ---
33
+
34
+ ## Overview
35
+
36
+ \`tiktok_duplicate_entity\` creates a copy of a campaign, ad group, or ad with all settings preserved.
37
+
38
+ | What Gets Copied | Details |
39
+ |------------------|---------|
40
+ | **Campaign** | Structure, budget mode, objective |
41
+ | **Ad Group** | Targeting, bid, schedule, budget |
42
+ | **Ad** | Creative reference, copy, CTA, landing page |
43
+
44
+ ---
45
+
46
+ ## Step 1: Review the Source Entity
47
+
48
+ Before duplicating, inspect the entity you're copying:
49
+
50
+ \`\`\`json
51
+ {
52
+ "tool": "tiktok_get_entity",
53
+ "params": {
54
+ "entityType": "${entityType}",
55
+ "advertiserId": "${advertiserId}",
56
+ "entityId": "${entityId}"
57
+ }
58
+ }
59
+ \`\`\`
60
+
61
+ Confirm this is the right entity and note its current state.
62
+
63
+ ---
64
+
65
+ ## Step 2: Duplicate the Entity
66
+
67
+ \`\`\`json
68
+ {
69
+ "tool": "tiktok_duplicate_entity",
70
+ "params": {
71
+ "entityType": "${entityType}",
72
+ "advertiserId": "${advertiserId}",
73
+ "entityId": "${entityId}",
74
+ "options": {
75
+ "newName": "Copy of ${entityType} ${entityId}"
76
+ }
77
+ }
78
+ }
79
+ \`\`\`
80
+
81
+ The response includes the new entity ID.
82
+
83
+ ⚠️ **GOTCHA**: Duplicated entities are created in **DISABLE** status by default. Enable only after review.
84
+
85
+ ---
86
+
87
+ ## Step 3: Customize the Copy
88
+
89
+ Use the returned entity ID to modify the copy:
90
+
91
+ ### Update Name and Budget
92
+
93
+ \`\`\`json
94
+ {
95
+ "tool": "tiktok_update_entity",
96
+ "params": {
97
+ "entityType": "${entityType}",
98
+ "advertiserId": "${advertiserId}",
99
+ "entityId": "{newEntityId}",
100
+ "data": {
101
+ "campaign_name": "Campaign B - Broad Targeting Test",
102
+ "budget": 150
103
+ }
104
+ }
105
+ }
106
+ \`\`\`
107
+
108
+ ### Update Targeting (Ad Group)
109
+
110
+ \`\`\`json
111
+ {
112
+ "tool": "tiktok_update_entity",
113
+ "params": {
114
+ "entityType": "adGroup",
115
+ "advertiserId": "${advertiserId}",
116
+ "entityId": "{newAdGroupId}",
117
+ "data": {
118
+ "age": ["AGE_35_44", "AGE_45_54"],
119
+ "gender": ["GENDER_FEMALE"],
120
+ "location_ids": ["GB", "CA"]
121
+ }
122
+ }
123
+ }
124
+ \`\`\`
125
+
126
+ ⚠️ **GOTCHA**: Budget values are in **account currency** — \`budget: 150\` means $150.00.
127
+
128
+ ---
129
+
130
+ ## Step 4: Activate When Ready
131
+
132
+ After reviewing and customizing the copy:
133
+
134
+ \`\`\`json
135
+ {
136
+ "tool": "tiktok_bulk_update_status",
137
+ "params": {
138
+ "entityType": "${entityType}",
139
+ "advertiserId": "${advertiserId}",
140
+ "entityIds": ["{newEntityId}"],
141
+ "operationStatus": "ENABLE"
142
+ }
143
+ }
144
+ \`\`\`
145
+
146
+ ---
147
+
148
+ ## Common Patterns
149
+
150
+ ### A/B Testing
151
+
152
+ 1. Duplicate the ad group
153
+ 2. Change targeting or bid on the copy
154
+ 3. Enable both and compare via \`tiktok_get_report\`
155
+
156
+ ### Scaling to New Geos
157
+
158
+ 1. Duplicate a proven ad group
159
+ 2. Update \`location_ids\` on the copy
160
+ 3. Adjust budget for the new market
161
+ 4. Enable
162
+
163
+ ### Creative Testing
164
+
165
+ 1. Duplicate an ad
166
+ 2. Update \`ad_text\` or CTA on the copy
167
+ 3. Run both ads in the same ad group
168
+
169
+ ⚠️ **GOTCHA**: Video IDs are immutable — you cannot change the video on an existing ad. Create a new ad instead of duplicating if you want different video creative.
170
+
171
+ ---
172
+
173
+ ## Verification
174
+
175
+ After duplication, verify the copy:
176
+
177
+ \`\`\`json
178
+ {
179
+ "tool": "tiktok_get_entity",
180
+ "params": {
181
+ "entityType": "${entityType}",
182
+ "advertiserId": "${advertiserId}",
183
+ "entityId": "{newEntityId}"
184
+ }
185
+ }
186
+ \`\`\`
187
+
188
+ ## Success Criteria
189
+
190
+ - [ ] Source entity reviewed before duplication
191
+ - [ ] Copy created (check DISABLE status)
192
+ - [ ] Copy renamed to distinguish from original
193
+ - [ ] Desired changes applied (targeting, budget, creative)
194
+ - [ ] Copy verified via \`tiktok_get_entity\`
195
+ - [ ] Enabled only after review via \`tiktok_bulk_update_status\`
196
+ `;
197
+ }
198
+ //# sourceMappingURL=entity-duplication-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-duplication-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,qCAAqC,GAAW;IAC3D,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EACT,+JAA+J;IACjK,SAAS,EAAE;QACT;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC;AAEF,MAAM,UAAU,yCAAyC,CAAC,IAA6B;IACrF,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,YAAY,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,gBAAgB,CAAC;IAE5D,OAAO;;iBAEQ,UAAU;eACZ,QAAQ;mBACJ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;qBAwBV,UAAU;uBACR,YAAY;mBAChB,QAAQ;;;;;;;;;;;;;;;qBAeN,UAAU;uBACR,YAAY;mBAChB,QAAQ;;4BAEC,UAAU,IAAI,QAAQ;;;;;;;;;;;;;;;;;;;;;;qBAsB7B,UAAU;uBACR,YAAY;;;;;;;;;;;;;;;;;uBAiBZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;qBAuBd,UAAU;uBACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA0Cd,UAAU;uBACR,YAAY;;;;;;;;;;;;;;CAclC,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const tiktokEntityUpdateWorkflowPrompt: Prompt;
3
+ export declare function getTiktokEntityUpdateWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=entity-update-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-update-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/entity-update-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AASjE,eAAO,MAAM,gCAAgC,EAAE,MAqB9C,CAAC;AAEF,wBAAgB,oCAAoC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAuK1F"}
@@ -0,0 +1,189 @@
1
+ export const tiktokEntityUpdateWorkflowPrompt = {
2
+ name: "tiktok_entity_update_workflow",
3
+ description: "Step-by-step guide for safely updating TikTok Ads entities — covers field updates vs status changes (separate endpoints), budget values in account currency, and verification.",
4
+ arguments: [
5
+ {
6
+ name: "entityType",
7
+ description: "Entity type to update: campaign, adGroup, or ad",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "entityId",
12
+ description: "Numeric ID of the entity to update",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "advertiserId",
17
+ description: "TikTok Advertiser ID",
18
+ required: true,
19
+ },
20
+ ],
21
+ };
22
+ export function getTiktokEntityUpdateWorkflowMessage(args) {
23
+ const entityType = args?.entityType || "{entityType}";
24
+ const entityId = args?.entityId || "{entityId}";
25
+ const advertiserId = args?.advertiserId || "{advertiserId}";
26
+ return `# TikTok Ads Entity Update Workflow
27
+
28
+ Entity Type: \`${entityType}\`
29
+ Entity ID: \`${entityId}\`
30
+ Advertiser ID: \`${advertiserId}\`
31
+
32
+ ---
33
+
34
+ ## Step 1: Fetch Current State
35
+
36
+ Before updating, always read the entity's current configuration:
37
+
38
+ \`\`\`json
39
+ {
40
+ "tool": "tiktok_get_entity",
41
+ "params": {
42
+ "entityType": "${entityType}",
43
+ "advertiserId": "${advertiserId}",
44
+ "entityId": "${entityId}"
45
+ }
46
+ }
47
+ \`\`\`
48
+
49
+ Review the current values. Save the current state for rollback reference.
50
+
51
+ **Resource reference:** Fetch \`entity-schema://tiktok/${entityType}\` for the full field schema and \`entity-examples://tiktok/${entityType}\` for common update patterns.
52
+
53
+ ---
54
+
55
+ ## Step 2: Update Entity Fields
56
+
57
+ Use \`tiktok_update_entity\` for **field changes** (name, budget, bid, targeting):
58
+
59
+ ### Campaign Updates
60
+
61
+ \`\`\`json
62
+ {
63
+ "tool": "tiktok_update_entity",
64
+ "params": {
65
+ "entityType": "campaign",
66
+ "advertiserId": "${advertiserId}",
67
+ "entityId": "${entityId}",
68
+ "data": {
69
+ "campaign_name": "Updated Campaign Name",
70
+ "budget": 200,
71
+ "budget_mode": "BUDGET_MODE_DAY"
72
+ }
73
+ }
74
+ }
75
+ \`\`\`
76
+
77
+ ### Ad Group Updates
78
+
79
+ \`\`\`json
80
+ {
81
+ "tool": "tiktok_update_entity",
82
+ "params": {
83
+ "entityType": "adGroup",
84
+ "advertiserId": "${advertiserId}",
85
+ "entityId": "${entityId}",
86
+ "data": {
87
+ "adgroup_name": "Updated Ad Group",
88
+ "budget": 100,
89
+ "bid_price": 0.8,
90
+ "age": ["AGE_25_34", "AGE_35_44"],
91
+ "gender": ["GENDER_UNLIMITED"],
92
+ "location_ids": ["US", "GB"]
93
+ }
94
+ }
95
+ }
96
+ \`\`\`
97
+
98
+ ### Ad Updates
99
+
100
+ \`\`\`json
101
+ {
102
+ "tool": "tiktok_update_entity",
103
+ "params": {
104
+ "entityType": "ad",
105
+ "advertiserId": "${advertiserId}",
106
+ "entityId": "${entityId}",
107
+ "data": {
108
+ "ad_name": "Updated Ad Name",
109
+ "ad_text": "New ad copy (max 100 chars)",
110
+ "call_to_action": "SHOP_NOW",
111
+ "landing_page_url": "https://example.com/new-page"
112
+ }
113
+ }
114
+ }
115
+ \`\`\`
116
+
117
+ ---
118
+
119
+ ## Step 3: Update Status (Separate Endpoint)
120
+
121
+ ⚠️ **CRITICAL GOTCHA**: TikTok uses a **separate endpoint** for status changes. Do NOT include \`operation_status\` in \`tiktok_update_entity\` — it won't work.
122
+
123
+ Use \`tiktok_bulk_update_status\` for all status changes:
124
+
125
+ \`\`\`json
126
+ {
127
+ "tool": "tiktok_bulk_update_status",
128
+ "params": {
129
+ "entityType": "${entityType}",
130
+ "advertiserId": "${advertiserId}",
131
+ "entityIds": ["${entityId}"],
132
+ "operationStatus": "ENABLE"
133
+ }
134
+ }
135
+ \`\`\`
136
+
137
+ Valid status values: \`"ENABLE"\`, \`"DISABLE"\`, \`"DELETE"\`
138
+
139
+ ---
140
+
141
+ ## Step 4: Verify Changes
142
+
143
+ After the update call succeeds, verify the changes:
144
+
145
+ \`\`\`json
146
+ {
147
+ "tool": "tiktok_get_entity",
148
+ "params": {
149
+ "entityType": "${entityType}",
150
+ "advertiserId": "${advertiserId}",
151
+ "entityId": "${entityId}"
152
+ }
153
+ }
154
+ \`\`\`
155
+
156
+ ---
157
+
158
+ ## Gotchas
159
+
160
+ - **Status changes use a different tool**: Never use \`tiktok_update_entity\` for enabling/disabling entities — use \`tiktok_bulk_update_status\`.
161
+ - **Budget values are in account currency**: \`budget: 100\` means $100.00 (not cents, not micros).
162
+ - **Targeting replaces on ad group**: When updating targeting fields on an ad group, include all targeting you want to keep.
163
+ - **Video IDs are immutable**: You cannot change the video on an existing ad. Delete and recreate instead.
164
+ - **Ad review re-triggered**: Updating ad copy or creative may trigger a new review cycle (24-48h).
165
+
166
+ ---
167
+
168
+ ## Rollback
169
+
170
+ If an update causes issues, reverse it by sending the original values:
171
+
172
+ \`\`\`json
173
+ {
174
+ "tool": "tiktok_update_entity",
175
+ "params": {
176
+ "entityType": "${entityType}",
177
+ "advertiserId": "${advertiserId}",
178
+ "entityId": "${entityId}",
179
+ "data": {
180
+ "field_that_was_changed": "{original_value}"
181
+ }
182
+ }
183
+ }
184
+ \`\`\`
185
+
186
+ Report the rollback hint (original values) whenever you make a change so the user can revert if needed.
187
+ `;
188
+ }
189
+ //# sourceMappingURL=entity-update-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-update-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/entity-update-workflow.prompt.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,gCAAgC,GAAW;IACtD,IAAI,EAAE,+BAA+B;IACrC,WAAW,EACT,gLAAgL;IAClL,SAAS,EAAE;QACT;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,iDAAiD;YAC9D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC;AAEF,MAAM,UAAU,oCAAoC,CAAC,IAA6B;IAChF,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,YAAY,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,gBAAgB,CAAC;IAE5D,OAAO;;iBAEQ,UAAU;eACZ,QAAQ;mBACJ,YAAY;;;;;;;;;;;;qBAYV,UAAU;uBACR,YAAY;mBAChB,QAAQ;;;;;;;yDAO8B,UAAU,+DAA+D,UAAU;;;;;;;;;;;;;;;uBAerH,YAAY;mBAChB,QAAQ;;;;;;;;;;;;;;;;;uBAiBJ,YAAY;mBAChB,QAAQ;;;;;;;;;;;;;;;;;;;;uBAoBJ,YAAY;mBAChB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;qBAuBN,UAAU;uBACR,YAAY;qBACd,QAAQ;;;;;;;;;;;;;;;;;;qBAkBR,UAAU;uBACR,YAAY;mBAChB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;qBAyBN,UAAU;uBACR,YAAY;mBAChB,QAAQ;;;;;;;;;CAS1B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const tiktokReportingWorkflowPrompt: Prompt;
3
+ export declare function getTiktokReportingWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=reporting-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/reporting-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,6BAA6B,EAAE,MAgB3C,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA6GvF"}