@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,238 @@
1
+ import { executeBulkConcurrent, McpError, JsonRpcErrorCode, } from "@cesteral/shared";
2
+ import { getEntityConfig, interpolatePath, } from "../../mcp-server/tools/utils/entity-mapping.js";
3
+ export class PinterestService {
4
+ rateLimiter;
5
+ httpClient;
6
+ logger;
7
+ constructor(rateLimiter, httpClient, logger) {
8
+ this.rateLimiter = rateLimiter;
9
+ this.httpClient = httpClient;
10
+ this.logger = logger;
11
+ }
12
+ get client() {
13
+ return this.httpClient;
14
+ }
15
+ async listEntities(entityType, filters, bookmark, pageSize = 25, context) {
16
+ const config = getEntityConfig(entityType);
17
+ const path = interpolatePath(config.listPath, { adAccountId: filters.adAccountId });
18
+ const params = { page_size: String(pageSize) };
19
+ if (bookmark)
20
+ params.bookmark = bookmark;
21
+ if (filters.campaignId)
22
+ params.campaign_id = filters.campaignId;
23
+ if (filters.adGroupId)
24
+ params.ad_group_id = filters.adGroupId;
25
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
26
+ const data = (await this.httpClient.get(path, params, context));
27
+ return {
28
+ entities: (data?.items ?? []),
29
+ pageInfo: { bookmark: data?.bookmark ?? null },
30
+ };
31
+ }
32
+ async getEntity(entityType, filters, entityId, context) {
33
+ const config = getEntityConfig(entityType);
34
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
35
+ if (config.getPath) {
36
+ const path = interpolatePath(config.getPath, {
37
+ adAccountId: filters.adAccountId,
38
+ entityId,
39
+ });
40
+ const result = (await this.httpClient.get(path, {}, context));
41
+ if (!("items" in result)) {
42
+ return result;
43
+ }
44
+ const list = result.items ?? [];
45
+ const entity = list.find((e) => e[config.idField] === entityId);
46
+ if (!entity) {
47
+ throw new McpError(JsonRpcErrorCode.NotFound, `${config.displayName} with ID ${entityId} not found`);
48
+ }
49
+ return entity;
50
+ }
51
+ const listPath = interpolatePath(config.listPath, {
52
+ adAccountId: filters.adAccountId,
53
+ });
54
+ const data = (await this.httpClient.get(listPath, { [config.idField]: entityId, page_size: "1" }, context));
55
+ const list = data?.items ?? [];
56
+ if (list.length === 0) {
57
+ throw new McpError(JsonRpcErrorCode.NotFound, `${config.displayName} with ID ${entityId} not found`);
58
+ }
59
+ return list[0];
60
+ }
61
+ async createEntity(entityType, filters, body, context) {
62
+ const config = getEntityConfig(entityType);
63
+ const path = interpolatePath(config.createPath, { adAccountId: filters.adAccountId });
64
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
65
+ const data = (await this.httpClient.post(path, [body], context));
66
+ return (data?.items ?? [])[0];
67
+ }
68
+ async updateEntity(entityType, filters, entityId, updates, context) {
69
+ const config = getEntityConfig(entityType);
70
+ const path = interpolatePath(config.updatePath, { adAccountId: filters.adAccountId, entityId });
71
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
72
+ const isSingleEntity = config.updatePath.includes("{entityId}");
73
+ if (isSingleEntity) {
74
+ return this.httpClient.patch(path, updates, context);
75
+ }
76
+ const data = (await this.httpClient.patch(path, [{ id: entityId, ...updates }], context));
77
+ return (data?.items ?? [])[0];
78
+ }
79
+ async deleteEntity(entityType, filters, entityIds, context) {
80
+ const config = getEntityConfig(entityType);
81
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
82
+ if (config.deletePath.includes("{entityId}")) {
83
+ const results = await Promise.all(entityIds.map((id) => {
84
+ const path = interpolatePath(config.deletePath, {
85
+ adAccountId: filters.adAccountId,
86
+ entityId: id,
87
+ });
88
+ return this.httpClient.delete(path, {}, context);
89
+ }));
90
+ return results.length === 1 ? results[0] : results;
91
+ }
92
+ const path = interpolatePath(config.deletePath, { adAccountId: filters.adAccountId });
93
+ return this.httpClient.delete(path, { [config.deleteIdsParam]: entityIds.join(",") }, context);
94
+ }
95
+ async updateEntityStatus(entityType, filters, entityIds, status, context) {
96
+ return Promise.all(entityIds.map((id) => this.updateEntity(entityType, filters, id, { status }, context)));
97
+ }
98
+ async listAdAccounts(context) {
99
+ await this.rateLimiter.consume("pinterest:default");
100
+ const response = (await this.httpClient.get("/v5/ad_accounts", {}, context));
101
+ const entities = Array.isArray(response.items) ? response.items : [];
102
+ const nextCursor = typeof response.bookmark === "string" ? response.bookmark : undefined;
103
+ return { entities, nextCursor };
104
+ }
105
+ async duplicateEntity(entityType, filters, entityId, options, context) {
106
+ const config = getEntityConfig(entityType);
107
+ if (!config.supportsDuplicate) {
108
+ this.logger.debug({ entityType }, "Duplicate skipped: entity type does not support duplication");
109
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Entity type ${entityType} does not support duplication`);
110
+ }
111
+ const source = (await this.getEntity(entityType, filters, entityId, context));
112
+ const SYSTEM_FIELDS = [
113
+ "id",
114
+ "created_time",
115
+ "updated_time",
116
+ "ad_account_id",
117
+ "pin_count",
118
+ "view_tags",
119
+ ];
120
+ const body = {};
121
+ for (const [key, val] of Object.entries(source)) {
122
+ if (!SYSTEM_FIELDS.includes(key)) {
123
+ body[key] = val;
124
+ }
125
+ }
126
+ if (options?.name)
127
+ body.name = options.name;
128
+ if (options?.campaign_name)
129
+ body.campaign_name = options.campaign_name;
130
+ Object.assign(body, options);
131
+ return this.createEntity(entityType, filters, body, context);
132
+ }
133
+ async adjustBids(filters, adjustments, context) {
134
+ const results = [];
135
+ for (const adjustment of adjustments) {
136
+ try {
137
+ const entity = await this.getEntity("adGroup", filters, adjustment.adGroupId, context);
138
+ const previousBid = entity.bid_in_micro_currency != null ? Number(entity.bid_in_micro_currency) : undefined;
139
+ await this.updateEntity("adGroup", filters, adjustment.adGroupId, {
140
+ bid_in_micro_currency: adjustment.bidPrice,
141
+ }, context);
142
+ results.push({
143
+ adGroupId: adjustment.adGroupId,
144
+ success: true,
145
+ previousBid,
146
+ newBid: adjustment.bidPrice,
147
+ });
148
+ }
149
+ catch (error) {
150
+ results.push({
151
+ adGroupId: adjustment.adGroupId,
152
+ success: false,
153
+ error: error instanceof Error ? error.message : String(error),
154
+ });
155
+ }
156
+ }
157
+ return { results };
158
+ }
159
+ async bulkCreateEntities(entityType, filters, items, context) {
160
+ const results = await executeBulkConcurrent(items, async (data) => {
161
+ return this.createEntity(entityType, filters, data, context);
162
+ }, { logger: this.logger });
163
+ return { results };
164
+ }
165
+ async bulkUpdateEntities(entityType, filters, items, context) {
166
+ const bulkResults = await executeBulkConcurrent(items, async (item) => {
167
+ return this.updateEntity(entityType, filters, item.entityId, item.data, context);
168
+ }, { logger: this.logger });
169
+ return {
170
+ results: bulkResults.map((r, i) => ({
171
+ entityId: items[i].entityId,
172
+ success: r.success,
173
+ error: r.error,
174
+ })),
175
+ };
176
+ }
177
+ async bulkUpdateStatus(entityType, filters, entityIds, status, context) {
178
+ this.logger.debug({ entityType, count: entityIds.length, status }, "Bulk status update");
179
+ const bulkResults = await executeBulkConcurrent(entityIds, async (entityId) => {
180
+ return this.updateEntity(entityType, filters, entityId, { status }, context);
181
+ }, { logger: this.logger });
182
+ return {
183
+ results: bulkResults.map((r, i) => ({
184
+ entityId: entityIds[i],
185
+ success: r.success,
186
+ error: r.error,
187
+ })),
188
+ };
189
+ }
190
+ async searchTargeting(targetingType, query, limit = 20, context) {
191
+ await this.rateLimiter.consume("pinterest:default");
192
+ const params = {
193
+ count: String(limit),
194
+ };
195
+ if (query) {
196
+ params.keyword = query;
197
+ }
198
+ return this.httpClient.get(`/v5/targeting_options/${targetingType}`, params, context);
199
+ }
200
+ async getTargetingOptions(targetingType, context) {
201
+ await this.rateLimiter.consume("pinterest:default");
202
+ if (!targetingType) {
203
+ return {
204
+ targeting_types: [
205
+ "APPTYPE",
206
+ "GENDER",
207
+ "LOCALE",
208
+ "AGE_BUCKET",
209
+ "LOCATION",
210
+ "GEO",
211
+ "INTEREST",
212
+ "KEYWORD",
213
+ "AUDIENCE_INCLUDE",
214
+ "AUDIENCE_EXCLUDE",
215
+ ],
216
+ };
217
+ }
218
+ return this.httpClient.get(`/v5/targeting_options/${targetingType}`, {}, context);
219
+ }
220
+ async getAudienceEstimate(filters, targetingConfig, context) {
221
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
222
+ const path = `/v5/ad_accounts/${filters.adAccountId}/audience_sizing`;
223
+ const params = {
224
+ targeting_spec: JSON.stringify(targetingConfig),
225
+ };
226
+ return this.httpClient.get(path, params, context);
227
+ }
228
+ async getAdPreviews(filters, adId, adFormat, context) {
229
+ await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
230
+ const params = { ad_id: adId };
231
+ if (adFormat) {
232
+ params.ad_format = adFormat;
233
+ }
234
+ const path = `/v5/ad_accounts/${filters.adAccountId}/ads/previews`;
235
+ return this.httpClient.get(path, params, context);
236
+ }
237
+ }
238
+ //# sourceMappingURL=pinterest-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinterest-service.js","sourceRoot":"","sources":["../../../src/services/pinterest/pinterest-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Logger } from "pino";
2
+ import type { PinterestAuthAdapter } from "../auth/pinterest-auth-adapter.js";
3
+ import type { RateLimiter } from "@cesteral/shared";
4
+ import { ReportCsvStore, SessionServiceStore } from "@cesteral/shared";
5
+ export { SessionServiceStore } from "@cesteral/shared";
6
+ import { PinterestService } from "./pinterest/pinterest-service.js";
7
+ import { PinterestReportingService } from "./pinterest/pinterest-reporting-service.js";
8
+ export interface SessionServices {
9
+ pinterestService: PinterestService;
10
+ pinterestReportingService: PinterestReportingService;
11
+ }
12
+ export interface PinterestSessionConfig {
13
+ baseUrl: string;
14
+ apiVersion: string;
15
+ reportPollIntervalMs: number;
16
+ reportMaxPollAttempts: number;
17
+ }
18
+ export declare function createSessionServices(authAdapter: PinterestAuthAdapter, config: PinterestSessionConfig, logger: Logger, rateLimiter: RateLimiter): SessionServices;
19
+ export declare const sessionServiceStore: SessionServiceStore<SessionServices>;
20
+ export declare const reportCsvStore: ReportCsvStore;
21
+ //# sourceMappingURL=session-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-services.d.ts","sourceRoot":"","sources":["../../src/services/session-services.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,yBAAyB,EAAE,yBAAyB,CAAC;CACtD;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,eAAe,CAqBjB;AAED,eAAO,MAAM,mBAAmB,sCAA6C,CAAC;AAiB9E,eAAO,MAAM,cAAc,gBAIzB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { deleteSpilledObjectsForSession, ReportCsvStore, SessionServiceStore, } from "@cesteral/shared";
2
+ export { SessionServiceStore } from "@cesteral/shared";
3
+ import { PinterestHttpClient } from "./pinterest/pinterest-http-client.js";
4
+ import { PinterestService } from "./pinterest/pinterest-service.js";
5
+ import { PinterestReportingService } from "./pinterest/pinterest-reporting-service.js";
6
+ export function createSessionServices(authAdapter, config, logger, rateLimiter) {
7
+ const httpClient = new PinterestHttpClient(authAdapter, authAdapter.adAccountId, config.baseUrl, logger, config.apiVersion);
8
+ const pinterestService = new PinterestService(rateLimiter, httpClient, logger);
9
+ const pinterestReportingService = new PinterestReportingService(rateLimiter, httpClient, logger, config.reportPollIntervalMs, config.reportMaxPollAttempts);
10
+ return {
11
+ pinterestService,
12
+ pinterestReportingService,
13
+ };
14
+ }
15
+ export const sessionServiceStore = new SessionServiceStore();
16
+ sessionServiceStore.onDelete((sessionId) => {
17
+ void deleteSpilledObjectsForSession("pinterest", sessionId);
18
+ reportCsvStore.clearForSession(sessionId);
19
+ });
20
+ export const reportCsvStore = new ReportCsvStore({
21
+ mirror: { bucketResolver: () => process.env.REPORT_SPILL_BUCKET },
22
+ });
23
+ //# sourceMappingURL=session-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-services.js","sourceRoot":"","sources":["../../src/services/session-services.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAcvF,MAAM,UAAU,qBAAqB,CACnC,WAAiC,EACjC,MAA8B,EAC9B,MAAc,EACd,WAAwB;IAExB,MAAM,UAAU,GAAG,IAAI,mBAAmB,CACxC,WAAW,EACX,WAAW,CAAC,WAAW,EACvB,MAAM,CAAC,OAAO,EACd,MAAM,EACN,MAAM,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAC7D,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,CAAC,oBAAoB,EAC3B,MAAM,CAAC,qBAAqB,CAC7B,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,yBAAyB;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAmB,CAAC;AAM9E,mBAAmB,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;IACzC,KAAK,8BAA8B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAG/C,MAAM,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;CAClE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { ToolDefinition, ResourceDefinition, SdkContext } from "@cesteral/shared";
2
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types-global/mcp.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/types-global/mcp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { McpError, ErrorHandler, type ErrorContext, JsonRpcErrorCode, mapErrorCodeToHttpStatus, } from "@cesteral/shared";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/errors/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,YAAY,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { McpError, ErrorHandler, JsonRpcErrorCode, mapErrorCodeToHttpStatus, } from "@cesteral/shared";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/errors/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const withPinterestApiSpan: <T>(operation: string, entityType: string | undefined, fn: (span: import("@opentelemetry/api").Span) => Promise<T>) => Promise<T>;
2
+ export declare const rateLimiter: import("@cesteral/shared").RateLimiter;
3
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,mIAAwC,CAAC;AAC1E,eAAO,MAAM,WAAW,wCAGvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { createPlatformSpanHelper, createPlatformRateLimiter } from "@cesteral/shared";
2
+ import { mcpConfig } from "../config/index.js";
3
+ export const withPinterestApiSpan = createPlatformSpanHelper("pinterest");
4
+ export const rateLimiter = createPlatformRateLimiter("pinterest", mcpConfig.pinterestRateLimitPerMinute);
5
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAClD,WAAW,EACX,SAAS,CAAC,2BAA2B,CACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RateLimiter } from "@cesteral/shared";
2
+ export declare const rateLimiter: import("@cesteral/shared").RateLimiter;
3
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/utils/security/rate-limiter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,eAAO,MAAM,WAAW,wCAGvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { RateLimiter } from "@cesteral/shared";
2
+ import { createPlatformRateLimiter } from "@cesteral/shared";
3
+ import { mcpConfig } from "../../config/index.js";
4
+ export const rateLimiter = createPlatformRateLimiter("pinterest", mcpConfig.pinterestRateLimitPerMinute);
5
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/utils/security/rate-limiter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAClD,WAAW,EACX,SAAS,CAAC,2BAA2B,CACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./tracing.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./tracing.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/telemetry/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { initializeOpenTelemetry, shutdownOpenTelemetry, getOpenTelemetrySDK, isOpenTelemetryEnabled, otelLogMixin, getTracer, withSpan, withToolSpan, setSpanAttribute, recordSpanError, createPlatformSpanHelper, type Span, } from "@cesteral/shared";
2
+ export declare const withPinterestApiSpan: <T>(operation: string, entityType: string | undefined, fn: (span: import("@opentelemetry/api").Span) => Promise<T>) => Promise<T>;
3
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/tracing.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,KAAK,IAAI,GACV,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,oBAAoB,mIAAwC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { initializeOpenTelemetry, shutdownOpenTelemetry, getOpenTelemetrySDK, isOpenTelemetryEnabled, otelLogMixin, getTracer, withSpan, withToolSpan, setSpanAttribute, recordSpanError, createPlatformSpanHelper, } from "@cesteral/shared";
2
+ import { createPlatformSpanHelper } from "@cesteral/shared";
3
+ export const withPinterestApiSpan = createPlatformSpanHelper("pinterest");
4
+ //# sourceMappingURL=tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/utils/telemetry/tracing.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,wBAAwB,GAEzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@cesteral/pinterest-mcp",
3
+ "mcpName": "io.github.cesteral/pinterest-mcp",
4
+ "version": "1.0.0",
5
+ "description": "Pinterest Ads MCP Server - Campaign entity management and reporting via Pinterest Ads API v5",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/cesteral/mcp-open-advertising.git",
10
+ "directory": "packages/pinterest-mcp"
11
+ },
12
+ "homepage": "https://github.com/cesteral/mcp-open-advertising#readme",
13
+ "keywords": [
14
+ "mcp",
15
+ "model-context-protocol",
16
+ "advertising",
17
+ "pinterest-ads"
18
+ ],
19
+ "files": [
20
+ "dist/",
21
+ "README.md",
22
+ "LICENSE.md"
23
+ ],
24
+ "type": "module",
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "bin": {
28
+ "pinterest-mcp": "./dist/index.js"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "dependencies": {
34
+ "@modelcontextprotocol/sdk": "1.27.1",
35
+ "pino": "^10.1.0",
36
+ "zod": "3.25.76",
37
+ "@cesteral/shared": "1.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^20.17.6",
41
+ "openapi-typescript": "^7.10.1",
42
+ "tsx": "^4.20.6",
43
+ "typescript": "^5.9.3",
44
+ "vitest": "^1.6.0"
45
+ },
46
+ "scripts": {
47
+ "build": "tsc --build",
48
+ "clean": "rm -rf dist *.tsbuildinfo",
49
+ "dev:http": "tsx watch src/index.ts",
50
+ "generate": "tsx scripts/generate-types.ts",
51
+ "start": "node dist/index.js",
52
+ "typecheck": "tsc --noEmit",
53
+ "lint": "eslint src/",
54
+ "test": "vitest run",
55
+ "test:coverage": "vitest run --coverage"
56
+ }
57
+ }