@cesteral/pinterest-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 (263) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +348 -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/pinterest-auth-adapter.d.ts +38 -0
  8. package/dist/auth/pinterest-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/pinterest-auth-adapter.js +117 -0
  10. package/dist/auth/pinterest-auth-adapter.js.map +1 -0
  11. package/dist/auth/pinterest-auth-strategy.d.ts +13 -0
  12. package/dist/auth/pinterest-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/pinterest-auth-strategy.js +52 -0
  14. package/dist/auth/pinterest-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/generated/types.d.ts +18119 -0
  20. package/dist/generated/types.d.ts.map +1 -0
  21. package/dist/generated/types.js +2 -0
  22. package/dist/generated/types.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +47 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
  28. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
  29. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +125 -0
  30. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +105 -0
  34. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js +95 -0
  38. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +301 -0
  42. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  46. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +198 -0
  50. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +188 -0
  54. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts +4 -0
  56. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js +126 -0
  58. package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js.map +1 -0
  59. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  60. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +197 -0
  62. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  63. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  64. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  65. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +93 -0
  66. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  67. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  68. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  69. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +111 -0
  70. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  71. package/dist/mcp-server/prompts/index.d.ts +9 -0
  72. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  73. package/dist/mcp-server/prompts/index.js +97 -0
  74. package/dist/mcp-server/prompts/index.js.map +1 -0
  75. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
  76. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
  77. package/dist/mcp-server/resources/definitions/entity-examples.resource.js +180 -0
  78. package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
  79. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
  80. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
  81. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +140 -0
  82. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
  84. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +125 -0
  86. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/definitions/index.d.ts +7 -0
  88. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/index.js +58 -0
  90. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts +3 -0
  92. package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/reporting-reference.resource.js +148 -0
  94. package/dist/mcp-server/resources/definitions/reporting-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 +133 -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 +109 -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 +127 -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 +134 -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 +91 -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 +113 -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 +99 -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 +110 -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-audience-estimate.tool.d.ts +85 -0
  148. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js +88 -0
  150. package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +76 -0
  152. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/get-entity.tool.js +71 -0
  154. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts +319 -0
  156. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js +183 -0
  158. package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +301 -0
  160. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/get-report.tool.js +176 -0
  162. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +75 -0
  164. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +72 -0
  166. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/index.d.ts +25 -0
  168. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/index.js +75 -0
  170. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts +54 -0
  172. package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js +58 -0
  174. package/dist/mcp-server/tools/definitions/list-advertisers.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +180 -0
  176. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/list-entities.tool.js +116 -0
  178. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +103 -0
  180. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/search-targeting.tool.js +98 -0
  182. package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +164 -0
  184. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/submit-report.tool.js +118 -0
  186. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +111 -0
  188. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/update-entity.tool.js +89 -0
  190. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts +81 -0
  192. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/definitions/upload-image.tool.js +73 -0
  194. package/dist/mcp-server/tools/definitions/upload-image.tool.js.map +1 -0
  195. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts +82 -0
  196. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/definitions/upload-video.tool.js +100 -0
  198. package/dist/mcp-server/tools/definitions/upload-video.tool.js.map +1 -0
  199. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +169 -0
  200. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +154 -0
  202. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  203. package/dist/mcp-server/tools/index.d.ts +2 -0
  204. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/index.js +2 -0
  206. package/dist/mcp-server/tools/index.js.map +1 -0
  207. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +22 -0
  208. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/utils/entity-mapping.js +105 -0
  210. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  211. package/dist/mcp-server/tools/utils/media-types.d.ts +14 -0
  212. package/dist/mcp-server/tools/utils/media-types.d.ts.map +1 -0
  213. package/dist/mcp-server/tools/utils/media-types.js +2 -0
  214. package/dist/mcp-server/tools/utils/media-types.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/pinterest/pinterest-http-client.d.ts +22 -0
  224. package/dist/services/pinterest/pinterest-http-client.d.ts.map +1 -0
  225. package/dist/services/pinterest/pinterest-http-client.js +149 -0
  226. package/dist/services/pinterest/pinterest-http-client.js.map +1 -0
  227. package/dist/services/pinterest/pinterest-reporting-service.d.ts +60 -0
  228. package/dist/services/pinterest/pinterest-reporting-service.d.ts.map +1 -0
  229. package/dist/services/pinterest/pinterest-reporting-service.js +132 -0
  230. package/dist/services/pinterest/pinterest-reporting-service.js.map +1 -0
  231. package/dist/services/pinterest/pinterest-service.d.ts +110 -0
  232. package/dist/services/pinterest/pinterest-service.d.ts.map +1 -0
  233. package/dist/services/pinterest/pinterest-service.js +238 -0
  234. package/dist/services/pinterest/pinterest-service.js.map +1 -0
  235. package/dist/services/session-services.d.ts +21 -0
  236. package/dist/services/session-services.d.ts.map +1 -0
  237. package/dist/services/session-services.js +23 -0
  238. package/dist/services/session-services.js.map +1 -0
  239. package/dist/types-global/mcp.d.ts +2 -0
  240. package/dist/types-global/mcp.d.ts.map +1 -0
  241. package/dist/types-global/mcp.js +2 -0
  242. package/dist/types-global/mcp.js.map +1 -0
  243. package/dist/utils/errors/index.d.ts +2 -0
  244. package/dist/utils/errors/index.d.ts.map +1 -0
  245. package/dist/utils/errors/index.js +2 -0
  246. package/dist/utils/errors/index.js.map +1 -0
  247. package/dist/utils/platform.d.ts +3 -0
  248. package/dist/utils/platform.d.ts.map +1 -0
  249. package/dist/utils/platform.js +5 -0
  250. package/dist/utils/platform.js.map +1 -0
  251. package/dist/utils/security/rate-limiter.d.ts +3 -0
  252. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  253. package/dist/utils/security/rate-limiter.js +5 -0
  254. package/dist/utils/security/rate-limiter.js.map +1 -0
  255. package/dist/utils/telemetry/index.d.ts +2 -0
  256. package/dist/utils/telemetry/index.d.ts.map +1 -0
  257. package/dist/utils/telemetry/index.js +2 -0
  258. package/dist/utils/telemetry/index.js.map +1 -0
  259. package/dist/utils/telemetry/tracing.d.ts +3 -0
  260. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  261. package/dist/utils/telemetry/tracing.js +4 -0
  262. package/dist/utils/telemetry/tracing.js.map +1 -0
  263. package/package.json +57 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generated/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ import { mcpConfig } from "./config/index.js";
