@cesteral/meta-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 (336) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +337 -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/meta-auth-adapter.d.ts +37 -0
  8. package/dist/auth/meta-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/meta-auth-adapter.js +109 -0
  10. package/dist/auth/meta-auth-adapter.js.map +1 -0
  11. package/dist/auth/meta-auth-strategy.d.ts +13 -0
  12. package/dist/auth/meta-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/meta-auth-strategy.js +47 -0
  14. package/dist/auth/meta-auth-strategy.js.map +1 -0
  15. package/dist/config/index.d.ts +108 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +51 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/config/insights-catalog.json +95 -0
  20. package/dist/container/index.d.ts +5 -0
  21. package/dist/container/index.d.ts.map +1 -0
  22. package/dist/container/index.js +14 -0
  23. package/dist/container/index.js.map +1 -0
  24. package/dist/container/registrations/core.d.ts +3 -0
  25. package/dist/container/registrations/core.d.ts.map +1 -0
  26. package/dist/container/registrations/core.js +16 -0
  27. package/dist/container/registrations/core.js.map +1 -0
  28. package/dist/container/registrations/mcp.d.ts +2 -0
  29. package/dist/container/registrations/mcp.d.ts.map +1 -0
  30. package/dist/container/registrations/mcp.js +3 -0
  31. package/dist/container/registrations/mcp.js.map +1 -0
  32. package/dist/container/tokens.d.ts +6 -0
  33. package/dist/container/tokens.d.ts.map +1 -0
  34. package/dist/container/tokens.js +6 -0
  35. package/dist/container/tokens.js.map +1 -0
  36. package/dist/index.d.ts +3 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +40 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
  41. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
  42. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +244 -0
  43. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
  44. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
  45. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
  46. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +111 -0
  47. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  48. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts +4 -0
  49. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts.map +1 -0
  50. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js +160 -0
  51. package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js.map +1 -0
  52. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  53. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  54. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  55. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  56. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  57. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  58. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  59. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  60. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
  61. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
  62. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +234 -0
  63. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
  64. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
  65. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
  66. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +159 -0
  67. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  68. package/dist/mcp-server/prompts/definitions/insights-reporting-workflow.prompt.d.ts +4 -0
  69. package/dist/mcp-server/prompts/definitions/insights-reporting-workflow.prompt.d.ts.map +1 -0
  70. package/dist/mcp-server/prompts/definitions/insights-reporting-workflow.prompt.js +79 -0
  71. package/dist/mcp-server/prompts/definitions/insights-reporting-workflow.prompt.js.map +1 -0
  72. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  73. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  74. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +289 -0
  75. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  76. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  77. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  78. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +109 -0
  79. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  80. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  81. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  82. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +77 -0
  83. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  84. package/dist/mcp-server/prompts/index.d.ts +9 -0
  85. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  86. package/dist/mcp-server/prompts/index.js +97 -0
  87. package/dist/mcp-server/prompts/index.js.map +1 -0
  88. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
  89. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
  90. package/dist/mcp-server/resources/definitions/entity-examples.resource.js +140 -0
  91. package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
  92. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
  93. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
  94. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +117 -0
  95. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
  96. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
  97. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
  98. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +125 -0
  99. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  100. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts +3 -0
  101. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts.map +1 -0
  102. package/dist/mcp-server/resources/definitions/field-rules.resource.js +28 -0
  103. package/dist/mcp-server/resources/definitions/field-rules.resource.js.map +1 -0
  104. package/dist/mcp-server/resources/definitions/findings.resource.d.ts +8 -0
  105. package/dist/mcp-server/resources/definitions/findings.resource.d.ts.map +1 -0
  106. package/dist/mcp-server/resources/definitions/findings.resource.js +33 -0
  107. package/dist/mcp-server/resources/definitions/findings.resource.js.map +1 -0
  108. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  109. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  110. package/dist/mcp-server/resources/definitions/index.js +81 -0
  111. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  112. package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts +3 -0
  113. package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts.map +1 -0
  114. package/dist/mcp-server/resources/definitions/insights-reference.resource.js +113 -0
  115. package/dist/mcp-server/resources/definitions/insights-reference.resource.js.map +1 -0
  116. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts +3 -0
  117. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts.map +1 -0
  118. package/dist/mcp-server/resources/definitions/targeting-reference.resource.js +98 -0
  119. package/dist/mcp-server/resources/definitions/targeting-reference.resource.js.map +1 -0
  120. package/dist/mcp-server/resources/index.d.ts +3 -0
  121. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  122. package/dist/mcp-server/resources/index.js +2 -0
  123. package/dist/mcp-server/resources/index.js.map +1 -0
  124. package/dist/mcp-server/resources/types.d.ts +8 -0
  125. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  126. package/dist/mcp-server/resources/types.js +2 -0
  127. package/dist/mcp-server/resources/types.js.map +1 -0
  128. package/dist/mcp-server/resources/utils/field-rules.d.ts +18 -0
  129. package/dist/mcp-server/resources/utils/field-rules.d.ts.map +1 -0
  130. package/dist/mcp-server/resources/utils/field-rules.js +103 -0
  131. package/dist/mcp-server/resources/utils/field-rules.js.map +1 -0
  132. package/dist/mcp-server/server.d.ts +5 -0
  133. package/dist/mcp-server/server.d.ts.map +1 -0
  134. package/dist/mcp-server/server.js +133 -0
  135. package/dist/mcp-server/server.js.map +1 -0
  136. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +221 -0
  137. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  138. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +178 -0
  139. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  140. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +143 -0
  141. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  142. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +108 -0
  143. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  144. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +180 -0
  145. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
  146. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +125 -0
  147. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
  148. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +140 -0
  149. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  150. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +112 -0
  151. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  152. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +148 -0
  153. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
  154. package/dist/mcp-server/tools/definitions/check-report-status.tool.js +107 -0
  155. package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
  156. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +115 -0
  157. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  158. package/dist/mcp-server/tools/definitions/create-entity.tool.js +104 -0
  159. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  160. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +93 -0
  161. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  162. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +102 -0
  163. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  164. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +183 -0
  165. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
  166. package/dist/mcp-server/tools/definitions/download-report.tool.js +109 -0
  167. package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
  168. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts +115 -0
  169. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts.map +1 -0
  170. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js +98 -0
  171. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js.map +1 -0
  172. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +69 -0
  173. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  174. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +63 -0
  175. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  176. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts +69 -0
  177. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts.map +1 -0
  178. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js +68 -0
  179. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js.map +1 -0
  180. package/dist/mcp-server/tools/definitions/get-available-metrics.tool.d.ts +91 -0
  181. package/dist/mcp-server/tools/definitions/get-available-metrics.tool.d.ts.map +1 -0
  182. package/dist/mcp-server/tools/definitions/get-available-metrics.tool.js +85 -0
  183. package/dist/mcp-server/tools/definitions/get-available-metrics.tool.js.map +1 -0
  184. package/dist/mcp-server/tools/definitions/get-delivery-estimate.tool.d.ts +82 -0
  185. package/dist/mcp-server/tools/definitions/get-delivery-estimate.tool.d.ts.map +1 -0
  186. package/dist/mcp-server/tools/definitions/get-delivery-estimate.tool.js +72 -0
  187. package/dist/mcp-server/tools/definitions/get-delivery-estimate.tool.js.map +1 -0
  188. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +90 -0
  189. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  190. package/dist/mcp-server/tools/definitions/get-entity.tool.js +83 -0
  191. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  192. package/dist/mcp-server/tools/definitions/get-insights-breakdowns.tool.d.ts +277 -0
  193. package/dist/mcp-server/tools/definitions/get-insights-breakdowns.tool.d.ts.map +1 -0
  194. package/dist/mcp-server/tools/definitions/get-insights-breakdowns.tool.js +175 -0
  195. package/dist/mcp-server/tools/definitions/get-insights-breakdowns.tool.js.map +1 -0
  196. package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts +274 -0
  197. package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts.map +1 -0
  198. package/dist/mcp-server/tools/definitions/get-insights.tool.js +188 -0
  199. package/dist/mcp-server/tools/definitions/get-insights.tool.js.map +1 -0
  200. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +141 -0
  201. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
  202. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +157 -0
  203. package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
  204. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +81 -0
  205. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
  206. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +73 -0
  207. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
  208. package/dist/mcp-server/tools/definitions/index.d.ts +29 -0
  209. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  210. package/dist/mcp-server/tools/definitions/index.js +87 -0
  211. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  212. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.d.ts +147 -0
  213. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.d.ts.map +1 -0
  214. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.js +83 -0
  215. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.js.map +1 -0
  216. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +184 -0
  217. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  218. package/dist/mcp-server/tools/definitions/list-entities.tool.js +105 -0
  219. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  220. package/dist/mcp-server/tools/definitions/manage-budget-schedule.tool.d.ts +128 -0
  221. package/dist/mcp-server/tools/definitions/manage-budget-schedule.tool.d.ts.map +1 -0
  222. package/dist/mcp-server/tools/definitions/manage-budget-schedule.tool.js +145 -0
  223. package/dist/mcp-server/tools/definitions/manage-budget-schedule.tool.js.map +1 -0
  224. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +89 -0
  225. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
  226. package/dist/mcp-server/tools/definitions/search-targeting.tool.js +87 -0
  227. package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
  228. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +192 -0
  229. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  230. package/dist/mcp-server/tools/definitions/submit-report.tool.js +131 -0
  231. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  232. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +1714 -0
  233. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  234. package/dist/mcp-server/tools/definitions/update-entity.tool.js +146 -0
  235. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  236. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts +88 -0
  237. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts.map +1 -0
  238. package/dist/mcp-server/tools/definitions/upload-image.tool.js +89 -0
  239. package/dist/mcp-server/tools/definitions/upload-image.tool.js.map +1 -0
  240. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts +94 -0
  241. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts.map +1 -0
  242. package/dist/mcp-server/tools/definitions/upload-video.tool.js +151 -0
  243. package/dist/mcp-server/tools/definitions/upload-video.tool.js.map +1 -0
  244. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +169 -0
  245. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  246. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +103 -0
  247. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  248. package/dist/mcp-server/tools/index.d.ts +2 -0
  249. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  250. package/dist/mcp-server/tools/index.js +2 -0
  251. package/dist/mcp-server/tools/index.js.map +1 -0
  252. package/dist/mcp-server/tools/utils/capture-snapshot.d.ts +8 -0
  253. package/dist/mcp-server/tools/utils/capture-snapshot.d.ts.map +1 -0
  254. package/dist/mcp-server/tools/utils/capture-snapshot.js +70 -0
  255. package/dist/mcp-server/tools/utils/capture-snapshot.js.map +1 -0
  256. package/dist/mcp-server/tools/utils/dry-run.d.ts +11 -0
  257. package/dist/mcp-server/tools/utils/dry-run.d.ts.map +1 -0
  258. package/dist/mcp-server/tools/utils/dry-run.js +60 -0
  259. package/dist/mcp-server/tools/utils/dry-run.js.map +1 -0
  260. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +14 -0
  261. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  262. package/dist/mcp-server/tools/utils/entity-mapping.js +138 -0
  263. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  264. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  265. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  266. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  267. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  268. package/dist/mcp-server/transports/streamable-http-transport.d.ts +53 -0
  269. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  270. package/dist/mcp-server/transports/streamable-http-transport.js +80 -0
  271. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  272. package/dist/services/meta/meta-graph-api-client.d.ts +19 -0
  273. package/dist/services/meta/meta-graph-api-client.d.ts.map +1 -0
  274. package/dist/services/meta/meta-graph-api-client.js +226 -0
  275. package/dist/services/meta/meta-graph-api-client.js.map +1 -0
  276. package/dist/services/meta/meta-insights-service.d.ts +76 -0
  277. package/dist/services/meta/meta-insights-service.d.ts.map +1 -0
  278. package/dist/services/meta/meta-insights-service.js +209 -0
  279. package/dist/services/meta/meta-insights-service.js.map +1 -0
  280. package/dist/services/meta/meta-service.d.ts +64 -0
  281. package/dist/services/meta/meta-service.d.ts.map +1 -0
  282. package/dist/services/meta/meta-service.js +177 -0
  283. package/dist/services/meta/meta-service.js.map +1 -0
  284. package/dist/services/meta/meta-targeting-service.d.ts +13 -0
  285. package/dist/services/meta/meta-targeting-service.d.ts.map +1 -0
  286. package/dist/services/meta/meta-targeting-service.js +38 -0
  287. package/dist/services/meta/meta-targeting-service.js.map +1 -0
  288. package/dist/services/meta/types.d.ts +227 -0
  289. package/dist/services/meta/types.d.ts.map +1 -0
  290. package/dist/services/meta/types.js +55 -0
  291. package/dist/services/meta/types.js.map +1 -0
  292. package/dist/services/session-services.d.ts +19 -0
  293. package/dist/services/session-services.d.ts.map +1 -0
  294. package/dist/services/session-services.js +19 -0
  295. package/dist/services/session-services.js.map +1 -0
  296. package/dist/testkit/fixtures/index.d.ts +9 -0
  297. package/dist/testkit/fixtures/index.d.ts.map +1 -0
  298. package/dist/testkit/fixtures/index.js +201 -0
  299. package/dist/testkit/fixtures/index.js.map +1 -0
  300. package/dist/testkit/index.d.ts +6 -0
  301. package/dist/testkit/index.d.ts.map +1 -0
  302. package/dist/testkit/index.js +26 -0
  303. package/dist/testkit/index.js.map +1 -0
  304. package/dist/testkit/types.d.ts +17 -0
  305. package/dist/testkit/types.d.ts.map +1 -0
  306. package/dist/testkit/types.js +2 -0
  307. package/dist/testkit/types.js.map +1 -0
  308. package/dist/types-global/mcp.d.ts +2 -0
  309. package/dist/types-global/mcp.d.ts.map +1 -0
  310. package/dist/types-global/mcp.js +2 -0
  311. package/dist/types-global/mcp.js.map +1 -0
  312. package/dist/utils/errors/index.d.ts +2 -0
  313. package/dist/utils/errors/index.d.ts.map +1 -0
  314. package/dist/utils/errors/index.js +2 -0
  315. package/dist/utils/errors/index.js.map +1 -0
  316. package/dist/utils/internal/request-context.d.ts +20 -0
  317. package/dist/utils/internal/request-context.d.ts.map +1 -0
  318. package/dist/utils/internal/request-context.js +19 -0
  319. package/dist/utils/internal/request-context.js.map +1 -0
  320. package/dist/utils/platform.d.ts +3 -0
  321. package/dist/utils/platform.d.ts.map +1 -0
  322. package/dist/utils/platform.js +5 -0
  323. package/dist/utils/platform.js.map +1 -0
  324. package/dist/utils/security/rate-limiter.d.ts +3 -0
  325. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  326. package/dist/utils/security/rate-limiter.js +5 -0
  327. package/dist/utils/security/rate-limiter.js.map +1 -0
  328. package/dist/utils/telemetry/index.d.ts +2 -0
  329. package/dist/utils/telemetry/index.d.ts.map +1 -0
  330. package/dist/utils/telemetry/index.js +2 -0
  331. package/dist/utils/telemetry/index.js.map +1 -0
  332. package/dist/utils/telemetry/tracing.d.ts +3 -0
  333. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  334. package/dist/utils/telemetry/tracing.js +4 -0
  335. package/dist/utils/telemetry/tracing.js.map +1 -0
  336. package/package.json +66 -0
