@cesteral/gads-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 (251) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +262 -0
  3. package/dist/auth/gads-auth-adapter.d.ts +31 -0
  4. package/dist/auth/gads-auth-adapter.d.ts.map +1 -0
  5. package/dist/auth/gads-auth-adapter.js +70 -0
  6. package/dist/auth/gads-auth-adapter.js.map +1 -0
  7. package/dist/auth/gads-auth-strategy.d.ts +9 -0
  8. package/dist/auth/gads-auth-strategy.d.ts.map +1 -0
  9. package/dist/auth/gads-auth-strategy.js +27 -0
  10. package/dist/auth/gads-auth-strategy.js.map +1 -0
  11. package/dist/config/index.d.ts +100 -0
  12. package/dist/config/index.d.ts.map +1 -0
  13. package/dist/config/index.js +37 -0
  14. package/dist/config/index.js.map +1 -0
  15. package/dist/container/index.d.ts +5 -0
  16. package/dist/container/index.d.ts.map +1 -0
  17. package/dist/container/index.js +14 -0
  18. package/dist/container/index.js.map +1 -0
  19. package/dist/container/registrations/core.d.ts +3 -0
  20. package/dist/container/registrations/core.d.ts.map +1 -0
  21. package/dist/container/registrations/core.js +14 -0
  22. package/dist/container/registrations/core.js.map +1 -0
  23. package/dist/container/registrations/mcp.d.ts +2 -0
  24. package/dist/container/registrations/mcp.d.ts.map +1 -0
  25. package/dist/container/registrations/mcp.js +3 -0
  26. package/dist/container/registrations/mcp.js.map +1 -0
  27. package/dist/container/tokens.d.ts +6 -0
  28. package/dist/container/tokens.d.ts.map +1 -0
  29. package/dist/container/tokens.js +6 -0
  30. package/dist/container/tokens.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +50 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +230 -0
  38. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +237 -0
  42. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js +154 -0
  46. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  50. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  54. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
  56. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +221 -0
  58. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
  59. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
  60. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +207 -0
  62. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  63. package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.d.ts +4 -0
  64. package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.d.ts.map +1 -0
  65. package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.js +182 -0
  66. package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.js.map +1 -0
  67. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  68. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  69. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +223 -0
  70. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  71. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  72. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  73. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +125 -0
  74. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  75. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  76. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  77. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +177 -0
  78. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  79. package/dist/mcp-server/prompts/index.d.ts +9 -0
  80. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  81. package/dist/mcp-server/prompts/index.js +97 -0
  82. package/dist/mcp-server/prompts/index.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
  84. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/entity-examples.resource.js +574 -0
  86. package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
  88. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +124 -0
  90. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
  92. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +264 -0
  94. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  95. package/dist/mcp-server/resources/definitions/gaql-reference.resource.d.ts +3 -0
  96. package/dist/mcp-server/resources/definitions/gaql-reference.resource.d.ts.map +1 -0
  97. package/dist/mcp-server/resources/definitions/gaql-reference.resource.js +157 -0
  98. package/dist/mcp-server/resources/definitions/gaql-reference.resource.js.map +1 -0
  99. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  100. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  101. package/dist/mcp-server/resources/definitions/index.js +42 -0
  102. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  103. package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts +3 -0
  104. package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts.map +1 -0
  105. package/dist/mcp-server/resources/definitions/insights-reference.resource.js +78 -0
  106. package/dist/mcp-server/resources/definitions/insights-reference.resource.js.map +1 -0
  107. package/dist/mcp-server/resources/index.d.ts +3 -0
  108. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  109. package/dist/mcp-server/resources/index.js +2 -0
  110. package/dist/mcp-server/resources/index.js.map +1 -0
  111. package/dist/mcp-server/resources/types.d.ts +8 -0
  112. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  113. package/dist/mcp-server/resources/types.js +2 -0
  114. package/dist/mcp-server/resources/types.js.map +1 -0
  115. package/dist/mcp-server/server.d.ts +5 -0
  116. package/dist/mcp-server/server.d.ts.map +1 -0
  117. package/dist/mcp-server/server.js +124 -0
  118. package/dist/mcp-server/server.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +270 -0
  120. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +189 -0
  122. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +148 -0
  124. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +141 -0
  126. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/bulk-mutate.tool.d.ts +136 -0
  128. package/dist/mcp-server/tools/definitions/bulk-mutate.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/bulk-mutate.tool.js +127 -0
  130. package/dist/mcp-server/tools/definitions/bulk-mutate.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +185 -0
  132. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +149 -0
  134. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +123 -0
  136. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/create-entity.tool.js +98 -0
  138. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/gaql-search.tool.d.ts +197 -0
  140. package/dist/mcp-server/tools/definitions/gaql-search.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/gaql-search.tool.js +110 -0
  142. package/dist/mcp-server/tools/definitions/gaql-search.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +87 -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 +91 -0
  146. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +92 -0
  148. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/get-entity.tool.js +87 -0
  150. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts +382 -0
  152. package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/get-insights.tool.js +246 -0
  154. package/dist/mcp-server/tools/definitions/get-insights.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +141 -0
  156. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +163 -0
  158. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/index.d.ts +18 -0
  160. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/index.js +53 -0
  162. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/list-accounts.tool.d.ts +54 -0
  164. package/dist/mcp-server/tools/definitions/list-accounts.tool.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/list-accounts.tool.js +61 -0
  166. package/dist/mcp-server/tools/definitions/list-accounts.tool.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +220 -0
  168. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/list-entities.tool.js +112 -0
  170. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/remove-entity.tool.d.ts +116 -0
  172. package/dist/mcp-server/tools/definitions/remove-entity.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/remove-entity.tool.js +120 -0
  174. package/dist/mcp-server/tools/definitions/remove-entity.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +129 -0
  176. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/update-entity.tool.js +91 -0
  178. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +239 -0
  180. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +151 -0
  182. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/index.d.ts +2 -0
  184. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/index.js +2 -0
  186. package/dist/mcp-server/tools/index.js.map +1 -0
  187. package/dist/mcp-server/tools/utils/computed-metrics.d.ts +8 -0
  188. package/dist/mcp-server/tools/utils/computed-metrics.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/utils/computed-metrics.js +19 -0
  190. package/dist/mcp-server/tools/utils/computed-metrics.js.map +1 -0
  191. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +22 -0
  192. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/utils/entity-mapping.js +99 -0
  194. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  195. package/dist/mcp-server/tools/utils/gaql-helpers.d.ts +4 -0
  196. package/dist/mcp-server/tools/utils/gaql-helpers.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/utils/gaql-helpers.js +82 -0
  198. package/dist/mcp-server/tools/utils/gaql-helpers.js.map +1 -0
  199. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +10 -0
  200. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/utils/parent-id-validation.js +58 -0
  202. package/dist/mcp-server/tools/utils/parent-id-validation.js.map +1 -0
  203. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  204. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  206. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  207. package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
  208. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  209. package/dist/mcp-server/transports/streamable-http-transport.js +84 -0
  210. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  211. package/dist/services/gads/gads-http-client.d.ts +13 -0
  212. package/dist/services/gads/gads-http-client.d.ts.map +1 -0
  213. package/dist/services/gads/gads-http-client.js +113 -0
  214. package/dist/services/gads/gads-http-client.js.map +1 -0
  215. package/dist/services/gads/gads-service.d.ts +60 -0
  216. package/dist/services/gads/gads-service.d.ts.map +1 -0
  217. package/dist/services/gads/gads-service.js +363 -0
  218. package/dist/services/gads/gads-service.js.map +1 -0
  219. package/dist/services/gads/types.d.ts +211 -0
  220. package/dist/services/gads/types.d.ts.map +1 -0
  221. package/dist/services/gads/types.js +16 -0
  222. package/dist/services/gads/types.js.map +1 -0
  223. package/dist/services/session-services.d.ts +17 -0
  224. package/dist/services/session-services.d.ts.map +1 -0
  225. package/dist/services/session-services.js +14 -0
  226. package/dist/services/session-services.js.map +1 -0
  227. package/dist/types-global/mcp.d.ts +2 -0
  228. package/dist/types-global/mcp.d.ts.map +1 -0
  229. package/dist/types-global/mcp.js +2 -0
  230. package/dist/types-global/mcp.js.map +1 -0
  231. package/dist/utils/errors/index.d.ts +2 -0
  232. package/dist/utils/errors/index.d.ts.map +1 -0
  233. package/dist/utils/errors/index.js +2 -0
  234. package/dist/utils/errors/index.js.map +1 -0
  235. package/dist/utils/platform.d.ts +3 -0
  236. package/dist/utils/platform.d.ts.map +1 -0
  237. package/dist/utils/platform.js +5 -0
  238. package/dist/utils/platform.js.map +1 -0
  239. package/dist/utils/security/rate-limiter.d.ts +3 -0
  240. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  241. package/dist/utils/security/rate-limiter.js +5 -0
  242. package/dist/utils/security/rate-limiter.js.map +1 -0
  243. package/dist/utils/telemetry/index.d.ts +2 -0
  244. package/dist/utils/telemetry/index.d.ts.map +1 -0
  245. package/dist/utils/telemetry/index.js +2 -0
  246. package/dist/utils/telemetry/index.js.map +1 -0
  247. package/dist/utils/telemetry/tracing.d.ts +3 -0
  248. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  249. package/dist/utils/telemetry/tracing.js +4 -0
  250. package/dist/utils/telemetry/tracing.js.map +1 -0
  251. package/package.json +56 -0