3
+ import { createMcpServer, runStdioServer } from "./mcp-server/server.js";
4
+ import { startHttpServer } from "./mcp-server/transports/streamable-http-transport.js";
5
+ import { initializeOpenTelemetry, otelLogMixin } from "@cesteral/shared";
6
+ import { PinterestAccessTokenAdapter } from "./auth/pinterest-auth-adapter.js";
7
+ import { detectTransportMode, createServerLogger, bootstrapMcpServer } from "@cesteral/shared";
8
+ import { createSessionServices, sessionServiceStore } from "./services/session-services.js";
9
+ import { rateLimiter } from "./utils/platform.js";
10
+ const transportMode = detectTransportMode();
11
+ const logger = createServerLogger("pinterest-mcp", transportMode, otelLogMixin());
12
+ async function setupStdioCredentials(sessionId) {
13
+ const accessToken = mcpConfig.pinterestAccessToken;
14
+ const adAccountId = mcpConfig.pinterestAdAccountId;
15
+ if (!accessToken || !adAccountId) {
16
+ logger.warn("No Pinterest credentials found in env vars. " +
17
+ "Set PINTEREST_ACCESS_TOKEN and PINTEREST_AD_ACCOUNT_ID for stdio mode.");
18
+ return false;
19
+ }
20
+ const authAdapter = new PinterestAccessTokenAdapter(accessToken, adAccountId, mcpConfig.pinterestApiBaseUrl);
21
+ await authAdapter.validate();
22
+ const services = createSessionServices(authAdapter, {
23
+ baseUrl: mcpConfig.pinterestApiBaseUrl,
24
+ apiVersion: mcpConfig.pinterestApiVersion,
25
+ reportPollIntervalMs: mcpConfig.pinterestReportPollIntervalMs,
26
+ reportMaxPollAttempts: mcpConfig.pinterestReportMaxPollAttempts,
27
+ }, logger, rateLimiter);
28
+ sessionServiceStore.set(sessionId, services);
29
+ logger.info("Stdio session services created successfully");
30
+ return true;
31
+ }
32
+ bootstrapMcpServer({
33
+ serviceName: "pinterest-mcp",
34
+ config: mcpConfig,
35
+ logger,
36
+ transportMode,
37
+ initOtel: initializeOpenTelemetry,
38
+ setupStdioSession: setupStdioCredentials,
39
+ createMcpServer,
40
+ runStdio: runStdioServer,
41
+ startHttp: startHttpServer,
42
+ onShutdown: () => rateLimiter.destroy(),
43
+ }).catch((err) => {
44
+ logger.fatal({ err }, "Failed to start pinterest-mcp");
45
+ process.exit(1);
46
+ });
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAMlF,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,oBAAoB,CAAC;IACnD,MAAM,WAAW,GAAG,SAAS,CAAC,oBAAoB,CAAC;IAEnD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACT,8CAA8C;YAC5C,wEAAwE,CAC3E,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,2BAA2B,CACjD,WAAW,EACX,WAAW,EACX,SAAS,CAAC,mBAAmB,CAC9B,CAAC;IAGF,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,WAAW,EACX;QACE,OAAO,EAAE,SAAS,CAAC,mBAAmB;QACtC,UAAU,EAAE,SAAS,CAAC,mBAAmB;QACzC,oBAAoB,EAAE,SAAS,CAAC,6BAA6B;QAC7D,qBAAqB,EAAE,SAAS,CAAC,8BAA8B;KAChE,EACD,MAAM,EACN,WAAW,CACZ,CAAC;IAEF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kBAAkB,CAAC;IACjB,WAAW,EAAE,eAAe;IAC5B,MAAM,EAAE,SAAS;IACjB,MAAM;IACN,aAAa;IACb,QAAQ,EAAE,uBAAuB;IACjC,iBAAiB,EAAE,qBAAqB;IACxC,eAAe;IACf,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const bulkOperationsWorkflowPrompt: Prompt;
3
+ export declare function getBulkOperationsWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=bulk-operations-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-operations-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,4BAA4B,EAAE,MAgB1C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA4GtF"}
@@ -0,0 +1,125 @@
1
+ export const bulkOperationsWorkflowPrompt = {
2
+ name: "pinterest_bulk_operations_workflow",
3
+ description: "Guide for performing bulk create, update, and status operations on Pinterest Ads entities",
4
+ arguments: [
5
+ {
6
+ name: "adAccountId",
7
+ description: "Pinterest Advertiser ID",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "entityType",
12
+ description: "Entity type to operate on (campaign, adGroup, ad)",
13
+ required: false,
14
+ },
15
+ ],
16
+ };
17
+ export function getBulkOperationsWorkflowMessage(args) {
18
+ const adAccountId = args?.adAccountId || "{adAccountId}";
19
+ const entityType = args?.entityType || "campaign";
20
+ return `# Pinterest Bulk Operations Workflow
21
+
22
+ ## Advertiser ID: \`${adAccountId}\`
23
+ ## Entity Type: \`${entityType}\`
24
+
25
+ ---
26
+
27
+ ## Option 1: Bulk Status Update (most common)
28
+
29
+ Pause, enable, or delete multiple entities in one call:
30
+
31
+ \`\`\`json
32
+ pinterest_bulk_update_status({
33
+ "entityType": "${entityType}",
34
+ "adAccountId": "${adAccountId}",
35
+ "entityIds": ["ID_1", "ID_2", "ID_3"],
36
+ "operationStatus": "PAUSED"
37
+ })
38
+ \`\`\`
39
+
40
+ **Operation status values:**
41
+ - \`ACTIVE\` — Activate entities
42
+ - \`PAUSED\` — Pause entities
43
+ - \`DELETE\` — Permanently delete (irreversible!)
44
+
45
+ ---
46
+
47
+ ## Option 2: Bulk Create Entities (up to 50)
48
+
49
+ Create multiple entities of the same type in one call:
50
+
51
+ \`\`\`json
52
+ pinterest_bulk_create_entities({
53
+ "entityType": "${entityType}",
54
+ "adAccountId": "${adAccountId}",
55
+ "items": [
56
+ {
57
+ "name": "Campaign A",
58
+ "objective_type": "AWARENESS",
59
+ "daily_spend_cap": 50000000
60
+ },
61
+ {
62
+ "name": "Campaign B",
63
+ "objective_type": "CONVERSIONS",
64
+ "daily_spend_cap": 100000000
65
+ }
66
+ ]
67
+ })
68
+ \`\`\`
69
+
70
+ ---
71
+
72
+ ## Option 3: Bulk Update Entities (up to 50)
73
+
74
+ Update specific fields on multiple entities:
75
+
76
+ \`\`\`json
77
+ pinterest_bulk_update_entities({
78
+ "entityType": "${entityType}",
79
+ "adAccountId": "${adAccountId}",
80
+ "items": [
81
+ { "entityId": "ID_1", "data": { "budget": 150 } },
82
+ { "entityId": "ID_2", "data": { "budget": 250 } }
83
+ ]
84
+ })
85
+ \`\`\`
86
+
87
+ ---
88
+
89
+ ## Option 4: Bulk Bid Adjustment (ad groups only)
90
+
91
+ Safe read-modify-write bid adjustment:
92
+
93
+ \`\`\`json
94
+ pinterest_adjust_bids({
95
+ "adAccountId": "${adAccountId}",
96
+ "adjustments": [
97
+ { "adGroupId": "ADGROUP_ID_1", "bidPrice": 1.5 },
98
+ { "adGroupId": "ADGROUP_ID_2", "bidPrice": 2.0 }
99
+ ],
100
+ "reason": "Increase bids to improve delivery"
101
+ })
102
+ \`\`\`
103
+
104
+ ---
105
+
106
+ ## Tips for Bulk Operations
107
+
108
+ 1. **List first**: Use \`pinterest_list_entities\` to get entity IDs before bulk operations
109
+ 2. **Validate first**: Use \`pinterest_validate_entity\` to check payloads before bulk create
110
+ 3. **Status update is batched**: Pinterest accepts IDs array in one API call
111
+ 4. **Create/Update is sequential**: Processed concurrently (5 at a time) by the MCP tool
112
+ 5. **Max 50 items**: Per bulk create/update call (more = multiple calls)
113
+ 6. **Error handling**: Partial failures are reported — some may succeed while others fail
114
+
115
+ ## Workflow: Pause all campaigns → Adjust → Re-enable
116
+
117
+ \`\`\`
118
+ 1. pinterest_list_entities (get campaign IDs)
119
+ 2. pinterest_bulk_update_status (PAUSED all)
120
+ 3. pinterest_bulk_update_entities (adjust budgets/settings)
121
+ 4. pinterest_bulk_update_status (ACTIVE selected)
122
+ \`\`\`
123
+ `;
124
+ }
125
+ //# sourceMappingURL=bulk-operations-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-operations-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,4BAA4B,GAAW;IAClD,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EACT,2FAA2F;IAC7F,SAAS,EAAE;QACT;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAA6B;IAC5E,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,eAAe,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,UAAU,CAAC;IAElD,OAAO;;sBAEa,WAAW;oBACb,UAAU;;;;;;;;;;mBAUX,UAAU;oBACT,WAAW;;;;;;;;;;;;;;;;;;;mBAmBZ,UAAU;oBACT,WAAW;;;;;;;;;;;;;;;;;;;;;;;;mBAwBZ,UAAU;oBACT,WAAW;;;;;;;;;;;;;;;;oBAgBX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const campaignSetupWorkflowPrompt: Prompt;
3
+ export declare function getCampaignSetupWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=campaign-setup-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-setup-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,2BAA2B,EAAE,MAiBzC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAwFrF"}
@@ -0,0 +1,105 @@
1
+ export const campaignSetupWorkflowPrompt = {
2
+ name: "pinterest_campaign_setup_workflow",
3
+ description: "Step-by-step guide for creating a complete Pinterest Ads campaign structure (Campaign > Ad Group > Ad)",
4
+ arguments: [
5
+ {
6
+ name: "adAccountId",
7
+ description: "Pinterest Ad Account ID (e.g., 549755885175)",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "objective",
12
+ description: "Campaign objective (e.g., AWARENESS, CONSIDERATION, VIDEO_VIEW, CATALOG_SALES, CONVERSIONS, APP_INSTALL, SHOPPING)",
13
+ required: false,
14
+ },
15
+ ],
16
+ };
17
+ export function getCampaignSetupWorkflowMessage(args) {
18
+ const adAccountId = args?.adAccountId || "{adAccountId}";
19
+ const objective = args?.objective || "AWARENESS";
20
+ return `# Pinterest Campaign Setup Workflow
21
+
22
+ ## Prerequisites
23
+ - Ad Account ID: \`${adAccountId}\`
24
+ - Verify access: \`pinterest_list_advertisers\`
25
+
26
+ ## Step 1: Create Campaign
27
+
28
+ \`\`\`json
29
+ pinterest_create_entity({
30
+ "entityType": "campaign",
31
+ "adAccountId": "${adAccountId}",
32
+ "data": {
33
+ "name": "Your Campaign Name",
34
+ "objective_type": "${objective}",
35
+ "status": "ACTIVE",
36
+ "daily_spend_cap": 50000000
37
+ }
38
+ })
39
+ \`\`\`
40
+
41
+ **Campaign Objectives:** AWARENESS, CONSIDERATION, VIDEO_VIEW, CATALOG_SALES, CONVERSIONS, APP_INSTALL, SHOPPING
42
+
43
+ **Status values:** ACTIVE, PAUSED, ARCHIVED
44
+
45
+ ## Step 2: Create Ad Group
46
+
47
+ \`\`\`json
48
+ pinterest_create_entity({
49
+ "entityType": "adGroup",
50
+ "adAccountId": "${adAccountId}",
51
+ "data": {
52
+ "name": "Your Ad Group Name",
53
+ "campaign_id": "CAMPAIGN_ID_FROM_STEP_1",
54
+ "status": "ACTIVE",
55
+ "budget_in_micro_currency": 10000000,
56
+ "pacing_delivery_type": "STANDARD",
57
+ "bid_strategy_type": "AUTOMATIC_BID",
58
+ "start_time": "2026-04-01T00:00:00",
59
+ "targeting_spec": {
60
+ "age_bucket": ["35-44", "45-49"],
61
+ "gender": ["female"],
62
+ "geo": [{ "country": "US" }],
63
+ "interest": ["food", "fashion"]
64
+ }
65
+ }
66
+ })
67
+ \`\`\`
68
+
69
+ ## Step 3: Create Ad(s)
70
+
71
+ > ⚠️ **GOTCHA:** Ads reference Pinterest Pins by pin_id — create/upload the Pin first before creating the Ad.
72
+
73
+ \`\`\`json
74
+ pinterest_create_entity({
75
+ "entityType": "ad",
76
+ "adAccountId": "${adAccountId}",
77
+ "data": {
78
+ "name": "Your Ad Name",
79
+ "ad_group_id": "ADGROUP_ID_FROM_STEP_2",
80
+ "creative_type": "REGULAR",
81
+ "pin_id": "YOUR_PIN_ID",
82
+ "status": "ACTIVE"
83
+ }
84
+ })
85
+ \`\`\`
86
+
87
+ **Creative types:** REGULAR, VIDEO, SHOPPING, CAROUSEL
88
+
89
+ ## Step 4: Verify & Activate
90
+
91
+ 1. Review: \`pinterest_get_entity\` for each created entity
92
+ 2. Preview ad: \`pinterest_get_ad_preview\`
93
+ 3. Activate: \`pinterest_bulk_update_status\` with status: "ACTIVE"
94
+
95
+ ## Common Gotchas
96
+
97
+ - ⚠️ **GOTCHA: Pinterest budgets use micro-currency (1 USD = 1,000,000). $50/day → daily_spend_cap: 50000000**
98
+ - ⚠️ **GOTCHA: Ads reference Pinterest Pins by pin_id — create/upload the Pin first before creating the Ad**
99
+ - ⚠️ **GOTCHA: Status values are ACTIVE/PAUSED/ARCHIVED (not ENABLE/DISABLE)**
100
+ - ⚠️ Ad group budget (\`budget_in_micro_currency\`) must also be in micro-currency
101
+ - ⚠️ \`start_time\` and \`end_time\` use ISO 8601 datetime strings (e.g., "2026-04-01T00:00:00")
102
+ - ⚠️ Reporting has a 24-48h lag for finalized data
103
+ `;
104
+ }
105
+ //# sourceMappingURL=campaign-setup-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-setup-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,2BAA2B,GAAW;IACjD,IAAI,EAAE,mCAAmC;IACzC,WAAW,EACT,wGAAwG;IAC1G,SAAS,EAAE;QACT;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,oHAAoH;YACtH,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,IAA6B;IAC3E,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,eAAe,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,WAAW,CAAC;IAEjD,OAAO;;;qBAGY,WAAW;;;;;;;;oBAQZ,WAAW;;;yBAGN,SAAS;;;;;;;;;;;;;;;;oBAgBd,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;oBA0BX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B9B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const pinterestCreativeUploadWorkflowPrompt: Prompt;
3
+ export declare function getPinterestCreativeUploadWorkflowMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=creative-upload-workflow.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creative-upload-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/creative-upload-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,qCAAqC,EAAE,MAWnD,CAAC;AAEF,wBAAgB,yCAAyC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAmF/F"}
@@ -0,0 +1,95 @@
1
+ export const pinterestCreativeUploadWorkflowPrompt = {
2
+ name: "creative_upload_workflow",
3
+ description: "Step-by-step guide for uploading video creatives and creating Pinterest Ads. Image creatives reference a hosted image URL directly rather than uploading a file.",
4
+ arguments: [
5
+ {
6
+ name: "adAccountId",
7
+ description: "Pinterest Advertiser ID",
8
+ required: true,
9
+ },
10
+ ],
11
+ };
12
+ export function getPinterestCreativeUploadWorkflowMessage(args) {
13
+ const adAccountId = args?.adAccountId || "{adAccountId}";
14
+ return `# Pinterest Ads Creative Upload Workflow
15
+
16
+ ## Prerequisites
17
+ - Advertiser ID: \`${adAccountId}\`
18
+ - A publicly accessible URL for your video file (for image ads, a hosted image URL is used directly — Pinterest's \`/v5/media\` endpoint only accepts \`media_type="video"\`)
19
+
20
+ ## Overview
21
+ Pinterest creative workflow: Upload video → Create Ad Group → Create Ad with creative
22
+
23
+ ---
24
+
25
+ ## Step 1: Upload Video
26
+
27
+ \`\`\`json
28
+ pinterest_upload_video({
29
+ "adAccountId": "${adAccountId}",
30
+ "mediaUrl": "https://example.com/your-video.mp4",
31
+ "videoName": "Campaign Video"
32
+ })
33
+ \`\`\`
34
+
35
+ **Returns:** \`mediaId\`
36
+
37
+ ⚠️ **GOTCHA**: Video processing takes 20-120 seconds. The tool polls automatically (20s intervals, up to 10 min).
38
+ When \`status == "succeeded"\`, the video is ready.
39
+
40
+ **Video requirements:**
41
+ - Formats: MP4, MOV, AVI
42
+ - Max 500MB
43
+ - Min resolution: 540x960 (9:16), 960x540 (16:9), or 640x640 (1:1)
44
+ - Duration: 5-60 seconds for In-Feed ads
45
+
46
+ ## Step 2: Create Ad
47
+
48
+ \`\`\`json
49
+ pinterest_create_entity({
50
+ "entityType": "ad",
51
+ "adAccountId": "${adAccountId}",
52
+ "data": {
53
+ "adgroup_id": "{your_adgroup_id}",
54
+ "ad_name": "Your Ad Name",
55
+ "ad_format": "SINGLE_VIDEO",
56
+ "video_id": "{mediaId_from_step_1}",
57
+ "ad_text": "Your ad copy here",
58
+ "landing_page_url": "https://yoursite.com",
59
+ "call_to_action": "LEARN_MORE",
60
+ "status": "DISABLE"
61
+ }
62
+ })
63
+ \`\`\`
64
+
65
+ For image ads, pass \`image_url\` (a hosted URL) in the creative payload directly — no upload step.
66
+
67
+ ⚠️ **GOTCHA**: Pinterest ads go through a review process. Initial status should be DISABLE (paused) until ready to launch.
68
+
69
+ ## Step 3: Preview Ad
70
+
71
+ \`\`\`json
72
+ pinterest_get_ad_preview({
73
+ "adAccountId": "${adAccountId}",
74
+ "adId": "{ad_id_from_step_2}",
75
+ "adFormat": "FEED"
76
+ })
77
+ \`\`\`
78
+
79
+ ## Common Errors
80
+
81
+ | Error | Cause | Fix |
82
+ |-------|-------|-----|
83
+ | "Video processing failed" | Unsupported codec | Re-encode to H.264 MP4 |
84
+ | "Ad review rejected" | Policy violation | Review Pinterest ad policies |
85
+ | "processing timeout" | Slow processing | Re-check media status via GET /v5/media/{mediaId} |
86
+
87
+ ## Success Criteria
88
+ - [ ] Media uploaded (mediaId obtained and status succeeded)
89
+ - [ ] Ad created with DISABLE status
90
+ - [ ] Preview reviewed
91
+ - [ ] Status changed to ENABLE when ready to launch
92
+
93
+ `;
94
+ }
95
+ //# sourceMappingURL=creative-upload-workflow.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creative-upload-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/creative-upload-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qCAAqC,GAAW;IAC3D,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,kKAAkK;IACpK,SAAS,EAAE;QACT;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC;AAEF,MAAM,UAAU,yCAAyC,CAAC,IAA6B;IACrF,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,eAAe,CAAC;IAEzD,OAAO;;;qBAGY,WAAW;;;;;;;;;;;;oBAYZ,WAAW;;;;;;;;;;;;;;;;;;;;;;oBAsBX,WAAW;;;;;;;;;;;;;;;;;;;;;;oBAsBX,WAAW;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAC;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const crossPlatformCampaignSetupPrompt: Prompt;
3
+ export declare function getCrossPlatformCampaignSetupMessage(args?: Record<string, string>): string;
4
+ //# sourceMappingURL=cross-platform-campaign-setup.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-platform-campaign-setup.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAQjE,eAAO,MAAM,gCAAgC,EAAE,MAiB9C,CAAC;AAEF,wBAAgB,oCAAoC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA4R1F"}