@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,111 @@
1
+ export const pinterestTroubleshootEntityPrompt = {
2
+ name: "pinterest_troubleshoot_entity",
3
+ description: "Diagnostic workflow for troubleshooting Pinterest Ads entity issues",
4
+ arguments: [
5
+ {
6
+ name: "entityType",
7
+ description: "Entity type (campaign, adGroup, ad, creative)",
8
+ required: true,
9
+ },
10
+ {
11
+ name: "entityId",
12
+ description: "Numeric entity ID to troubleshoot",
13
+ required: true,
14
+ },
15
+ {
16
+ name: "adAccountId",
17
+ description: "Pinterest Advertiser ID",
18
+ required: true,
19
+ },
20
+ ],
21
+ };
22
+ export function getPinterestTroubleshootEntityMessage(args) {
23
+ const entityType = args?.entityType || "{entityType}";
24
+ const entityId = args?.entityId || "{entityId}";
25
+ const adAccountId = args?.adAccountId || "{adAccountId}";
26
+ return `# Pinterest Entity Troubleshoot Workflow
27
+
28
+ ## Target: ${entityType} ${entityId} (Advertiser: ${adAccountId})
29
+
30
+ ## Step 1: Fetch Entity Details
31
+
32
+ \`\`\`json
33
+ pinterest_get_entity({
34
+ "entityType": "${entityType}",
35
+ "adAccountId": "${adAccountId}",
36
+ "entityId": "${entityId}"
37
+ })
38
+ \`\`\`
39
+
40
+ Check: operation_status, primary_status, secondary_status, and any rejection reasons.
41
+
42
+ ## Step 2: Check Recent Performance
43
+
44
+ \`\`\`json
45
+ pinterest_get_report({
46
+ "adAccountId": "${adAccountId}",
47
+ "dimensions": ["campaign_id", "stat_time_day"],
48
+ "metrics": ["impressions", "clicks", "spend", "conversions"],
49
+ "startDate": "2026-02-01",
50
+ "endDate": "2026-03-07"
51
+ })
52
+ \`\`\`
53
+
54
+ ## Step 3: Check Parent Entity
55
+
56
+ If ad group or ad, check parent entity status:
57
+ \`\`\`json
58
+ pinterest_get_entity({
59
+ "entityType": "campaign",
60
+ "adAccountId": "${adAccountId}",
61
+ "entityId": "{parentCampaignId}"
62
+ })
63
+ \`\`\`
64
+
65
+ ## Common Issues
66
+
67
+ | Symptom | Likely Cause | Fix |
68
+ |---------|-------------|-----|
69
+ | No delivery | Entity PAUSED | Use \`pinterest_bulk_update_status\` with operationStatus: "ACTIVE" |
70
+ | No delivery, ACTIVE | Parent paused | Enable parent campaign or ad group |
71
+ | No delivery, all ACTIVE | Budget exhausted | Increase budget |
72
+ | No delivery, budget OK | Targeting too narrow | Check audience estimate |
73
+ | Ad under review | Pinterest ad review in progress | Allow 24-48h for review |
74
+ | Ad rejected | Policy violation | Review Pinterest creative guidelines |
75
+ | Video not playing | Video upload incomplete | Check video status in Creative Library |
76
+ | Low reach | Targeting too narrow | Broaden age, interests, or geos |
77
+
78
+ ## Step 4: Audience Estimate
79
+
80
+ \`\`\`json
81
+ pinterest_get_audience_estimate({
82
+ "adAccountId": "${adAccountId}",
83
+ "targetingConfig": { ... targeting from adGroup ... }
84
+ })
85
+ \`\`\`
86
+
87
+ ## Step 5: Validate Entity Payload
88
+
89
+ \`\`\`json
90
+ pinterest_validate_entity({
91
+ "entityType": "${entityType}",
92
+ "mode": "update",
93
+ "data": { ... current entity data ... }
94
+ })
95
+ \`\`\`
96
+
97
+ ## Status Update Tool
98
+
99
+ Pinterest uses a separate status endpoint — do NOT use \`pinterest_update_entity\` for status changes:
100
+
101
+ \`\`\`json
102
+ pinterest_bulk_update_status({
103
+ "entityType": "${entityType}",
104
+ "adAccountId": "${adAccountId}",
105
+ "entityIds": ["${entityId}"],
106
+ "operationStatus": "ACTIVE"
107
+ })
108
+ \`\`\`
109
+ `;
110
+ }
111
+ //# sourceMappingURL=troubleshoot-entity.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot-entity.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/troubleshoot-entity.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,iCAAiC,GAAW;IACvD,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,qEAAqE;IAClF,SAAS,EAAE;QACT;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC;AAEF,MAAM,UAAU,qCAAqC,CAAC,IAA6B;IACjF,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,YAAY,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,eAAe,CAAC;IAEzD,OAAO;;aAEI,UAAU,IAAI,QAAQ,iBAAiB,WAAW;;;;;;mBAM5C,UAAU;oBACT,WAAW;iBACd,QAAQ;;;;;;;;;;oBAUL,WAAW;;;;;;;;;;;;;;oBAcX,WAAW;;;;;;;;;;;;;;;;;;;;;;oBAsBX,WAAW;;;;;;;;;mBASZ,UAAU;;;;;;;;;;;;mBAYV,UAAU;oBACT,WAAW;mBACZ,QAAQ;;;;CAI1B,CAAC;AACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
2
+ export interface PromptDefinition {
3
+ prompt: Prompt;
4
+ generateMessage: (args?: Record<string, string>) => string;
5
+ }
6
+ export declare const promptRegistry: Map<string, PromptDefinition>;
7
+ export declare function getAllPrompts(): Prompt[];
8
+ export declare function getPromptDefinition(name: string): PromptDefinition | undefined;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/prompts/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AA8CjE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;CAC5D;AAED,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CA8EvD,CAAC;AAEH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE9E"}
@@ -0,0 +1,97 @@
1
+ import { campaignSetupWorkflowPrompt, getCampaignSetupWorkflowMessage, } from "./definitions/campaign-setup-workflow.prompt.js";
2
+ import { bulkOperationsWorkflowPrompt, getBulkOperationsWorkflowMessage, } from "./definitions/bulk-operations-workflow.prompt.js";
3
+ import { pinterestToolSchemaExplorationPrompt, getPinterestToolSchemaExplorationMessage, } from "./definitions/tool-schema-exploration.prompt.js";
4
+ import { pinterestTroubleshootEntityPrompt, getPinterestTroubleshootEntityMessage, } from "./definitions/troubleshoot-entity.prompt.js";
5
+ import { pinterestReportingWorkflowPrompt, getPinterestReportingWorkflowMessage, } from "./definitions/reporting-workflow.prompt.js";
6
+ import { pinterestEntityUpdateWorkflowPrompt, getPinterestEntityUpdateWorkflowMessage, } from "./definitions/entity-update-workflow.prompt.js";
7
+ import { pinterestTargetingDiscoveryWorkflowPrompt, getPinterestTargetingDiscoveryWorkflowMessage, } from "./definitions/targeting-discovery-workflow.prompt.js";
8
+ import { pinterestEntityDuplicationWorkflowPrompt, getPinterestEntityDuplicationWorkflowMessage, } from "./definitions/entity-duplication-workflow.prompt.js";
9
+ import { crossPlatformPerformancePrompt, getCrossPlatformPerformanceMessage, } from "./definitions/cross-platform-performance.prompt.js";
10
+ import { crossPlatformCampaignSetupPrompt, getCrossPlatformCampaignSetupMessage, } from "./definitions/cross-platform-campaign-setup.prompt.js";
11
+ import { pinterestCreativeUploadWorkflowPrompt, getPinterestCreativeUploadWorkflowMessage, } from "./definitions/creative-upload-workflow.prompt.js";
12
+ export const promptRegistry = new Map([
13
+ [
14
+ campaignSetupWorkflowPrompt.name,
15
+ {
16
+ prompt: campaignSetupWorkflowPrompt,
17
+ generateMessage: getCampaignSetupWorkflowMessage,
18
+ },
19
+ ],
20
+ [
21
+ bulkOperationsWorkflowPrompt.name,
22
+ {
23
+ prompt: bulkOperationsWorkflowPrompt,
24
+ generateMessage: getBulkOperationsWorkflowMessage,
25
+ },
26
+ ],
27
+ [
28
+ pinterestToolSchemaExplorationPrompt.name,
29
+ {
30
+ prompt: pinterestToolSchemaExplorationPrompt,
31
+ generateMessage: getPinterestToolSchemaExplorationMessage,
32
+ },
33
+ ],
34
+ [
35
+ pinterestTroubleshootEntityPrompt.name,
36
+ {
37
+ prompt: pinterestTroubleshootEntityPrompt,
38
+ generateMessage: getPinterestTroubleshootEntityMessage,
39
+ },
40
+ ],
41
+ [
42
+ pinterestReportingWorkflowPrompt.name,
43
+ {
44
+ prompt: pinterestReportingWorkflowPrompt,
45
+ generateMessage: getPinterestReportingWorkflowMessage,
46
+ },
47
+ ],
48
+ [
49
+ pinterestEntityUpdateWorkflowPrompt.name,
50
+ {
51
+ prompt: pinterestEntityUpdateWorkflowPrompt,
52
+ generateMessage: getPinterestEntityUpdateWorkflowMessage,
53
+ },
54
+ ],
55
+ [
56
+ pinterestTargetingDiscoveryWorkflowPrompt.name,
57
+ {
58
+ prompt: pinterestTargetingDiscoveryWorkflowPrompt,
59
+ generateMessage: getPinterestTargetingDiscoveryWorkflowMessage,
60
+ },
61
+ ],
62
+ [
63
+ pinterestEntityDuplicationWorkflowPrompt.name,
64
+ {
65
+ prompt: pinterestEntityDuplicationWorkflowPrompt,
66
+ generateMessage: getPinterestEntityDuplicationWorkflowMessage,
67
+ },
68
+ ],
69
+ [
70
+ crossPlatformPerformancePrompt.name,
71
+ {
72
+ prompt: crossPlatformPerformancePrompt,
73
+ generateMessage: getCrossPlatformPerformanceMessage,
74
+ },
75
+ ],
76
+ [
77
+ crossPlatformCampaignSetupPrompt.name,
78
+ {
79
+ prompt: crossPlatformCampaignSetupPrompt,
80
+ generateMessage: getCrossPlatformCampaignSetupMessage,
81
+ },
82
+ ],
83
+ [
84
+ pinterestCreativeUploadWorkflowPrompt.name,
85
+ {
86
+ prompt: pinterestCreativeUploadWorkflowPrompt,
87
+ generateMessage: getPinterestCreativeUploadWorkflowMessage,
88
+ },
89
+ ],
90
+ ]);
91
+ export function getAllPrompts() {
92
+ return Array.from(promptRegistry.values()).map((def) => def.prompt);
93
+ }
94
+ export function getPromptDefinition(name) {
95
+ return promptRegistry.get(name);
96
+ }
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/prompts/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EACL,oCAAoC,EACpC,wCAAwC,GACzC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,iCAAiC,EACjC,qCAAqC,GACtC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,mCAAmC,EACnC,uCAAuC,GACxC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,yCAAyC,EACzC,6CAA6C,GAC9C,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EACL,wCAAwC,EACxC,4CAA4C,GAC7C,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,qCAAqC,EACrC,yCAAyC,GAC1C,MAAM,kDAAkD,CAAC;AAO1D,MAAM,CAAC,MAAM,cAAc,GAAkC,IAAI,GAAG,CAAC;IACnE;QACE,2BAA2B,CAAC,IAAI;QAChC;YACE,MAAM,EAAE,2BAA2B;YACnC,eAAe,EAAE,+BAA+B;SACjD;KACF;IACD;QACE,4BAA4B,CAAC,IAAI;QACjC;YACE,MAAM,EAAE,4BAA4B;YACpC,eAAe,EAAE,gCAAgC;SAClD;KACF;IACD;QACE,oCAAoC,CAAC,IAAI;QACzC;YACE,MAAM,EAAE,oCAAoC;YAC5C,eAAe,EAAE,wCAAwC;SAC1D;KACF;IACD;QACE,iCAAiC,CAAC,IAAI;QACtC;YACE,MAAM,EAAE,iCAAiC;YACzC,eAAe,EAAE,qCAAqC;SACvD;KACF;IACD;QACE,gCAAgC,CAAC,IAAI;QACrC;YACE,MAAM,EAAE,gCAAgC;YACxC,eAAe,EAAE,oCAAoC;SACtD;KACF;IACD;QACE,mCAAmC,CAAC,IAAI;QACxC;YACE,MAAM,EAAE,mCAAmC;YAC3C,eAAe,EAAE,uCAAuC;SACzD;KACF;IACD;QACE,yCAAyC,CAAC,IAAI;QAC9C;YACE,MAAM,EAAE,yCAAyC;YACjD,eAAe,EAAE,6CAA6C;SAC/D;KACF;IACD;QACE,wCAAwC,CAAC,IAAI;QAC7C;YACE,MAAM,EAAE,wCAAwC;YAChD,eAAe,EAAE,4CAA4C;SAC9D;KACF;IACD;QACE,8BAA8B,CAAC,IAAI;QACnC;YACE,MAAM,EAAE,8BAA8B;YACtC,eAAe,EAAE,kCAAkC;SACpD;KACF;IACD;QACE,gCAAgC,CAAC,IAAI;QACrC;YACE,MAAM,EAAE,gCAAgC;YACxC,eAAe,EAAE,oCAAoC;SACtD;KACF;IACD;QACE,qCAAqC,CAAC,IAAI;QAC1C;YACE,MAAM,EAAE,qCAAqC;YAC7C,eAAe,EAAE,yCAAyC;SAC3D;KACF;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
@@ -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":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8K5C,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EAQ1C,CAAC;AAEJ,eAAO,MAAM,wBAAwB,EAAE,QAMtC,CAAC"}
@@ -0,0 +1,180 @@
1
+ import { getSupportedEntityTypes, } from "../../tools/utils/entity-mapping.js";
2
+ const ENTITY_EXAMPLE_CONTENT = {
3
+ campaign: `# Pinterest Campaign Examples
4
+
5
+ ## Create an Awareness Campaign (daily budget $50/day)
6
+ \`\`\`json
7
+ {
8
+ "entityType": "campaign",
9
+ "adAccountId": "549755885175",
10
+ "data": {
11
+ "name": "Spring Sale Awareness",
12
+ "objective_type": "AWARENESS",
13
+ "status": "ACTIVE",
14
+ "daily_spend_cap": 50000000
15
+ }
16
+ }
17
+ \`\`\`
18
+
19
+ ## Create a Conversions Campaign (lifetime budget)
20
+ \`\`\`json
21
+ {
22
+ "entityType": "campaign",
23
+ "adAccountId": "549755885175",
24
+ "data": {
25
+ "name": "Q2 2026 Conversions",
26
+ "objective_type": "CONVERSIONS",
27
+ "status": "ACTIVE",
28
+ "lifetime_spend_cap": 1000000000
29
+ }
30
+ }
31
+ \`\`\`
32
+
33
+ ## Pause a Campaign
34
+ \`\`\`json
35
+ {
36
+ "entityType": "campaign",
37
+ "adAccountId": "549755885175",
38
+ "entityId": "549755885175",
39
+ "data": {
40
+ "status": "PAUSED"
41
+ }
42
+ }
43
+ \`\`\`
44
+
45
+ > **Budget note:** Pinterest uses micro-currency. $50/day = \`daily_spend_cap: 50000000\`
46
+ `,
47
+ adGroup: `# Pinterest Ad Group Examples
48
+
49
+ ## Create an Ad Group with Audience Targeting
50
+ \`\`\`json
51
+ {
52
+ "entityType": "adGroup",
53
+ "adAccountId": "549755885175",
54
+ "data": {
55
+ "name": "Women 25-34 US",
56
+ "campaign_id": "549755885175",
57
+ "status": "ACTIVE",
58
+ "budget_in_micro_currency": 10000000,
59
+ "pacing_delivery_type": "STANDARD",
60
+ "bid_strategy_type": "AUTOMATIC_BID",
61
+ "start_time": "2026-04-01T00:00:00",
62
+ "targeting_spec": {
63
+ "age_bucket": ["35-44", "45-49"],
64
+ "gender": ["female"],
65
+ "geo": [{ "country": "US" }],
66
+ "interest": ["fashion", "beauty", "lifestyle"]
67
+ }
68
+ }
69
+ }
70
+ \`\`\`
71
+
72
+ ## Create an Always-On Ad Group (no end time)
73
+ \`\`\`json
74
+ {
75
+ "entityType": "adGroup",
76
+ "adAccountId": "549755885175",
77
+ "data": {
78
+ "name": "Retargeting - Site Visitors",
79
+ "campaign_id": "549755885175",
80
+ "status": "ACTIVE",
81
+ "budget_in_micro_currency": 5000000,
82
+ "pacing_delivery_type": "STANDARD",
83
+ "bid_strategy_type": "MAX_BID",
84
+ "start_time": "2026-04-01T00:00:00"
85
+ }
86
+ }
87
+ \`\`\`
88
+ `,
89
+ ad: `# Pinterest Ad Examples
90
+
91
+ ## Create a Regular (static image) Ad
92
+ \`\`\`json
93
+ {
94
+ "entityType": "ad",
95
+ "adAccountId": "549755885175",
96
+ "data": {
97
+ "name": "Spring Pin Ad",
98
+ "ad_group_id": "2680060704746",
99
+ "creative_type": "REGULAR",
100
+ "pin_id": "1234567890",
101
+ "status": "ACTIVE"
102
+ }
103
+ }
104
+ \`\`\`
105
+
106
+ ## Create a Video Ad
107
+ \`\`\`json
108
+ {
109
+ "entityType": "ad",
110
+ "adAccountId": "549755885175",
111
+ "data": {
112
+ "name": "Product Video Ad",
113
+ "ad_group_id": "2680060704746",
114
+ "creative_type": "VIDEO",
115
+ "pin_id": "9876543210",
116
+ "status": "ACTIVE"
117
+ }
118
+ }
119
+ \`\`\`
120
+
121
+ > **Note:** Ads reference Pinterest Pins by pin_id. Create/upload the Pin before creating the Ad.
122
+ `,
123
+ creative: `# Pinterest Creative (Pin) Examples
124
+
125
+ ## Create an Image Creative
126
+ \`\`\`json
127
+ {
128
+ "entityType": "creative",
129
+ "adAccountId": "549755885175",
130
+ "data": {
131
+ "title": "Spring Sale - 50% Off",
132
+ "description": "Shop our Spring Sale collection — up to 50% off select items",
133
+ "link": "https://example.com/spring-sale",
134
+ "media": {
135
+ "source_type": "image_url",
136
+ "url": "https://example.com/spring-banner.jpg"
137
+ }
138
+ }
139
+ }
140
+ \`\`\`
141
+
142
+ ## Create a Video Creative
143
+ \`\`\`json
144
+ {
145
+ "entityType": "creative",
146
+ "adAccountId": "549755885175",
147
+ "data": {
148
+ "title": "New Collection Highlight",
149
+ "description": "Discover our newest arrivals for the season",
150
+ "link": "https://example.com/new-arrivals",
151
+ "media": {
152
+ "source_type": "video_url",
153
+ "url": "https://example.com/product-video.mp4"
154
+ }
155
+ }
156
+ }
157
+ \`\`\`
158
+ `,
159
+ };
160
+ function buildAllExamplesMarkdown() {
161
+ return getSupportedEntityTypes()
162
+ .map((t) => ENTITY_EXAMPLE_CONTENT[t])
163
+ .join("\n\n---\n\n");
164
+ }
165
+ export const entityExampleResources = getSupportedEntityTypes().map((entityType) => ({
166
+ uri: `entity-examples://pinterest/${entityType}`,
167
+ name: `Pinterest ${entityType} Examples`,
168
+ description: `Example payloads for creating and updating Pinterest ${entityType} entities`,
169
+ mimeType: "text/markdown",
170
+ getContent: () => ENTITY_EXAMPLE_CONTENT[entityType] ??
171
+ `# Pinterest ${entityType} Examples\n\nNo examples available.\n`,
172
+ }));
173
+ export const entityExampleAllResource = {
174
+ uri: "entity-examples://pinterest/all",
175
+ name: "Pinterest All Entity Examples",
176
+ description: "Combined example payloads for all Pinterest Ads entity types",
177
+ mimeType: "text/markdown",
178
+ getContent: buildAllExamplesMarkdown,
179
+ };
180
+ //# 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":"AAOA,OAAO,EACL,uBAAuB,GAExB,MAAM,qCAAqC,CAAC;AAE7C,MAAM,sBAAsB,GAAwC;IAClE,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CX;IAEC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCV;IAEC,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCL;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCX;CACA,CAAC;AAEF,SAAS,wBAAwB;IAC/B,OAAO,uBAAuB,EAAE;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;SACrC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAe,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/F,GAAG,EAAE,+BAA+B,UAAU,EAAE;IAChD,IAAI,EAAE,aAAa,UAAU,WAAW;IACxC,WAAW,EAAE,wDAAwD,UAAU,WAAW;IAC1F,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CACf,sBAAsB,CAAC,UAAU,CAAC;QAClC,eAAe,UAAU,uCAAuC;CACnE,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,wBAAwB,GAAa;IAChD,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,8DAA8D;IAC3E,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,wBAAwB;CACrC,CAAC"}
@@ -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":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqI5C,eAAO,MAAM,uBAAuB,EAAE,QAUrC,CAAC"}
@@ -0,0 +1,140 @@
1
+ let cachedContent;
2
+ function formatEntityHierarchyMarkdown() {
3
+ return `# Pinterest Ads Entity Hierarchy
4
+
5
+ ## Relationship Diagram
6
+
7
+ \`\`\`
8
+ Advertiser (ad_account_id: XXXXXXXXXX)
9
+ ├── Campaign (campaign_id)
10
+ │ └── Ad Group (adgroup_id)
11
+ │ └── Ad (ad_id) ← references Creative
12
+ └── Creative (creative_id, reusable across ads)
13
+ \`\`\`
14
+
15
+ ## Entity Types (4 total)
16
+
17
+ | Entity Type | List Endpoint | Create Endpoint | ID Field |
18
+ |-------------|---------------|-----------------|----------|
19
+ | **campaign** | \`GET /v5/ad_accounts/{ad_account_id}/campaigns\` | \`POST /v5/ad_accounts/{ad_account_id}/campaigns\` | id |
20
+ | **adGroup** | \`GET /v5/ad_accounts/{ad_account_id}/ad_groups\` | \`POST /v5/ad_accounts/{ad_account_id}/ad_groups\` | id |
21
+ | **ad** | \`GET /v5/ad_accounts/{ad_account_id}/ads\` | \`POST /v5/ad_accounts/{ad_account_id}/ads\` | id |
22
+ | **creative** | \`GET /v5/pins/{pin_id}\` | \`POST /v5/pins\` | id |
23
+
24
+ ## Key Relationships
25
+
26
+ ### Core Hierarchy: Advertiser → Campaign → Ad Group → Ad
27
+ - A campaign has one or more ad groups.
28
+ - An ad group has one or more ads.
29
+ - An ad references creative assets (video_id or image_ids).
30
+
31
+ ### Reusable Entities
32
+ - **Creatives** can be referenced by multiple ads within the same advertiser.
33
+
34
+ ## Creation Order
35
+
36
+ Full campaign structure (top-down):
37
+
38
+ 1. **Advertiser** — pre-exists; discover with \`pinterest_list_ad_accounts\`
39
+ 2. **Creative(s)** — optional; can upload via Creative Library or reference video/image IDs
40
+ 3. **Campaign** — requires \`campaign_name\`, \`objective_type\`, \`budget_mode\`, \`budget\`
41
+ 4. **Ad Group(s)** — requires \`campaign_id\`, \`adgroup_name\`, \`placement_type\`, \`budget\`
42
+ 5. **Ad(s)** — requires \`adgroup_id\`, \`ad_name\`, \`creative_type\`, creative assets
43
+
44
+ ## Pinterest API Patterns
45
+
46
+ ### Read: GET with ad_account_id in URL path
47
+ \`\`\`
48
+ GET /v5/ad_accounts/123/campaigns?page_size=25&bookmark=<cursor>
49
+ Authorization: Bearer <token>
50
+ \`\`\`
51
+
52
+ ### Create: POST with entity fields in JSON body
53
+ \`\`\`
54
+ POST /v5/ad_accounts/123/campaigns
55
+ { "name": "My Campaign", "objective_type": "TRAFFIC", "status": "ACTIVE", ... }
56
+ \`\`\`
57
+
58
+ ### Update: PATCH with changed fields in JSON body
59
+ \`\`\`
60
+ PATCH /v5/ad_accounts/123/campaigns
61
+ { "items": [{ "id": "456", "name": "Updated Name", "status": "PAUSED" }] }
62
+ \`\`\`
63
+
64
+ ### Delete: DELETE with IDs in query params
65
+ \`\`\`
66
+ DELETE /v5/ad_accounts/123/campaigns?campaign_ids=456&campaign_ids=789
67
+ \`\`\`
68
+
69
+ ### Response Shape
70
+ List responses use cursor-based pagination:
71
+ \`\`\`json
72
+ {
73
+ "items": [...],
74
+ "bookmark": "<next_cursor>"
75
+ }
76
+ \`\`\`
77
+ - \`bookmark\` is absent when there are no more pages
78
+ - Single-entity responses return the entity object directly
79
+
80
+ ## Pagination
81
+
82
+ Pinterest uses cursor-based pagination (NOT page-number based):
83
+ - \`page_size\` — items per page (default 25, max 250)
84
+ - \`bookmark\` — cursor token for next page (pass from previous response)
85
+ - Response: no \`bookmark\` = last page
86
+
87
+ ## Available Tools Summary
88
+
89
+ | Tool | Purpose | Batch? |
90
+ |------|---------|--------|
91
+ | \`pinterest_list_entities\` | List entities with filters | |
92
+ | \`pinterest_get_entity\` | Get single entity | |
93
+ | \`pinterest_create_entity\` | Create single entity | |
94
+ | \`pinterest_update_entity\` | Update single entity | |
95
+ | \`pinterest_delete_entity\` | Delete entities | ✓ |
96
+ | \`pinterest_list_ad_accounts\` | List accessible advertisers | |
97
+ | \`pinterest_get_report\` | Async report with polling | |
98
+ | \`pinterest_get_report_breakdowns\` | Report with breakdown dimensions | |
99
+ | \`pinterest_bulk_update_status\` | Batch status update | ✓ |
100
+ | \`pinterest_bulk_create_entities\` | Batch entity creation | ✓ |
101
+ | \`pinterest_bulk_update_entities\` | Batch entity updates | ✓ |
102
+ | \`pinterest_adjust_bids\` | Batch bid adjustment | ✓ |
103
+ | \`pinterest_search_targeting\` | Search targeting options | |
104
+ | \`pinterest_get_targeting_options\` | Browse targeting categories | |
105
+ | \`pinterest_duplicate_entity\` | Duplicate campaign/adGroup/ad | |
106
+ | \`pinterest_get_audience_estimate\` | Audience size estimation | |
107
+ | \`pinterest_get_ad_preview\` | Ad preview data | |
108
+ | \`pinterest_validate_entity\` | Client-side payload validation | |
109
+
110
+ ## Budget Notes
111
+
112
+ - Budget values are in the advertiser's account currency (no cents conversion)
113
+ - \`budget_mode\`: BUDGET_MODE_DAY (daily) or BUDGET_MODE_TOTAL (lifetime)
114
+ - Minimum budget varies by objective and market
115
+
116
+ ## Campaign Objectives
117
+
118
+ | Objective | Use Case |
119
+ |-----------|----------|
120
+ | TRAFFIC | Drive website/app traffic |
121
+ | APP_INSTALLS | Drive app downloads |
122
+ | CONVERSIONS | Optimize for conversion events |
123
+ | AWARENESS | Brand awareness / reach |
124
+ | VIDEO_VIEWS | Maximize video plays |
125
+ | LEAD_GENERATION | In-app lead forms |
126
+ | CATALOG_SALES | Dynamic product ads |
127
+ | COMMUNITY_INTERACTION | Profile visits, follows |
128
+ `;
129
+ }
130
+ export const entityHierarchyResource = {
131
+ uri: "entity-hierarchy://pinterest/all",
132
+ name: "Pinterest Entity Hierarchy",
133
+ description: "Parent-child relationships between Pinterest Ads entities, API patterns, and creation ordering",
134
+ mimeType: "text/markdown",
135
+ getContent: () => {
136
+ cachedContent ??= formatEntityHierarchyMarkdown();
137
+ return cachedContent;
138
+ },
139
+ };
140
+ //# sourceMappingURL=entity-hierarchy.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAQA,IAAI,aAAiC,CAAC;AAEtC,SAAS,6BAA6B;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6HR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,kCAAkC;IACvC,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,gGAAgG;IAClG,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,6BAA6B,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entitySchemaResources: Resource[];
3
+ export declare const entitySchemaAllResource: Resource;
4
+ //# sourceMappingURL=entity-schemas.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schemas.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2H5C,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAMzC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,QAMrC,CAAC"}