@@ -0,0 +1,169 @@
1
+ import { z } from "zod";
2
+ import { type MetaEntityType } from "../utils/entity-mapping.js";
3
+ export declare const validateEntityTool: {
4
+ name: string;
5
+ title: string;
6
+ description: string;
7
+ inputSchema: z.ZodObject<{
8
+ entityType: z.ZodEnum<[MetaEntityType, ...MetaEntityType[]]>;
9
+ mode: z.ZodEnum<["create", "update"]>;
10
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ data: Record<string, unknown>;
13
+ entityType: MetaEntityType;
14
+ mode: "create" | "update";
15
+ }, {
16
+ data: Record<string, unknown>;
17
+ entityType: MetaEntityType;
18
+ mode: "create" | "update";
19
+ }>;
20
+ outputSchema: z.ZodObject<{
21
+ valid: z.ZodBoolean;
22
+ entityType: z.ZodString;
23
+ mode: z.ZodString;
24
+ issues: z.ZodArray<z.ZodObject<{
25
+ field: z.ZodString;
26
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
27
+ message: z.ZodString;
28
+ hint: z.ZodOptional<z.ZodString>;
29
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
30
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
33
+ message: string;
34
+ field: string;
35
+ hint?: string | undefined;
36
+ suggestedValues?: string[] | undefined;
37
+ severity?: "error" | "warning" | undefined;
38
+ }, {
39
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
40
+ message: string;
41
+ field: string;
42
+ hint?: string | undefined;
43
+ suggestedValues?: string[] | undefined;
44
+ severity?: "error" | "warning" | undefined;
45
+ }>, "many">;
46
+ nextAction: z.ZodOptional<z.ZodString>;
47
+ timestamp: z.ZodString;
48
+ }, "strip", z.ZodTypeAny, {
49
+ issues: {
50
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
51
+ message: string;
52
+ field: string;
53
+ hint?: string | undefined;
54
+ suggestedValues?: string[] | undefined;
55
+ severity?: "error" | "warning" | undefined;
56
+ }[];
57
+ valid: boolean;
58
+ entityType: string;
59
+ mode: string;
60
+ timestamp: string;
61
+ nextAction?: string | undefined;
62
+ }, {
63
+ issues: {
64
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
65
+ message: string;
66
+ field: string;
67
+ hint?: string | undefined;
68
+ suggestedValues?: string[] | undefined;
69
+ severity?: "error" | "warning" | undefined;
70
+ }[];
71
+ valid: boolean;
72
+ entityType: string;
73
+ mode: string;
74
+ timestamp: string;
75
+ nextAction?: string | undefined;
76
+ }>;
77
+ annotations: {
78
+ readOnlyHint: boolean;
79
+ idempotentHint: boolean;
80
+ openWorldHint: boolean;
81
+ destructiveHint: boolean;
82
+ };
83
+ inputExamples: {
84
+ label: string;
85
+ input: Record<string, unknown>;
86
+ }[];
87
+ logic: (input: {
88
+ data: Record<string, unknown>;
89
+ entityType: MetaEntityType;
90
+ mode: "create" | "update";
91
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
92
+ responseFormatter: typeof import("@cesteral/shared").validateEntityResponseFormatter;
93
+ };
94
+ export declare const ValidateEntityInputSchema: z.ZodObject<{
95
+ entityType: z.ZodEnum<[MetaEntityType, ...MetaEntityType[]]>;
96
+ mode: z.ZodEnum<["create", "update"]>;
97
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ data: Record<string, unknown>;
100
+ entityType: MetaEntityType;
101
+ mode: "create" | "update";
102
+ }, {
103
+ data: Record<string, unknown>;
104
+ entityType: MetaEntityType;
105
+ mode: "create" | "update";
106
+ }>;
107
+ export declare const ValidateEntityOutputSchema: z.ZodObject<{
108
+ valid: z.ZodBoolean;
109
+ entityType: z.ZodString;
110
+ mode: z.ZodString;
111
+ issues: z.ZodArray<z.ZodObject<{
112
+ field: z.ZodString;
113
+ code: z.ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
114
+ message: z.ZodString;
115
+ hint: z.ZodOptional<z.ZodString>;
116
+ suggestedValues: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
117
+ severity: z.ZodOptional<z.ZodEnum<["error", "warning"]>>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
120
+ message: string;
121
+ field: string;
122
+ hint?: string | undefined;
123
+ suggestedValues?: string[] | undefined;
124
+ severity?: "error" | "warning" | undefined;
125
+ }, {
126
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
127
+ message: string;
128
+ field: string;
129
+ hint?: string | undefined;
130
+ suggestedValues?: string[] | undefined;
131
+ severity?: "error" | "warning" | undefined;
132
+ }>, "many">;
133
+ nextAction: z.ZodOptional<z.ZodString>;
134
+ timestamp: z.ZodString;
135
+ }, "strip", z.ZodTypeAny, {
136
+ issues: {
137
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
138
+ message: string;
139
+ field: string;
140
+ hint?: string | undefined;
141
+ suggestedValues?: string[] | undefined;
142
+ severity?: "error" | "warning" | undefined;
143
+ }[];
144
+ valid: boolean;
145
+ entityType: string;
146
+ mode: string;
147
+ timestamp: string;
148
+ nextAction?: string | undefined;
149
+ }, {
150
+ issues: {
151
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
152
+ message: string;
153
+ field: string;
154
+ hint?: string | undefined;
155
+ suggestedValues?: string[] | undefined;
156
+ severity?: "error" | "warning" | undefined;
157
+ }[];
158
+ valid: boolean;
159
+ entityType: string;
160
+ mode: string;
161
+ timestamp: string;
162
+ nextAction?: string | undefined;
163
+ }>;
164
+ export declare const validateEntityLogic: (input: {
165
+ data: Record<string, unknown>;
166
+ entityType: MetaEntityType;
167
+ mode: "create" | "update";
168
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
169
+ //# sourceMappingURL=validate-entity.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-entity.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/validate-entity.tool.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQpF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA0G+R,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;gBAA4M,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;;;;gBAAsV,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;kBAAuK,CAAC;;;;;;gBAA6M,CAAC;2BAAiD,CAAC;oBAA4C,CAAC;;;;;;kBAAuK,CAAC;;;;;;;;;;;;;;;;;;CAL3vD,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAAiC,CAAC;AACxE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;YAEuR,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;YAA4M,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;;;YAAsV,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;;;;;;YAAqX,CAAC;uBAAiD,CAAC;gBAA4C,CAAC;;;;;;;EAF5gD,CAAC;AAC1E,eAAO,MAAM,mBAAmB;;;;wKAA2B,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { z } from "zod";
2
+ import { getEntityTypeEnum } from "../utils/entity-mapping.js";
3
+ import { createValidateEntityTool } from "@cesteral/shared";
4
+ import { REQUIRED_FIELDS_CREATE, READ_ONLY_FIELDS, BUDGET_FIELDS, } from "../../resources/utils/field-rules.js";
5
+ export const validateEntityTool = createValidateEntityTool({
6
+ toolName: "meta_validate_entity",
7
+ toolTitle: "Meta Ads Entity Validation (Client-Side)",
8
+ toolDescription: `Validate an entity payload against known Meta Ads requirements without calling the API. Checks required fields, data types, and common configuration mistakes.
9
+
10
+ **Supported entity types:** ${getEntityTypeEnum().join(", ")}
11
+
12
+ This is a pure client-side check — it will catch missing required fields and
13
+ obvious type errors, but the Meta API may still reject payloads for
14
+ business-rule reasons (e.g., invalid objective/optimization_goal combinations).
15
+
16
+ Required-field tables, enum suggestions, and read-only field lists per entity type are also exposed as MCP resources. Valid values: see resource \`meta-field-rules://{entityType}\`.`,
17
+ entityTypeEnum: getEntityTypeEnum(),
18
+ rulesByEntity: REQUIRED_FIELDS_CREATE,
19
+ readOnlyFields: READ_ONLY_FIELDS,
20
+ extraInputSchema: {
21
+ adAccountId: z.string().optional().describe("Ad Account ID (required for create mode)"),
22
+ },
23
+ extraValidate: ({ entityType, mode, data, extra, issues }) => {
24
+ if (mode === "create" && !extra.adAccountId) {
25
+ issues.push({
26
+ field: "adAccountId",
27
+ code: "missing",
28
+ message: "adAccountId is required when mode is 'create'",
29
+ severity: "error",
30
+ });
31
+ }
32
+ if (mode === "create" &&
33
+ entityType === "ad" &&
34
+ data.creative &&
35
+ typeof data.creative === "object" &&
36
+ !Array.isArray(data.creative)) {
37
+ if (!data.creative.creative_id) {
38
+ issues.push({
39
+ field: "creative.creative_id",
40
+ code: "missing",
41
+ message: 'Field "creative" object must contain "creative_id"',
42
+ severity: "error",
43
+ });
44
+ }
45
+ }
46
+ for (const field of BUDGET_FIELDS) {
47
+ const value = data[field];
48
+ if (typeof value === "number" && value > 0 && value < 100) {
49
+ issues.push({
50
+ field,
51
+ code: "invalidValue",
52
+ message: `Field "${field}" is ${value} — budget values are in cents (e.g., 1000 = $10 USD). Did you mean ${value * 100}?`,
53
+ severity: "warning",
54
+ });
55
+ }
56
+ }
57
+ const errorIssues = issues.filter((i) => i.severity !== "warning");
58
+ if (errorIssues.length === 0)
59
+ return;
60
+ if (entityType === "adSet" && errorIssues.some((i) => i.field === "campaign_id")) {
61
+ return {
62
+ nextAction: "Call meta_list_entities with entityType='campaign' to find a campaign_id for the parent campaign.",
63
+ };
64
+ }
65
+ if (entityType === "ad" && errorIssues.some((i) => i.field === "adset_id")) {
66
+ return {
67
+ nextAction: "Call meta_list_entities with entityType='adSet' to find an adset_id for the parent ad set.",
68
+ };
69
+ }
70
+ if (mode === "create" && !extra.adAccountId) {
71
+ return { nextAction: "Call meta_list_ad_accounts to discover available adAccountId values." };
72
+ }
73
+ return undefined;
74
+ },
75
+ inputExamples: [
76
+ {
77
+ label: "Valid campaign create",
78
+ input: {
79
+ entityType: "campaign",
80
+ mode: "create",
81
+ adAccountId: "123456789",
82
+ data: {
83
+ name: "Summer Sale 2025",
84
+ objective: "OUTCOME_AWARENESS",
85
+ special_ad_categories: [],
86
+ },
87
+ },
88
+ },
89
+ {
90
+ label: "Missing required fields (ad set)",
91
+ input: {
92
+ entityType: "adSet",
93
+ mode: "create",
94
+ adAccountId: "123456789",
95
+ data: { name: "Test Ad Set" },
96
+ },
97
+ },
98
+ ],
99
+ });
100
+ export const ValidateEntityInputSchema = validateEntityTool.inputSchema;
101
+ export const ValidateEntityOutputSchema = validateEntityTool.outputSchema;
102
+ export const validateEntityLogic = validateEntityTool.logic;
103
+ //# sourceMappingURL=validate-entity.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-entity.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/validate-entity.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { allTools } from "./definitions/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { allTools } from "./definitions/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CanonicalEntityKind, NormalizedEntitySnapshot, RequestContext } from "@cesteral/shared";
2
+ export interface MetaServiceLike {
3
+ getEntity?: (entityType: any, entityId: string, fields?: string[] | undefined, context?: RequestContext) => Promise<unknown>;
4
+ }
5
+ export declare const ENTITY_KIND_MAP: Record<string, CanonicalEntityKind>;
6
+ export declare function buildMetaSnapshot(entityType: string, entityId: string, current: Record<string, unknown>, patch: Record<string, unknown>): NormalizedEntitySnapshot | null;
7
+ export declare function captureMetaSnapshot(metaService: MetaServiceLike, entityType: string | undefined, entityId: string, context: RequestContext): Promise<NormalizedEntitySnapshot | undefined>;
8
+ //# sourceMappingURL=capture-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-snapshot.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/capture-snapshot.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,mBAAmB,EAEnB,wBAAwB,EACxB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAI9B,SAAS,CAAC,EAAE,CACV,UAAU,EAAE,GAAG,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,OAAO,CAAC,EAAE,cAAc,KACrB,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AASD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAI/D,CAAC;AAuBF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,wBAAwB,GAAG,IAAI,CAmCjC;AAQD,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAY/C"}
@@ -0,0 +1,70 @@
1
+ const STATUS_MAP = {
2
+ ACTIVE: "active",
3
+ PAUSED: "paused",
4
+ ARCHIVED: "archived",
5
+ DELETED: "deleted",
6
+ };
7
+ export const ENTITY_KIND_MAP = {
8
+ campaign: "campaign",
9
+ adSet: "ad_set",
10
+ ad: "ad",
11
+ };
12
+ function normalizeStatus(raw) {
13
+ const platformRaw = typeof raw === "string" ? raw : "";
14
+ return { canonical: STATUS_MAP[platformRaw] ?? "unknown", platformRaw };
15
+ }
16
+ function toMoney(amount, currency) {
17
+ if (amount == null)
18
+ return undefined;
19
+ const n = typeof amount === "string" ? Number.parseInt(amount, 10) : Number(amount);
20
+ if (!Number.isFinite(n))
21
+ return undefined;
22
+ return { amountMinor: n, currency };
23
+ }
24
+ export function buildMetaSnapshot(entityType, entityId, current, patch) {
25
+ const entityKind = ENTITY_KIND_MAP[entityType];
26
+ if (!entityKind)
27
+ return null;
28
+ const merged = { ...current, ...patch };
29
+ const currency = (typeof current.currency === "string" && current.currency) ||
30
+ (typeof current.account_currency === "string" && current.account_currency) ||
31
+ "USD";
32
+ const daily = toMoney(merged.daily_budget, currency);
33
+ const lifetime = toMoney(merged.lifetime_budget, currency);
34
+ return {
35
+ schemaVersion: 1,
36
+ platform: "meta_ads",
37
+ entityKind,
38
+ platformEntityId: entityId,
39
+ displayName: typeof merged.name === "string" ? merged.name : null,
40
+ accountId: typeof current.account_id === "string"
41
+ ? current.account_id
42
+ : typeof current.adAccountId === "string"
43
+ ? current.adAccountId
44
+ : null,
45
+ status: normalizeStatus(merged.status ?? current.status),
46
+ budget: {
47
+ daily: daily ?? null,
48
+ lifetime: lifetime ?? null,
49
+ },
50
+ schedule: {
51
+ startAt: typeof merged.start_time === "string" ? merged.start_time : null,
52
+ endAt: typeof merged.end_time === "string" ? merged.end_time : null,
53
+ },
54
+ };
55
+ }
56
+ export async function captureMetaSnapshot(metaService, entityType, entityId, context) {
57
+ if (!entityType || !ENTITY_KIND_MAP[entityType] || !metaService.getEntity)
58
+ return undefined;
59
+ try {
60
+ const current = (await metaService.getEntity(entityType, entityId, undefined, context));
61
+ if (!current || typeof current !== "object")
62
+ return undefined;
63
+ const snapshot = buildMetaSnapshot(entityType, entityId, current, {});
64
+ return snapshot ?? undefined;
65
+ }
66
+ catch {
67
+ return undefined;
68
+ }
69
+ }
70
+ //# sourceMappingURL=capture-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-snapshot.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/capture-snapshot.ts"],"names":[],"mappings":"AAqCA,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAwC;IAClE,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,QAAQ;IACf,EAAE,EAAE,IAAI;CACT,CAAC;AAEF,SAAS,eAAe,CAAC,GAAY;IACnC,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,OAAO,CACd,MAAe,EACf,QAAgB;IAEhB,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAQD,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,QAAgB,EAChB,OAAgC,EAChC,KAA8B;IAE9B,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,MAAM,GAA4B,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;IACjE,MAAM,QAAQ,GACZ,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;QAC1D,CAAC,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;QAC1E,KAAK,CAAC;IAER,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAE3D,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,UAAU;QACpB,UAAU;QACV,gBAAgB,EAAE,QAAQ;QAC1B,WAAW,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACjE,SAAS,EACP,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YACpC,CAAC,CAAC,OAAO,CAAC,UAAU;YACpB,CAAC,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;gBACvC,CAAC,CAAC,OAAO,CAAC,WAAW;gBACrB,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACxD,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,IAAI,IAAI;YACpB,QAAQ,EAAE,QAAQ,IAAI,IAAI;SAC3B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;YACzE,KAAK,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SACpE;KACF,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAA4B,EAC5B,UAA8B,EAC9B,QAAgB,EAChB,OAAuB;IAEvB,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5F,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAEzE,CAAC;QACd,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACtE,OAAO,QAAQ,IAAI,SAAS,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DryRunResult, NormalizedEntitySnapshot, RequestContext } from "@cesteral/shared";
2
+ import { type MetaServiceLike } from "./capture-snapshot.js";
3
+ export type { MetaServiceLike };
4
+ export declare function applyMetaPatch(entityType: string, entityId: string, preState: Record<string, unknown>, data: Record<string, unknown>): NormalizedEntitySnapshot | undefined;
5
+ export interface MetaDryRunArgs {
6
+ entityType: string | undefined;
7
+ entityId: string;
8
+ data: Record<string, unknown>;
9
+ }
10
+ export declare function runMetaUpdateDryRun(input: MetaDryRunArgs, metaService: MetaServiceLike, context: RequestContext): Promise<DryRunResult>;
11
+ //# sourceMappingURL=dry-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/dry-run.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EAEZ,wBAAwB,EACxB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsC,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEjG,YAAY,EAAE,eAAe,EAAE,CAAC;AAsChC,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,wBAAwB,GAAG,SAAS,CAGtC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,YAAY,CAAC,CAkCvB"}
@@ -0,0 +1,60 @@
1
+ import { buildMetaSnapshot, ENTITY_KIND_MAP } from "./capture-snapshot.js";
2
+ function symbolicValidate(data) {
3
+ const errors = [];
4
+ if ("status" in data) {
5
+ const status = data.status;
6
+ if (typeof status !== "string" ||
7
+ !["ACTIVE", "PAUSED", "ARCHIVED", "DELETED"].includes(status)) {
8
+ errors.push({
9
+ code: "INVALID_STATUS",
10
+ message: `status must be one of ACTIVE, PAUSED, ARCHIVED, DELETED — got ${String(status)}`,
11
+ field: "data.status",
12
+ });
13
+ }
14
+ }
15
+ for (const k of ["daily_budget", "lifetime_budget"]) {
16
+ if (k in data) {
17
+ const v = data[k];
18
+ const n = typeof v === "string" ? Number.parseInt(v, 10) : Number(v);
19
+ if (!Number.isFinite(n) || n < 0) {
20
+ errors.push({
21
+ code: "INVALID_BUDGET",
22
+ message: `${k} must be a non-negative integer (cents)`,
23
+ field: `data.${k}`,
24
+ });
25
+ }
26
+ }
27
+ }
28
+ return errors;
29
+ }
30
+ export function applyMetaPatch(entityType, entityId, preState, data) {
31
+ const snapshot = buildMetaSnapshot(entityType, entityId, preState, data);
32
+ return snapshot ?? undefined;
33
+ }
34
+ export async function runMetaUpdateDryRun(input, metaService, context) {
35
+ const validationErrors = symbolicValidate(input.data);
36
+ let expectedPostState;
37
+ let expectedStateSource = "none";
38
+ if (input.entityType && ENTITY_KIND_MAP[input.entityType] && metaService.getEntity) {
39
+ try {
40
+ const current = (await metaService.getEntity(input.entityType, input.entityId, undefined, context));
41
+ if (current && typeof current === "object") {
42
+ const snapshot = buildMetaSnapshot(input.entityType, input.entityId, current, input.data);
43
+ if (snapshot) {
44
+ expectedPostState = snapshot;
45
+ expectedStateSource = "server_symbolic_apply";
46
+ }
47
+ }
48
+ }
49
+ catch {
50
+ }
51
+ }
52
+ return {
53
+ wouldSucceed: validationErrors.length === 0,
54
+ validationErrors,
55
+ validationSource: "symbolic",
56
+ expectedStateSource,
57
+ ...(expectedPostState ? { expectedPostState } : {}),
58
+ };
59
+ }
60
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/dry-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type MetaEntityType = "campaign" | "adSet" | "ad" | "adCreative" | "customAudience";
2
+ export type DuplicateSupportedEntityType = "campaign" | "adSet" | "ad";
3
+ export interface MetaEntityConfig {
4
+ edge: string;
5
+ displayName: string;
6
+ defaultFields: string[];
7
+ supportsDuplicate?: boolean;
8
+ }
9
+ export declare function getEntityConfig(entityType: MetaEntityType): MetaEntityConfig;
10
+ export declare function getSupportedEntityTypes(): MetaEntityType[];
11
+ export declare function getEntityTypeEnum(): [string, ...string[]];
12
+ export declare function getDuplicateSupportedEntityTypes(): DuplicateSupportedEntityType[];
13
+ export declare function getDuplicateEntityTypeEnum(): [string, ...string[]];
14
+ //# sourceMappingURL=entity-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-mapping.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/entity-mapping.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAG3F,MAAM,MAAM,4BAA4B,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAE/B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAoHD,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,gBAAgB,CAM5E;AAED,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAE1D;AAED,wBAAgB,iBAAiB,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAGzD;AAED,wBAAgB,gCAAgC,IAAI,4BAA4B,EAAE,CAIjF;AAED,wBAAgB,0BAA0B,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAGlE"}
@@ -0,0 +1,138 @@
1
+ import { JsonRpcErrorCode, McpError } from "@cesteral/shared";
2
+ const ENTITY_CONFIGS = {
3
+ campaign: {
4
+ edge: "campaigns",
5
+ displayName: "Campaign",
6
+ defaultFields: [
7
+ "id",
8
+ "name",
9
+ "status",
10
+ "configured_status",
11
+ "objective",
12
+ "buying_type",
13
+ "daily_budget",
14
+ "lifetime_budget",
15
+ "budget_remaining",
16
+ "bid_strategy",
17
+ "special_ad_categories",
18
+ "special_ad_category_country",
19
+ "start_time",
20
+ "stop_time",
21
+ "created_time",
22
+ "updated_time",
23
+ ],
24
+ supportsDuplicate: true,
25
+ },
26
+ adSet: {
27
+ edge: "adsets",
28
+ displayName: "Ad Set",
29
+ defaultFields: [
30
+ "id",
31
+ "name",
32
+ "status",
33
+ "campaign_id",
34
+ "optimization_goal",
35
+ "billing_event",
36
+ "bid_amount",
37
+ "bid_strategy",
38
+ "bid_constraints",
39
+ "daily_budget",
40
+ "lifetime_budget",
41
+ "budget_remaining",
42
+ "targeting",
43
+ "frequency_control_specs",
44
+ "destination_type",
45
+ "promoted_object",
46
+ "attribution_spec",
47
+ "pacing_type",
48
+ "is_dynamic_creative",
49
+ "dsa_beneficiary",
50
+ "dsa_payor",
51
+ "start_time",
52
+ "end_time",
53
+ "created_time",
54
+ "updated_time",
55
+ ],
56
+ supportsDuplicate: true,
57
+ },
58
+ ad: {
59
+ edge: "ads",
60
+ displayName: "Ad",
61
+ defaultFields: [
62
+ "id",
63
+ "name",
64
+ "status",
65
+ "adset_id",
66
+ "campaign_id",
67
+ "creative",
68
+ "bid_amount",
69
+ "tracking_specs",
70
+ "conversion_domain",
71
+ "preview_shareable_link",
72
+ "created_time",
73
+ "updated_time",
74
+ ],
75
+ supportsDuplicate: true,
76
+ },
77
+ adCreative: {
78
+ edge: "adcreatives",
79
+ displayName: "Ad Creative",
80
+ defaultFields: [
81
+ "id",
82
+ "name",
83
+ "status",
84
+ "body",
85
+ "title",
86
+ "image_url",
87
+ "image_hash",
88
+ "thumbnail_url",
89
+ "object_story_spec",
90
+ "object_type",
91
+ "effective_object_story_id",
92
+ "asset_feed_spec",
93
+ "url_tags",
94
+ "link_url",
95
+ "dynamic_creative_spec",
96
+ "degrees_of_freedom_spec",
97
+ "product_set_id",
98
+ "created_time",
99
+ ],
100
+ },
101
+ customAudience: {
102
+ edge: "customaudiences",
103
+ displayName: "Custom Audience",
104
+ defaultFields: [
105
+ "id",
106
+ "name",
107
+ "description",
108
+ "approximate_count",
109
+ "subtype",
110
+ "time_created",
111
+ "time_updated",
112
+ ],
113
+ },
114
+ };
115
+ export function getEntityConfig(entityType) {
116
+ const config = ENTITY_CONFIGS[entityType];
117
+ if (!config) {
118
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Unknown Meta entity type: ${entityType}`);
119
+ }
120
+ return config;
121
+ }
122
+ export function getSupportedEntityTypes() {
123
+ return Object.keys(ENTITY_CONFIGS);
124
+ }
125
+ export function getEntityTypeEnum() {
126
+ const types = getSupportedEntityTypes();
127
+ return types;
128
+ }
129
+ export function getDuplicateSupportedEntityTypes() {
130
+ return Object.entries(ENTITY_CONFIGS)
131
+ .filter(([, config]) => config.supportsDuplicate)
132
+ .map(([type]) => type);
133
+ }
134
+ export function getDuplicateEntityTypeEnum() {
135
+ const types = getDuplicateSupportedEntityTypes();
136
+ return types;
137
+ }
138
+ //# sourceMappingURL=entity-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-mapping.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/entity-mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type SessionServices } from "../../../services/session-services.js";
2
+ import type { SdkContext } from "@cesteral/shared";
3
+ export declare function resolveSessionServices(sdkContext?: SdkContext): SessionServices;
4
+ //# sourceMappingURL=resolve-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-session.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/resolve-session.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,eAAe,CAE/E"}