@@ -0,0 +1,4 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entityExampleResources: Resource[];
3
+ export declare const entityExampleAllResource: Resource;
4
+ //# sourceMappingURL=entity-examples.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-examples.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-examples.resource.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6jB5C,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EAM1C,CAAC;AAEJ,eAAO,MAAM,wBAAwB,EAAE,QAStC,CAAC"}
@@ -0,0 +1,574 @@
1
+ const cachedExamples = new Map();
2
+ function campaignExamplesMarkdown() {
3
+ return `# Google Ads Campaign Examples
4
+
5
+ ## Create Search Campaign
6
+
7
+ \`\`\`json
8
+ {
9
+ "entityType": "campaign",
10
+ "customerId": "1234567890",
11
+ "data": {
12
+ "name": "Q1 2025 Brand Search",
13
+ "advertisingChannelType": "SEARCH",
14
+ "status": "PAUSED",
15
+ "campaignBudget": "customers/1234567890/campaignBudgets/111222333",
16
+ "startDate": "2025-03-01",
17
+ "networkSettings": {
18
+ "targetGoogleSearch": true,
19
+ "targetSearchNetwork": true,
20
+ "targetContentNetwork": false,
21
+ "targetPartnerSearchNetwork": false
22
+ },
23
+ "manualCpc": {
24
+ "enhancedCpcEnabled": false
25
+ }
26
+ }
27
+ }
28
+ \`\`\`
29
+ > \`campaignBudget\` must reference an existing CampaignBudget resource name.
30
+ > Set \`status: "PAUSED"\` initially, enable after full setup.
31
+
32
+ ## Create Display Campaign
33
+
34
+ \`\`\`json
35
+ {
36
+ "entityType": "campaign",
37
+ "customerId": "1234567890",
38
+ "data": {
39
+ "name": "Q1 Display Remarketing",
40
+ "advertisingChannelType": "DISPLAY",
41
+ "status": "PAUSED",
42
+ "campaignBudget": "customers/1234567890/campaignBudgets/111222333",
43
+ "startDate": "2025-03-01",
44
+ "targetCpa": {
45
+ "targetCpaMicros": "5000000"
46
+ }
47
+ }
48
+ }
49
+ \`\`\`
50
+
51
+ ## Get Campaign
52
+
53
+ \`\`\`json
54
+ {
55
+ "entityType": "campaign",
56
+ "customerId": "1234567890",
57
+ "entityId": "444555666"
58
+ }
59
+ \`\`\`
60
+
61
+ ## List Campaigns
62
+
63
+ \`\`\`json
64
+ {
65
+ "entityType": "campaign",
66
+ "customerId": "1234567890"
67
+ }
68
+ \`\`\`
69
+
70
+ ## Update Campaign (Pause)
71
+
72
+ \`\`\`json
73
+ {
74
+ "entityType": "campaign",
75
+ "customerId": "1234567890",
76
+ "entityId": "444555666",
77
+ "data": {
78
+ "status": "PAUSED"
79
+ },
80
+ "updateMask": "status"
81
+ }
82
+ \`\`\`
83
+ > \`updateMask\` is required — only listed fields are updated.
84
+
85
+ ## Remove Campaign
86
+
87
+ \`\`\`json
88
+ {
89
+ "entityType": "campaign",
90
+ "customerId": "1234567890",
91
+ "entityId": "444555666"
92
+ }
93
+ \`\`\`
94
+ > Removal sets status to REMOVED. This cannot be undone.
95
+ `;
96
+ }
97
+ function adGroupExamplesMarkdown() {
98
+ return `# Google Ads Ad Group Examples
99
+
100
+ ## Create Ad Group
101
+
102
+ \`\`\`json
103
+ {
104
+ "entityType": "adGroup",
105
+ "customerId": "1234567890",
106
+ "data": {
107
+ "name": "Running Shoes - Exact Match",
108
+ "campaign": "customers/1234567890/campaigns/444555666",
109
+ "status": "ENABLED",
110
+ "type": "SEARCH_STANDARD",
111
+ "cpcBidMicros": "2500000"
112
+ }
113
+ }
114
+ \`\`\`
115
+ > \`cpcBidMicros\` is the default max CPC bid in micros. $2.50 = "2500000".
116
+ > \`campaign\` must be the full resource name.
117
+
118
+ ## Create Display Ad Group
119
+
120
+ \`\`\`json
121
+ {
122
+ "entityType": "adGroup",
123
+ "customerId": "1234567890",
124
+ "data": {
125
+ "name": "Remarketing - All Visitors",
126
+ "campaign": "customers/1234567890/campaigns/444555666",
127
+ "status": "ENABLED",
128
+ "type": "DISPLAY_STANDARD",
129
+ "cpmBidMicros": "3000000"
130
+ }
131
+ }
132
+ \`\`\`
133
+
134
+ ## Get Ad Group
135
+
136
+ \`\`\`json
137
+ {
138
+ "entityType": "adGroup",
139
+ "customerId": "1234567890",
140
+ "entityId": "777888999"
141
+ }
142
+ \`\`\`
143
+
144
+ ## List Ad Groups for Campaign
145
+
146
+ \`\`\`json
147
+ {
148
+ "entityType": "adGroup",
149
+ "customerId": "1234567890",
150
+ "filters": {
151
+ "ad_group.campaign": "= 'customers/1234567890/campaigns/444555666'"
152
+ }
153
+ }
154
+ \`\`\`
155
+
156
+ ## Update Ad Group (Adjust Bid)
157
+
158
+ \`\`\`json
159
+ {
160
+ "entityType": "adGroup",
161
+ "customerId": "1234567890",
162
+ "entityId": "777888999",
163
+ "data": {
164
+ "cpcBidMicros": "3500000"
165
+ },
166
+ "updateMask": "cpcBidMicros"
167
+ }
168
+ \`\`\`
169
+
170
+ ## Update Ad Group (Pause)
171
+
172
+ \`\`\`json
173
+ {
174
+ "entityType": "adGroup",
175
+ "customerId": "1234567890",
176
+ "entityId": "777888999",
177
+ "data": {
178
+ "status": "PAUSED"
179
+ },
180
+ "updateMask": "status"
181
+ }
182
+ \`\`\`
183
+ `;
184
+ }
185
+ function adExamplesMarkdown() {
186
+ return `# Google Ads Ad Examples
187
+
188
+ ## Create Responsive Search Ad
189
+
190
+ \`\`\`json
191
+ {
192
+ "entityType": "ad",
193
+ "customerId": "1234567890",
194
+ "data": {
195
+ "adGroup": "customers/1234567890/adGroups/777888999",
196
+ "status": "ENABLED",
197
+ "ad": {
198
+ "responsiveSearchAd": {
199
+ "headlines": [
200
+ { "text": "Buy Running Shoes" },
201
+ { "text": "Free Shipping Available" },
202
+ { "text": "Shop Top Brands Today" }
203
+ ],
204
+ "descriptions": [
205
+ { "text": "Wide selection of running shoes. Free returns on all orders." },
206
+ { "text": "Top brands at great prices. Order today and get free shipping." }
207
+ ],
208
+ "path1": "shoes",
209
+ "path2": "running"
210
+ },
211
+ "finalUrls": ["https://www.example.com/running-shoes"]
212
+ }
213
+ }
214
+ }
215
+ \`\`\`
216
+ > Provide 8-15 headlines (max 30 chars) and 3-4 descriptions (max 90 chars) for best performance.
217
+ > Google auto-tests headline/description combinations.
218
+
219
+ ## Create Responsive Display Ad
220
+
221
+ \`\`\`json
222
+ {
223
+ "entityType": "ad",
224
+ "customerId": "1234567890",
225
+ "data": {
226
+ "adGroup": "customers/1234567890/adGroups/777888999",
227
+ "status": "ENABLED",
228
+ "ad": {
229
+ "responsiveDisplayAd": {
230
+ "headlines": [{ "text": "Summer Sale" }],
231
+ "longHeadline": { "text": "Huge Summer Sale - Up to 50% Off" },
232
+ "descriptions": [{ "text": "Don't miss our biggest sale of the year." }],
233
+ "businessName": "Acme Store"
234
+ },
235
+ "finalUrls": ["https://www.example.com/summer-sale"]
236
+ }
237
+ }
238
+ }
239
+ \`\`\`
240
+
241
+ ## Get Ad
242
+
243
+ \`\`\`json
244
+ {
245
+ "entityType": "ad",
246
+ "customerId": "1234567890",
247
+ "entityId": "777888999~111222333"
248
+ }
249
+ \`\`\`
250
+ > Ad IDs are composite: \`{adGroupId}~{adId}\`.
251
+
252
+ ## Update Ad (Pause)
253
+
254
+ \`\`\`json
255
+ {
256
+ "entityType": "ad",
257
+ "customerId": "1234567890",
258
+ "entityId": "777888999~111222333",
259
+ "data": {
260
+ "status": "PAUSED"
261
+ },
262
+ "updateMask": "status"
263
+ }
264
+ \`\`\`
265
+
266
+ ## Remove Ad
267
+
268
+ \`\`\`json
269
+ {
270
+ "entityType": "ad",
271
+ "customerId": "1234567890",
272
+ "entityId": "777888999~111222333"
273
+ }
274
+ \`\`\`
275
+ `;
276
+ }
277
+ function keywordExamplesMarkdown() {
278
+ return `# Google Ads Keyword Examples
279
+
280
+ ## Create Exact Match Keyword
281
+
282
+ \`\`\`json
283
+ {
284
+ "entityType": "keyword",
285
+ "customerId": "1234567890",
286
+ "data": {
287
+ "adGroup": "customers/1234567890/adGroups/777888999",
288
+ "status": "ENABLED",
289
+ "keyword": {
290
+ "text": "running shoes",
291
+ "matchType": "EXACT"
292
+ },
293
+ "cpcBidMicros": "3000000"
294
+ }
295
+ }
296
+ \`\`\`
297
+ > Match types: BROAD, PHRASE, EXACT.
298
+ > \`cpcBidMicros\` overrides the ad group default bid.
299
+
300
+ ## Create Phrase Match Keyword
301
+
302
+ \`\`\`json
303
+ {
304
+ "entityType": "keyword",
305
+ "customerId": "1234567890",
306
+ "data": {
307
+ "adGroup": "customers/1234567890/adGroups/777888999",
308
+ "status": "ENABLED",
309
+ "keyword": {
310
+ "text": "best running shoes",
311
+ "matchType": "PHRASE"
312
+ }
313
+ }
314
+ }
315
+ \`\`\`
316
+ > Omitting \`cpcBidMicros\` uses the ad group default bid.
317
+
318
+ ## Create Negative Keyword
319
+
320
+ \`\`\`json
321
+ {
322
+ "entityType": "keyword",
323
+ "customerId": "1234567890",
324
+ "data": {
325
+ "adGroup": "customers/1234567890/adGroups/777888999",
326
+ "status": "ENABLED",
327
+ "negative": true,
328
+ "keyword": {
329
+ "text": "free",
330
+ "matchType": "BROAD"
331
+ }
332
+ }
333
+ }
334
+ \`\`\`
335
+
336
+ ## Get Keyword
337
+
338
+ \`\`\`json
339
+ {
340
+ "entityType": "keyword",
341
+ "customerId": "1234567890",
342
+ "entityId": "777888999~444555666"
343
+ }
344
+ \`\`\`
345
+ > Keyword IDs are composite: \`{adGroupId}~{criterionId}\`.
346
+
347
+ ## List Keywords for Ad Group
348
+
349
+ \`\`\`json
350
+ {
351
+ "entityType": "keyword",
352
+ "customerId": "1234567890",
353
+ "filters": {
354
+ "ad_group_criterion.ad_group": "= 'customers/1234567890/adGroups/777888999'"
355
+ }
356
+ }
357
+ \`\`\`
358
+
359
+ ## Update Keyword (Change Bid)
360
+
361
+ \`\`\`json
362
+ {
363
+ "entityType": "keyword",
364
+ "customerId": "1234567890",
365
+ "entityId": "777888999~444555666",
366
+ "data": {
367
+ "cpcBidMicros": "4000000"
368
+ },
369
+ "updateMask": "cpcBidMicros"
370
+ }
371
+ \`\`\`
372
+ `;
373
+ }
374
+ function campaignBudgetExamplesMarkdown() {
375
+ return `# Google Ads Campaign Budget Examples
376
+
377
+ ## Create Daily Budget
378
+
379
+ \`\`\`json
380
+ {
381
+ "entityType": "campaignBudget",
382
+ "customerId": "1234567890",
383
+ "data": {
384
+ "name": "Daily Budget - $50",
385
+ "amountMicros": "50000000",
386
+ "deliveryMethod": "STANDARD"
387
+ }
388
+ }
389
+ \`\`\`
390
+ > \`amountMicros\` is the daily budget in micros. $50/day = "50000000".
391
+ > \`deliveryMethod\`: STANDARD (evenly throughout the day) or ACCELERATED (spend as quickly as possible).
392
+
393
+ ## Create Shared Budget
394
+
395
+ \`\`\`json
396
+ {
397
+ "entityType": "campaignBudget",
398
+ "customerId": "1234567890",
399
+ "data": {
400
+ "name": "Shared Budget - Brand Campaigns",
401
+ "amountMicros": "100000000",
402
+ "deliveryMethod": "STANDARD",
403
+ "explicitlyShared": true
404
+ }
405
+ }
406
+ \`\`\`
407
+ > Shared budgets can be linked to multiple campaigns. Set \`explicitlyShared: true\`.
408
+
409
+ ## Get Campaign Budget
410
+
411
+ \`\`\`json
412
+ {
413
+ "entityType": "campaignBudget",
414
+ "customerId": "1234567890",
415
+ "entityId": "111222333"
416
+ }
417
+ \`\`\`
418
+
419
+ ## List Campaign Budgets
420
+
421
+ \`\`\`json
422
+ {
423
+ "entityType": "campaignBudget",
424
+ "customerId": "1234567890"
425
+ }
426
+ \`\`\`
427
+
428
+ ## Update Campaign Budget (Increase)
429
+
430
+ \`\`\`json
431
+ {
432
+ "entityType": "campaignBudget",
433
+ "customerId": "1234567890",
434
+ "entityId": "111222333",
435
+ "data": {
436
+ "amountMicros": "75000000"
437
+ },
438
+ "updateMask": "amountMicros"
439
+ }
440
+ \`\`\`
441
+ `;
442
+ }
443
+ function assetExamplesMarkdown() {
444
+ return `# Google Ads Asset Examples
445
+
446
+ ## Create Sitelink Asset
447
+
448
+ \`\`\`json
449
+ {
450
+ "entityType": "asset",
451
+ "customerId": "1234567890",
452
+ "data": {
453
+ "name": "Summer Sale Sitelink",
454
+ "sitelinkAsset": {
455
+ "linkText": "Summer Sale",
456
+ "description1": "Up to 50% off all items",
457
+ "description2": "Free shipping on orders over $50"
458
+ },
459
+ "finalUrls": ["https://www.example.com/summer-sale"]
460
+ }
461
+ }
462
+ \`\`\`
463
+
464
+ ## Create Callout Asset
465
+
466
+ \`\`\`json
467
+ {
468
+ "entityType": "asset",
469
+ "customerId": "1234567890",
470
+ "data": {
471
+ "name": "Free Shipping Callout",
472
+ "calloutAsset": {
473
+ "calloutText": "Free Shipping"
474
+ }
475
+ }
476
+ }
477
+ \`\`\`
478
+
479
+ ## Create Structured Snippet Asset
480
+
481
+ \`\`\`json
482
+ {
483
+ "entityType": "asset",
484
+ "customerId": "1234567890",
485
+ "data": {
486
+ "name": "Brand Snippets",
487
+ "structuredSnippetAsset": {
488
+ "header": "Brands",
489
+ "values": ["Nike", "Adidas", "New Balance", "Brooks"]
490
+ }
491
+ }
492
+ }
493
+ \`\`\`
494
+
495
+ ## Create Image Asset
496
+
497
+ \`\`\`json
498
+ {
499
+ "entityType": "asset",
500
+ "customerId": "1234567890",
501
+ "data": {
502
+ "name": "Hero Banner Image",
503
+ "imageAsset": {
504
+ "data": "BASE64_ENCODED_IMAGE_DATA"
505
+ }
506
+ }
507
+ }
508
+ \`\`\`
509
+ > Image data must be base64-encoded. Supported formats: PNG, JPG, GIF.
510
+
511
+ ## Get Asset
512
+
513
+ \`\`\`json
514
+ {
515
+ "entityType": "asset",
516
+ "customerId": "1234567890",
517
+ "entityId": "999888777"
518
+ }
519
+ \`\`\`
520
+
521
+ ## List Assets
522
+
523
+ \`\`\`json
524
+ {
525
+ "entityType": "asset",
526
+ "customerId": "1234567890"
527
+ }
528
+ \`\`\`
529
+ `;
530
+ }
531
+ const EXAMPLE_GENERATORS = {
532
+ campaign: campaignExamplesMarkdown,
533
+ adgroup: adGroupExamplesMarkdown,
534
+ ad: adExamplesMarkdown,
535
+ keyword: keywordExamplesMarkdown,
536
+ campaignbudget: campaignBudgetExamplesMarkdown,
537
+ asset: assetExamplesMarkdown,
538
+ };
539
+ function getExampleContent(entityType) {
540
+ const key = entityType.toLowerCase();
541
+ if (!cachedExamples.has(key)) {
542
+ const generator = EXAMPLE_GENERATORS[key];
543
+ if (generator) {
544
+ cachedExamples.set(key, generator());
545
+ }
546
+ else {
547
+ return `# Unknown entity type: ${entityType}\n\nSupported types: ${ENTITY_TYPES.join(", ")}`;
548
+ }
549
+ }
550
+ return cachedExamples.get(key);
551
+ }
552
+ let cachedAllExamples;
553
+ function getAllExamplesMarkdown() {
554
+ return ENTITY_TYPES.map((t) => getExampleContent(t)).join("\n---\n\n");
555
+ }
556
+ const ENTITY_TYPES = ["campaign", "adGroup", "ad", "keyword", "campaignBudget", "asset"];
557
+ export const entityExampleResources = ENTITY_TYPES.map((entityType) => ({
558
+ uri: `entity-examples://${entityType}`,
559
+ name: `Google Ads ${entityType} Examples`,
560
+ description: `CRUD example payloads for Google Ads ${entityType} entities including create, get, list, update, and remove`,
561
+ mimeType: "text/markdown",
562
+ getContent: () => getExampleContent(entityType),
563
+ }));
564
+ export const entityExampleAllResource = {
565
+ uri: "entity-examples://all",
566
+ name: "Google Ads All Entity Examples",
567
+ description: "Combined CRUD example payloads for all Google Ads entity types",
568
+ mimeType: "text/markdown",
569
+ getContent: () => {
570
+ cachedAllExamples ??= getAllExamplesMarkdown();
571
+ return cachedAllExamples;
572
+ },
573
+ };
574
+ //# sourceMappingURL=entity-examples.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-examples.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-examples.resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entityHierarchyResource: Resource;
3
+ //# sourceMappingURL=entity-hierarchy.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqH5C,eAAO,MAAM,uBAAuB,EAAE,QAUrC,CAAC"}