@cesteral/dbm-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +197 -0
  3. package/dist/config/index.d.ts +112 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +55 -0
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/generated/compatibility-rules.d.ts +26 -0
  8. package/dist/generated/compatibility-rules.d.ts.map +1 -0
  9. package/dist/generated/compatibility-rules.js +142 -0
  10. package/dist/generated/compatibility-rules.js.map +1 -0
  11. package/dist/generated/filters.d.ts +19 -0
  12. package/dist/generated/filters.d.ts.map +1 -0
  13. package/dist/generated/filters.js +2541 -0
  14. package/dist/generated/filters.js.map +1 -0
  15. package/dist/generated/index.d.ts +5 -0
  16. package/dist/generated/index.d.ts.map +1 -0
  17. package/dist/generated/index.js +5 -0
  18. package/dist/generated/index.js.map +1 -0
  19. package/dist/generated/metrics.d.ts +28 -0
  20. package/dist/generated/metrics.d.ts.map +1 -0
  21. package/dist/generated/metrics.js +961 -0
  22. package/dist/generated/metrics.js.map +1 -0
  23. package/dist/generated/report-types.d.ts +14 -0
  24. package/dist/generated/report-types.d.ts.map +1 -0
  25. package/dist/generated/report-types.js +94 -0
  26. package/dist/generated/report-types.js.map +1 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +51 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  34. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  38. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js +164 -0
  42. package/dist/mcp-server/prompts/definitions/custom-query-workflow.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js +204 -0
  46. package/dist/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +66 -0
  50. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js +179 -0
  54. package/dist/mcp-server/prompts/definitions/troubleshoot-report.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/types.d.ts +15 -0
  56. package/dist/mcp-server/prompts/definitions/types.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/types.js +2 -0
  58. package/dist/mcp-server/prompts/definitions/types.js.map +1 -0
  59. package/dist/mcp-server/prompts/index.d.ts +6 -0
  60. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/index.js +57 -0
  62. package/dist/mcp-server/prompts/index.js.map +1 -0
  63. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts +3 -0
  64. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.d.ts.map +1 -0
  65. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js +130 -0
  66. package/dist/mcp-server/resources/definitions/compatibility-rules.resource.js.map +1 -0
  67. package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts +4 -0
  68. package/dist/mcp-server/resources/definitions/filter-types.resource.d.ts.map +1 -0
  69. package/dist/mcp-server/resources/definitions/filter-types.resource.js +198 -0
  70. package/dist/mcp-server/resources/definitions/filter-types.resource.js.map +1 -0
  71. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  72. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/definitions/index.js +49 -0
  74. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  75. package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts +4 -0
  76. package/dist/mcp-server/resources/definitions/metric-types.resource.d.ts.map +1 -0
  77. package/dist/mcp-server/resources/definitions/metric-types.resource.js +221 -0
  78. package/dist/mcp-server/resources/definitions/metric-types.resource.js.map +1 -0
  79. package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts +169 -0
  80. package/dist/mcp-server/resources/definitions/query-examples.resource.d.ts.map +1 -0
  81. package/dist/mcp-server/resources/definitions/query-examples.resource.js +261 -0
  82. package/dist/mcp-server/resources/definitions/query-examples.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/report-types.resource.d.ts +3 -0
  84. package/dist/mcp-server/resources/definitions/report-types.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/report-types.resource.js +198 -0
  86. package/dist/mcp-server/resources/definitions/report-types.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/index.d.ts +3 -0
  88. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/index.js +2 -0
  90. package/dist/mcp-server/resources/index.js.map +1 -0
  91. package/dist/mcp-server/resources/types.d.ts +16 -0
  92. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/types.js +2 -0
  94. package/dist/mcp-server/resources/types.js.map +1 -0
  95. package/dist/mcp-server/server.d.ts +5 -0
  96. package/dist/mcp-server/server.d.ts.map +1 -0
  97. package/dist/mcp-server/server.js +115 -0
  98. package/dist/mcp-server/server.js.map +1 -0
  99. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts +89 -0
  100. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.d.ts.map +1 -0
  101. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js +128 -0
  102. package/dist/mcp-server/tools/definitions/get-campaign-delivery.tool.js.map +1 -0
  103. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts +155 -0
  104. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.d.ts.map +1 -0
  105. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js +160 -0
  106. package/dist/mcp-server/tools/definitions/get-historical-metrics.tool.js.map +1 -0
  107. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +138 -0
  108. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
  109. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +171 -0
  110. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
  111. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts +122 -0
  112. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.d.ts.map +1 -0
  113. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js +143 -0
  114. package/dist/mcp-server/tools/definitions/get-performance-metrics.tool.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/index.d.ts +8 -0
  116. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/index.js +23 -0
  118. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts +4 -0
  120. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js +46 -0
  122. package/dist/mcp-server/tools/definitions/run-custom-query-async.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts +186 -0
  124. package/dist/mcp-server/tools/definitions/run-custom-query.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/run-custom-query.tool.js +202 -0
  126. package/dist/mcp-server/tools/definitions/run-custom-query.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/index.d.ts +2 -0
  128. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/index.js +2 -0
  130. package/dist/mcp-server/tools/index.js.map +1 -0
  131. package/dist/mcp-server/tools/utils/query-validation.d.ts +44 -0
  132. package/dist/mcp-server/tools/utils/query-validation.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/utils/query-validation.js +107 -0
  134. package/dist/mcp-server/tools/utils/query-validation.js.map +1 -0
  135. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  136. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  138. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  139. package/dist/mcp-server/transports/streamable-http-transport.d.ts +55 -0
  140. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  141. package/dist/mcp-server/transports/streamable-http-transport.js +55 -0
  142. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  143. package/dist/services/bid-manager/BidManagerService.d.ts +68 -0
  144. package/dist/services/bid-manager/BidManagerService.d.ts.map +1 -0
  145. package/dist/services/bid-manager/BidManagerService.js +464 -0
  146. package/dist/services/bid-manager/BidManagerService.js.map +1 -0
  147. package/dist/services/bid-manager/auth-bridge.d.ts +6 -0
  148. package/dist/services/bid-manager/auth-bridge.d.ts.map +1 -0
  149. package/dist/services/bid-manager/auth-bridge.js +13 -0
  150. package/dist/services/bid-manager/auth-bridge.js.map +1 -0
  151. package/dist/services/bid-manager/client.d.ts +4 -0
  152. package/dist/services/bid-manager/client.d.ts.map +1 -0
  153. package/dist/services/bid-manager/client.js +2 -0
  154. package/dist/services/bid-manager/client.js.map +1 -0
  155. package/dist/services/bid-manager/index.d.ts +6 -0
  156. package/dist/services/bid-manager/index.d.ts.map +1 -0
  157. package/dist/services/bid-manager/index.js +4 -0
  158. package/dist/services/bid-manager/index.js.map +1 -0
  159. package/dist/services/bid-manager/report-parser.d.ts +26 -0
  160. package/dist/services/bid-manager/report-parser.d.ts.map +1 -0
  161. package/dist/services/bid-manager/report-parser.js +141 -0
  162. package/dist/services/bid-manager/report-parser.js.map +1 -0
  163. package/dist/services/bid-manager/types.d.ts +668 -0
  164. package/dist/services/bid-manager/types.d.ts.map +1 -0
  165. package/dist/services/bid-manager/types.js +256 -0
  166. package/dist/services/bid-manager/types.js.map +1 -0
  167. package/dist/services/session-services.d.ts +12 -0
  168. package/dist/services/session-services.d.ts.map +1 -0
  169. package/dist/services/session-services.js +18 -0
  170. package/dist/services/session-services.js.map +1 -0
  171. package/dist/types-global/bid-manager.d.ts +76 -0
  172. package/dist/types-global/bid-manager.d.ts.map +1 -0
  173. package/dist/types-global/bid-manager.js +2 -0
  174. package/dist/types-global/bid-manager.js.map +1 -0
  175. package/dist/types-global/index.d.ts +2 -0
  176. package/dist/types-global/index.d.ts.map +1 -0
  177. package/dist/types-global/index.js +2 -0
  178. package/dist/types-global/index.js.map +1 -0
  179. package/dist/types-global/mcp.d.ts +2 -0
  180. package/dist/types-global/mcp.d.ts.map +1 -0
  181. package/dist/types-global/mcp.js +2 -0
  182. package/dist/types-global/mcp.js.map +1 -0
  183. package/dist/utils/date.d.ts +2 -0
  184. package/dist/utils/date.d.ts.map +1 -0
  185. package/dist/utils/date.js +7 -0
  186. package/dist/utils/date.js.map +1 -0
  187. package/dist/utils/errors/bid-manager-errors.d.ts +57 -0
  188. package/dist/utils/errors/bid-manager-errors.d.ts.map +1 -0
  189. package/dist/utils/errors/bid-manager-errors.js +119 -0
  190. package/dist/utils/errors/bid-manager-errors.js.map +1 -0
  191. package/dist/utils/errors/index.d.ts +3 -0
  192. package/dist/utils/errors/index.d.ts.map +1 -0
  193. package/dist/utils/errors/index.js +3 -0
  194. package/dist/utils/errors/index.js.map +1 -0
  195. package/dist/utils/index.d.ts +4 -0
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/index.js +4 -0
  198. package/dist/utils/index.js.map +1 -0
  199. package/dist/utils/math.d.ts +9 -0
  200. package/dist/utils/math.d.ts.map +1 -0
  201. package/dist/utils/math.js +38 -0
  202. package/dist/utils/math.js.map +1 -0
  203. package/dist/utils/metrics.d.ts +21 -0
  204. package/dist/utils/metrics.d.ts.map +1 -0
  205. package/dist/utils/metrics.js +92 -0
  206. package/dist/utils/metrics.js.map +1 -0
  207. package/dist/utils/platform.d.ts +3 -0
  208. package/dist/utils/platform.d.ts.map +1 -0
  209. package/dist/utils/platform.js +5 -0
  210. package/dist/utils/platform.js.map +1 -0
  211. package/dist/utils/security/index.d.ts +2 -0
  212. package/dist/utils/security/index.d.ts.map +1 -0
  213. package/dist/utils/security/index.js +2 -0
  214. package/dist/utils/security/index.js.map +1 -0
  215. package/dist/utils/security/rate-limiter.d.ts +3 -0
  216. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  217. package/dist/utils/security/rate-limiter.js +5 -0
  218. package/dist/utils/security/rate-limiter.js.map +1 -0
  219. package/dist/utils/telemetry/index.d.ts +2 -0
  220. package/dist/utils/telemetry/index.d.ts.map +1 -0
  221. package/dist/utils/telemetry/index.js +2 -0
  222. package/dist/utils/telemetry/index.js.map +1 -0
  223. package/dist/utils/telemetry/tracing.d.ts +3 -0
  224. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  225. package/dist/utils/telemetry/tracing.js +4 -0
  226. package/dist/utils/telemetry/tracing.js.map +1 -0
  227. package/package.json +60 -0
@@ -0,0 +1,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 "./types.js";
2
+ export declare const customQueryWorkflowPrompt: Prompt;
3
+ export declare function getCustomQueryWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=custom-query-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-query-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/custom-query-workflow.prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,yBAAyB,EAAE,MAiBvC,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAmJnF"}
@@ -0,0 +1,164 @@
1
+ export const customQueryWorkflowPrompt = {
2
+ name: "custom_query_workflow",
3
+ description: "Step-by-step guide for building custom Bid Manager queries with the dbm_run_custom_query tool",
4
+ arguments: [
5
+ {
6
+ name: "advertiserId",
7
+ description: "DV360 Advertiser ID to query",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "queryGoal",
12
+ description: "What you want to analyze (e.g., 'campaign performance', 'device breakdown', 'video metrics')",
13
+ required: false,
14
+ },
15
+ ],
16
+ };
17
+ export function getCustomQueryWorkflowMessage(args) {
18
+ const advertiserId = args?.advertiserId || "{advertiserId}";
19
+ const queryGoal = args?.queryGoal || "campaign performance";
20
+ return `# Custom Query Building Workflow
21
+
22
+ ## Goal: ${queryGoal}
23
+
24
+ Follow these steps to build a custom Bid Manager query using the \`dbm_run_custom_query\` tool.
25
+
26
+ ---
27
+
28
+ ## Step 1: Determine Report Type
29
+
30
+ **Most common:** \`STANDARD\` for general delivery metrics.
31
+
32
+ Available types:
33
+ - \`STANDARD\` - Impressions, clicks, cost, conversions (most common)
34
+ - \`FLOODLIGHT\` - Conversion tracking with Floodlight data
35
+ - \`YOUTUBE\` - TrueView/YouTube-specific metrics
36
+ - \`REACH\` - Reach and frequency metrics
37
+
38
+ Fetch \`report-types://all\` for full details.
39
+
40
+ ---
41
+
42
+ ## Step 2: Choose Dimensions (groupBys)
43
+
44
+ Dimensions determine how results are broken down.
45
+
46
+ **Common groupBys for ${queryGoal}:**
47
+ - \`FILTER_DATE\` - Daily breakdown
48
+ - \`FILTER_MEDIA_PLAN\` - By campaign
49
+ - \`FILTER_LINE_ITEM\` - By line item
50
+ - \`FILTER_DEVICE_TYPE\` - By device
51
+ - \`FILTER_CREATIVE\` - By creative
52
+
53
+ Fetch \`filter-types://all\` for the complete list of ${278} available filters.
54
+
55
+ ---
56
+
57
+ ## Step 3: Select Metrics
58
+
59
+ Choose the metrics you want to measure.
60
+
61
+ **Common metrics for ${queryGoal}:**
62
+ - \`METRIC_IMPRESSIONS\` - Total impressions
63
+ - \`METRIC_CLICKS\` - Total clicks
64
+ - \`METRIC_CTR\` - Click-through rate
65
+ - \`METRIC_TOTAL_MEDIA_COST_ADVERTISER\` - Total spend
66
+ - \`METRIC_TOTAL_CONVERSIONS\` - Total conversions
67
+
68
+ Fetch \`metric-types://all\` for the complete list of ${100} available metrics.
69
+
70
+ ---
71
+
72
+ ## Step 4: Set Filters
73
+
74
+ Filters restrict the data to specific values.
75
+
76
+ **Required filter:**
77
+ \`\`\`json
78
+ { "type": "FILTER_ADVERTISER", "value": "${advertiserId}" }
79
+ \`\`\`
80
+
81
+ **Optional filters:**
82
+ - \`FILTER_MEDIA_PLAN\` - Specific campaign(s)
83
+ - \`FILTER_LINE_ITEM\` - Specific line item(s)
84
+ - \`FILTER_DATE\` - Specific date range
85
+
86
+ ---
87
+
88
+ ## Step 5: Set Date Range
89
+
90
+ **Presets (recommended):**
91
+ - \`LAST_7_DAYS\` - Quick recent view
92
+ - \`LAST_30_DAYS\` - Monthly view
93
+ - \`MONTH_TO_DATE\` - Current month
94
+ - \`PREVIOUS_MONTH\` - Last complete month
95
+
96
+ **Custom dates:**
97
+ \`\`\`json
98
+ {
99
+ "startDate": "2025-01-01",
100
+ "endDate": "2025-01-31"
101
+ }
102
+ \`\`\`
103
+
104
+ ---
105
+
106
+ ## Step 6: Execute Query
107
+
108
+ Example query for ${queryGoal}:
109
+
110
+ \`\`\`json
111
+ {
112
+ "reportType": "STANDARD",
113
+ "groupBys": ["FILTER_DATE", "FILTER_MEDIA_PLAN"],
114
+ "metrics": [
115
+ "METRIC_IMPRESSIONS",
116
+ "METRIC_CLICKS",
117
+ "METRIC_CTR",
118
+ "METRIC_TOTAL_MEDIA_COST_ADVERTISER"
119
+ ],
120
+ "filters": [
121
+ { "type": "FILTER_ADVERTISER", "value": "${advertiserId}" }
122
+ ],
123
+ "dateRange": {
124
+ "preset": "LAST_7_DAYS"
125
+ }
126
+ }
127
+ \`\`\`
128
+
129
+ ---
130
+
131
+ ## Validation Options
132
+
133
+ - \`strictValidation: true\` (default) - Validates all filter/metric names against known values
134
+ - \`strictValidation: false\` - Passes unknown values to API (useful for new API features)
135
+
136
+ ---
137
+
138
+ ## Output Options
139
+
140
+ - \`outputFormat: "structured"\` (default) - Returns JSON array of records
141
+ - \`outputFormat: "csv"\` - Returns raw CSV string
142
+
143
+ ---
144
+
145
+ ## Common Errors
146
+
147
+ | Error | Solution |
148
+ |-------|----------|
149
+ | "Unknown filter type" | Check spelling, fetch \`filter-types://all\` |
150
+ | "Unknown metric type" | Check spelling, fetch \`metric-types://all\` |
151
+ | "Report failed" | Check date range validity, reduce groupBys |
152
+ | "No data returned" | Verify advertiser ID, check filters aren't too restrictive |
153
+
154
+ ---
155
+
156
+ ## Next Steps
157
+
158
+ 1. Run the query with \`dbm_run_custom_query\`
159
+ 2. Analyze results
160
+ 3. Refine groupBys/metrics based on findings
161
+ 4. Use \`dbm_get_historical_metrics\` for trend analysis
162
+ `;
163
+ }
164
+ //# sourceMappingURL=custom-query-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-query-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/custom-query-workflow.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,yBAAyB,GAAW;IAC/C,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,+FAA+F;IACjG,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,8FAA8F;YAChG,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,IAA6B;IACzE,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,gBAAgB,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,sBAAsB,CAAC;IAE5D,OAAO;;WAEE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;wBAwBI,SAAS;;;;;;;wDAOuB,GAAG;;;;;;;;uBAQpC,SAAS;;;;;;;wDAOwB,GAAG;;;;;;;;;;2CAUhB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA8BnC,SAAS;;;;;;;;;;;;;+CAakB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC1D,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "./types.js";
2
+ export declare const pacingPerformanceAnalysisPrompt: Prompt;
3
+ export declare function getPacingPerformanceAnalysisMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=pacing-performance-analysis.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pacing-performance-analysis.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAQzC,eAAO,MAAM,+BAA+B,EAAE,MAqB7C,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAsLzF"}
@@ -0,0 +1,204 @@
1
+ export const pacingPerformanceAnalysisPrompt = {
2
+ name: "pacing_performance_analysis_workflow",
3
+ description: "Step-by-step guide for DV360 pacing assessment and performance deep-dive: check delivery pacing, analyze CPM/CTR/CPA/ROAS, identify historical trends, and recommend bid/budget adjustments via dv360-mcp.",
4
+ arguments: [
5
+ {
6
+ name: "campaignId",
7
+ description: "DV360 Campaign ID to analyze",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "advertiserId",
12
+ description: "DV360 Advertiser ID",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "focus",
17
+ description: "Analysis focus: 'pacing', 'performance', or 'both' (default: both)",
18
+ required: false,
19
+ },
20
+ ],
21
+ };
22
+ export function getPacingPerformanceAnalysisMessage(args) {
23
+ const campaignId = args?.campaignId || "{campaignId}";
24
+ const advertiserId = args?.advertiserId || "{advertiserId}";
25
+ const focus = args?.focus || "both";
26
+ return `# DV360 Pacing & Performance Analysis
27
+
28
+ Campaign: \`${campaignId}\`
29
+ Advertiser: \`${advertiserId}\`
30
+ Focus: \`${focus}\`
31
+
32
+ ---
33
+
34
+ ## Step 1: Assess Delivery Pacing
35
+
36
+ Check whether the campaign is on track to spend its budget by flight end.
37
+
38
+ \`\`\`json
39
+ {
40
+ "tool": "dbm_get_pacing_status",
41
+ "params": {
42
+ "campaignId": "${campaignId}",
43
+ "advertiserId": "${advertiserId}"
44
+ }
45
+ }
46
+ \`\`\`
47
+
48
+ **Interpret the pacing percentage:**
49
+
50
+ | Pacing % | Status | Action |
51
+ |----------|--------|--------|
52
+ | 95–105% | On pace | No action needed |
53
+ | 85–94% | Slightly under | Monitor — may self-correct |
54
+ | 70–84% | Underdelivering | Investigate and adjust bids/targeting |
55
+ | < 70% | Severely under | Urgent — likely a configuration or targeting issue |
56
+ | 106–115% | Slightly over | Monitor — consider lowering bids |
57
+ | > 115% | Overspending | Reduce bids or pause line items immediately |
58
+
59
+ ---
60
+
61
+ ## Step 2: Analyze Performance Metrics
62
+
63
+ Get calculated performance metrics for the campaign:
64
+
65
+ \`\`\`json
66
+ {
67
+ "tool": "dbm_get_performance_metrics",
68
+ "params": {
69
+ "campaignId": "${campaignId}",
70
+ "advertiserId": "${advertiserId}",
71
+ "dateRange": "LAST_7_DAYS"
72
+ }
73
+ }
74
+ \`\`\`
75
+
76
+ **Key metrics to evaluate:**
77
+
78
+ | Metric | What It Tells You | Action Threshold |
79
+ |--------|-------------------|------------------|
80
+ | **CPM** | Cost efficiency of impressions | Compare to vertical benchmarks |
81
+ | **CTR** | Ad engagement rate | < 0.05% suggests creative fatigue or poor targeting |
82
+ | **CPA** | Cost per acquisition | Compare to target CPA goal |
83
+ | **ROAS** | Return on ad spend | < 1.0 means losing money |
84
+
85
+ ---
86
+
87
+ ## Step 3: Identify Historical Trends
88
+
89
+ Pull time-series data to spot trends over time:
90
+
91
+ \`\`\`json
92
+ {
93
+ "tool": "dbm_get_historical_metrics",
94
+ "params": {
95
+ "campaignId": "${campaignId}",
96
+ "advertiserId": "${advertiserId}",
97
+ "startDate": "{YYYY-MM-DD}",
98
+ "endDate": "{YYYY-MM-DD}",
99
+ "granularity": "DAILY"
100
+ }
101
+ }
102
+ \`\`\`
103
+
104
+ **What to look for:**
105
+
106
+ - **CPM trending up** → Competition increasing or targeting too narrow. Consider broadening audience.
107
+ - **CTR trending down** → Creative fatigue. Recommend creative refresh.
108
+ - **Spend dropping day-over-day** → Delivery issue. Check targeting restrictions, bid floors, budget caps.
109
+ - **CPA spiking** → Conversion drop-off. Check landing page, conversion tracking, audience quality.
110
+ - **Consistent flat delivery** → May indicate a frequency cap or pacing issue.
111
+
112
+ ---
113
+
114
+ ## Step 4: Build a Custom Deep-Dive Query (Optional)
115
+
116
+ For more granular analysis, compose a custom Bid Manager query:
117
+
118
+ \`\`\`json
119
+ {
120
+ "tool": "dbm_run_custom_query",
121
+ "params": {
122
+ "reportType": "STANDARD",
123
+ "timeRange": "LAST_14_DAYS",
124
+ "metrics": [
125
+ "METRIC_IMPRESSIONS",
126
+ "METRIC_CLICKS",
127
+ "METRIC_TOTAL_MEDIA_COST_ADVERTISER",
128
+ "METRIC_TOTAL_CONVERSIONS",
129
+ "METRIC_REVENUE_ADVERTISER"
130
+ ],
131
+ "dimensions": [
132
+ "FILTER_LINE_ITEM"
133
+ ],
134
+ "filters": [
135
+ {
136
+ "type": "FILTER_ADVERTISER",
137
+ "value": "${advertiserId}"
138
+ },
139
+ {
140
+ "type": "FILTER_CAMPAIGN",
141
+ "value": "${campaignId}"
142
+ }
143
+ ]
144
+ }
145
+ }
146
+ \`\`\`
147
+
148
+ **Resource reference:** Fetch \`metric-types://all\` and \`filter-types://all\` for available metrics and dimensions. Check \`compatibility-rules://all\` to ensure your metric/dimension combination is valid.
149
+
150
+ ---
151
+
152
+ ## Step 5: Diagnose and Recommend
153
+
154
+ Based on findings from Steps 1–4, determine the root cause and recommended action:
155
+
156
+ ### Underdelivery Diagnosis
157
+
158
+ | Symptom | Likely Cause | Recommended Action |
159
+ |---------|-------------|-------------------|
160
+ | Low pacing + high CPM | Bid too low for competition | Increase bids via **dv360-mcp** \`dv360_adjust_line_item_bids\` |
161
+ | Low pacing + low CPM | Targeting too narrow | Broaden audience or geo targeting via **dv360-mcp** targeting tools |
162
+ | Low pacing + normal CPM | Budget cap or frequency cap | Check IO/LI budget and frequency settings via **dv360-mcp** \`dv360_get_entity\` |
163
+ | Declining CTR + stable impressions | Creative fatigue | Recommend creative refresh (new creatives via **dv360-mcp**) |
164
+ | High CPA + good CTR | Landing page or conversion issue | Check conversion tracking setup (outside MCP scope) |
165
+
166
+ ### Overspend Diagnosis
167
+
168
+ | Symptom | Likely Cause | Recommended Action |
169
+ |---------|-------------|-------------------|
170
+ | High pacing + low CPM | Bids too aggressive | Lower bids via **dv360-mcp** \`dv360_adjust_line_item_bids\` |
171
+ | High pacing + high CPM | Budget pacing too aggressive | Adjust pacing to EVEN via **dv360-mcp** \`dv360_update_entity\` |
172
+
173
+ ---
174
+
175
+ ## Step 6: Apply Remediation (via dv360-mcp)
176
+
177
+ This reporting server (dbm-mcp) is read-only. To make changes, use **dv360-mcp** tools:
178
+
179
+ - **Adjust bids**: \`dv360_adjust_line_item_bids\` (batch bid changes)
180
+ - **Pause line items**: \`dv360_bulk_update_status\` (pause underperformers)
181
+ - **Update budgets**: \`dv360_update_entity\` with updateMask on budget fields
182
+ - **Modify targeting**: \`dv360_create_assigned_targeting\` / \`dv360_delete_assigned_targeting\`
183
+
184
+ After making changes, wait at least 2-4 hours for delivery to adjust, then re-run Steps 1-2 to verify improvement.
185
+
186
+ ---
187
+
188
+ ## Summary Template
189
+
190
+ Present findings in this format:
191
+
192
+ | Metric | Current Value | Trend (7d) | Status |
193
+ |--------|--------------|------------|--------|
194
+ | Pacing | {X}% | {direction} | {On track / Under / Over} |
195
+ | CPM | \${X.XX} | {direction} | {Normal / High / Low} |
196
+ | CTR | {X.XX}% | {direction} | {Normal / Low} |
197
+ | CPA | \${X.XX} | {direction} | {Below / Above target} |
198
+ | ROAS | {X.XX}x | {direction} | {Profitable / Unprofitable} |
199
+
200
+ **Diagnosis:** {one-sentence summary}
201
+ **Recommended Actions:** {numbered list of specific actions with tool calls}
202
+ `;
203
+ }
204
+ //# sourceMappingURL=pacing-performance-analysis.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pacing-performance-analysis.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/pacing-performance-analysis.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,+BAA+B,GAAW;IACrD,IAAI,EAAE,sCAAsC;IAC5C,WAAW,EACT,4MAA4M;IAC9M,SAAS,EAAE;QACT;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,mCAAmC,CAAC,IAA6B;IAC/E,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,gBAAgB,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC;IAEpC,OAAO;;cAEK,UAAU;gBACR,YAAY;WACjB,KAAK;;;;;;;;;;;;qBAYK,UAAU;uBACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;qBA0Bd,UAAU;uBACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;qBAyBd,UAAU;uBACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAyCf,YAAY;;;;oBAIZ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6D7B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "./types.js";
2
+ export declare const toolSchemaExplorationPrompt: Prompt;
3
+ export declare function getToolSchemaExplorationMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=tool-schema-exploration.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-exploration.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/tool-schema-exploration.prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,2BAA2B,EAAE,MAiBzC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAiDrF"}
@@ -0,0 +1,66 @@
1
+ export const toolSchemaExplorationPrompt = {
2
+ name: "tool_schema_exploration_workflow",
3
+ description: "Step-by-step workflow for exploring available MCP tools, prompts, and resources with minimal context usage.",
4
+ arguments: [
5
+ {
6
+ name: "serverFocus",
7
+ description: "Server to focus on: dbm-mcp, dv360-mcp, or both (default: both)",
8
+ required: false,
9
+ },
10
+ {
11
+ name: "objective",
12
+ description: "Exploration objective (e.g. query planning, entity schema lookup, troubleshooting)",
13
+ required: false,
14
+ },
15
+ ],
16
+ };
17
+ export function getToolSchemaExplorationMessage(args) {
18
+ const serverFocus = args?.serverFocus || "both";
19
+ const objective = args?.objective || "tool and schema discovery";
20
+ return `# Tool and Schema Exploration Workflow
21
+
22
+ ## Context
23
+ - Focus: ${serverFocus}
24
+ - Objective: ${objective}
25
+
26
+ Use this workflow to discover capabilities while minimizing token/context bloat.
27
+
28
+ ## Step 1: List capabilities first
29
+ 1. Call \`tools/list\`
30
+ 2. Call \`prompts/list\`
31
+ 3. Call \`resources/list\`
32
+
33
+ Do not fetch large resources before narrowing scope.
34
+
35
+ ## Step 2: Narrow to one task path
36
+ Pick one immediate action:
37
+ - Build a custom reporting query
38
+ - Inspect DV360 entity schema/update fields
39
+ - Troubleshoot delivery/performance
40
+
41
+ ## Step 3: Fetch only targeted resources
42
+ Prefer smallest resources first:
43
+ - For filters: \`filter-types://category/{slug}\`
44
+ - For metrics: \`metric-types://category/{slug}\`
45
+ - Use \`://all\` resources only when needed
46
+ - For DV360 entities: \`entity-schema://{entityType}\`, \`entity-fields://{entityType}\`, \`entity-examples://{entityType}\`
47
+
48
+ ## Step 4: Validate compatibility before execution
49
+ - Confirm reportType/filter/metric compatibility via \`compatibility-rules://all\`
50
+ - Confirm DV360 updateMask fields via \`entity-fields://{entityType}\`
51
+
52
+ ## Step 5: Execute one smallest-viable tool call
53
+ Start with one call, inspect output, then iterate.
54
+
55
+ ## Context-minimization rules
56
+ - Keep text summaries concise; rely on structured output where available
57
+ - Avoid copying full JSON into chat unless requested
58
+ - Reuse fetched resource facts instead of re-fetching full docs
59
+
60
+ ## Suggested next prompt
61
+ - For reporting query construction: \`custom_query_workflow\`
62
+ - For reporting troubleshooting: \`troubleshoot_report\`
63
+ - For DV360 budget/campaign setup: use corresponding dv360-mcp prompts
64
+ `;
65
+ }
66
+ //# sourceMappingURL=tool-schema-exploration.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-exploration.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/tool-schema-exploration.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,2BAA2B,GAAW;IACjD,IAAI,EAAE,kCAAkC;IACxC,WAAW,EACT,6GAA6G;IAC/G,SAAS,EAAE;QACT;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,iEAAiE;YAC9E,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,oFAAoF;YACtF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,IAA6B;IAC3E,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,2BAA2B,CAAC;IAEjE,OAAO;;;WAGE,WAAW;eACP,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCvB,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "./types.js";
2
+ export declare const troubleshootReportPrompt: Prompt;
3
+ export declare function getTroubleshootReportMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=troubleshoot-report.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot-report.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/troubleshoot-report.prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,wBAAwB,EAAE,MAgBtC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAkKlF"}