@cesteral/linkedin-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 (259) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +304 -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/linkedin-auth-adapter.d.ts +38 -0
  8. package/dist/auth/linkedin-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/linkedin-auth-adapter.js +110 -0
  10. package/dist/auth/linkedin-auth-adapter.js.map +1 -0
  11. package/dist/auth/linkedin-auth-strategy.d.ts +14 -0
  12. package/dist/auth/linkedin-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/linkedin-auth-strategy.js +50 -0
  14. package/dist/auth/linkedin-auth-strategy.js.map +1 -0
  15. package/dist/config/index.d.ts +100 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +37 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +40 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/mcp-server/prompts/definitions/analytics-reporting-workflow.prompt.d.ts +4 -0
  24. package/dist/mcp-server/prompts/definitions/analytics-reporting-workflow.prompt.d.ts.map +1 -0
  25. package/dist/mcp-server/prompts/definitions/analytics-reporting-workflow.prompt.js +108 -0
  26. package/dist/mcp-server/prompts/definitions/analytics-reporting-workflow.prompt.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 +177 -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 +171 -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 +109 -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 +299 -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 +213 -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 +151 -0
  54. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  56. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +217 -0
  58. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  59. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  60. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +98 -0
  62. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  63. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  64. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  65. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +91 -0
  66. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  67. package/dist/mcp-server/prompts/index.d.ts +9 -0
  68. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  69. package/dist/mcp-server/prompts/index.js +97 -0
  70. package/dist/mcp-server/prompts/index.js.map +1 -0
  71. package/dist/mcp-server/resources/definitions/analytics-reference.resource.d.ts +3 -0
  72. package/dist/mcp-server/resources/definitions/analytics-reference.resource.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/definitions/analytics-reference.resource.js +162 -0
  74. package/dist/mcp-server/resources/definitions/analytics-reference.resource.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 +164 -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 +144 -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 +127 -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 +8 -0
  88. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/index.js +54 -0
  90. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts +3 -0
  92. package/dist/mcp-server/resources/definitions/targeting-reference.resource.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/targeting-reference.resource.js +122 -0
  94. package/dist/mcp-server/resources/definitions/targeting-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 +128 -0
  106. package/dist/mcp-server/server.js.map +1 -0
  107. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +213 -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 +174 -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 +128 -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 +95 -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 +183 -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 +122 -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 +140 -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 +109 -0
  122. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +117 -0
  124. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/create-entity.tool.js +98 -0
  126. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +93 -0
  128. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +100 -0
  130. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts +95 -0
  132. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js +89 -0
  134. package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +75 -0
  136. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +68 -0
  138. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts +75 -0
  140. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js +71 -0
  142. package/dist/mcp-server/tools/definitions/get-ad-previews.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/get-analytics-breakdowns.tool.d.ts +223 -0
  144. package/dist/mcp-server/tools/definitions/get-analytics-breakdowns.tool.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/definitions/get-analytics-breakdowns.tool.js +152 -0
  146. package/dist/mcp-server/tools/definitions/get-analytics-breakdowns.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/get-analytics.tool.d.ts +325 -0
  148. package/dist/mcp-server/tools/definitions/get-analytics.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/get-analytics.tool.js +154 -0
  150. package/dist/mcp-server/tools/definitions/get-analytics.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/get-delivery-forecast.tool.d.ts +95 -0
  152. package/dist/mcp-server/tools/definitions/get-delivery-forecast.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/get-delivery-forecast.tool.js +90 -0
  154. package/dist/mcp-server/tools/definitions/get-delivery-forecast.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +75 -0
  156. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/get-entity.tool.js +75 -0
  158. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +81 -0
  160. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +76 -0
  162. package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/index.d.ts +23 -0
  164. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/index.js +69 -0
  166. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.d.ts +141 -0
  168. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.js +84 -0
  170. package/dist/mcp-server/tools/definitions/list-ad-accounts.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +165 -0
  172. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/list-entities.tool.js +112 -0
  174. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +102 -0
  176. package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/search-targeting.tool.js +98 -0
  178. package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +104 -0
  180. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/update-entity.tool.js +88 -0
  182. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts +75 -0
  184. package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/upload-image.tool.js +99 -0
  186. package/dist/mcp-server/tools/definitions/upload-image.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts +69 -0
  188. package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/upload-video.tool.js +98 -0
  190. package/dist/mcp-server/tools/definitions/upload-video.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +168 -0
  192. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +200 -0
  194. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  195. package/dist/mcp-server/tools/index.d.ts +2 -0
  196. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/index.js +2 -0
  198. package/dist/mcp-server/tools/index.js.map +1 -0
  199. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +13 -0
  200. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/utils/entity-mapping.js +68 -0
  202. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  203. package/dist/mcp-server/tools/utils/media-types.d.ts +12 -0
  204. package/dist/mcp-server/tools/utils/media-types.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/utils/media-types.js +2 -0
  206. package/dist/mcp-server/tools/utils/media-types.js.map +1 -0
  207. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  208. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  210. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  211. package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
  212. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  213. package/dist/mcp-server/transports/streamable-http-transport.js +91 -0
  214. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  215. package/dist/services/linkedin/linkedin-http-client.d.ts +20 -0
  216. package/dist/services/linkedin/linkedin-http-client.d.ts.map +1 -0
  217. package/dist/services/linkedin/linkedin-http-client.js +147 -0
  218. package/dist/services/linkedin/linkedin-http-client.js.map +1 -0
  219. package/dist/services/linkedin/linkedin-reporting-service.d.ts +26 -0
  220. package/dist/services/linkedin/linkedin-reporting-service.d.ts.map +1 -0
  221. package/dist/services/linkedin/linkedin-reporting-service.js +69 -0
  222. package/dist/services/linkedin/linkedin-reporting-service.js.map +1 -0
  223. package/dist/services/linkedin/linkedin-service.d.ts +84 -0
  224. package/dist/services/linkedin/linkedin-service.d.ts.map +1 -0
  225. package/dist/services/linkedin/linkedin-service.js +195 -0
  226. package/dist/services/linkedin/linkedin-service.js.map +1 -0
  227. package/dist/services/linkedin/types.d.ts +166 -0
  228. package/dist/services/linkedin/types.d.ts.map +1 -0
  229. package/dist/services/linkedin/types.js +31 -0
  230. package/dist/services/linkedin/types.js.map +1 -0
  231. package/dist/services/session-services.d.ts +18 -0
  232. package/dist/services/session-services.d.ts.map +1 -0
  233. package/dist/services/session-services.js +16 -0
  234. package/dist/services/session-services.js.map +1 -0
  235. package/dist/types-global/mcp.d.ts +2 -0
  236. package/dist/types-global/mcp.d.ts.map +1 -0
  237. package/dist/types-global/mcp.js +2 -0
  238. package/dist/types-global/mcp.js.map +1 -0
  239. package/dist/utils/errors/index.d.ts +2 -0
  240. package/dist/utils/errors/index.d.ts.map +1 -0
  241. package/dist/utils/errors/index.js +2 -0
  242. package/dist/utils/errors/index.js.map +1 -0
  243. package/dist/utils/platform.d.ts +3 -0
  244. package/dist/utils/platform.d.ts.map +1 -0
  245. package/dist/utils/platform.js +5 -0
  246. package/dist/utils/platform.js.map +1 -0
  247. package/dist/utils/security/rate-limiter.d.ts +3 -0
  248. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  249. package/dist/utils/security/rate-limiter.js +5 -0
  250. package/dist/utils/security/rate-limiter.js.map +1 -0
  251. package/dist/utils/telemetry/index.d.ts +2 -0
  252. package/dist/utils/telemetry/index.d.ts.map +1 -0
  253. package/dist/utils/telemetry/index.js +2 -0
  254. package/dist/utils/telemetry/index.js.map +1 -0
  255. package/dist/utils/telemetry/tracing.d.ts +3 -0
  256. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  257. package/dist/utils/telemetry/tracing.js +4 -0
  258. package/dist/utils/telemetry/tracing.js.map +1 -0
  259. package/package.json +55 -0
@@ -0,0 +1,162 @@
1
+ let cachedContent;
2
+ function formatAnalyticsReferenceMarkdown() {
3
+ return `# LinkedIn Ads Analytics Reference
4
+
5
+ ## Endpoint
6
+ \`GET /v2/adAnalytics\`
7
+
8
+ ## Required Parameters
9
+
10
+ | Parameter | Description | Example |
11
+ |-----------|-------------|---------|
12
+ | q | Query type | \`analytics\` |
13
+ | pivot | Dimension to aggregate by | \`CAMPAIGN\` |
14
+ | timeGranularity | Time bucket size | \`DAILY\` |
15
+ | accounts[0] | Ad account URN | \`urn:li:sponsoredAccount:123\` |
16
+ | dateRange.start.year | Start year | \`2026\` |
17
+ | dateRange.start.month | Start month (1-12) | \`1\` |
18
+ | dateRange.start.day | Start day | \`1\` |
19
+ | dateRange.end.year | End year | \`2026\` |
20
+ | dateRange.end.month | End month (1-12) | \`3\` |
21
+ | dateRange.end.day | End day | \`31\` |
22
+ | fields | Comma-separated metrics | \`impressions,clicks,costInUsd\` |
23
+
24
+ ## Available Metrics
25
+
26
+ ### Volume Metrics
27
+ | Metric | Description |
28
+ |--------|-------------|
29
+ | impressions | Total ad impressions |
30
+ | clicks | Total clicks |
31
+ | costInUsd | Total spend in USD |
32
+ | reach | Unique users reached |
33
+ | frequency | Average impressions per user |
34
+
35
+ ### Engagement Metrics
36
+ | Metric | Description |
37
+ |--------|-------------|
38
+ | likes | Post likes |
39
+ | comments | Post comments |
40
+ | shares | Post shares |
41
+ | follows | New followers |
42
+ | companyPageClicks | Clicks to company page |
43
+
44
+ ### Video Metrics
45
+ | Metric | Description |
46
+ |--------|-------------|
47
+ | videoViews | Total video plays |
48
+ | videoCompletions | Videos watched to completion |
49
+ | videoFirstQuartileCompletions | 25% completion |
50
+ | videoMidpointCompletions | 50% completion |
51
+ | videoThirdQuartileCompletions | 75% completion |
52
+ | videoStarted | Video play starts |
53
+
54
+ ### Conversion Metrics
55
+ | Metric | Description |
56
+ |--------|-------------|
57
+ | conversions | Total conversion events |
58
+ | externalWebsiteConversions | Website conversion events |
59
+ | leadGenerationMailContactInfoShares | Lead Gen Form submits |
60
+ | oneClickLeads | One-click lead conversions |
61
+ | costPerConversion | Average cost per conversion |
62
+
63
+ ### Calculated Metrics
64
+ | Metric | Description |
65
+ |--------|-------------|
66
+ | clickThroughRate | CTR (clicks / impressions) |
67
+ | averageDailyReach | Average daily unique reach |
68
+ | viralImpressions | Viral (unpaid) impressions |
69
+ | viralClicks | Viral clicks |
70
+
71
+ ## Available Pivots
72
+
73
+ | Pivot | Description |
74
+ |-------|-------------|
75
+ | CAMPAIGN | Per campaign aggregation |
76
+ | CAMPAIGN_GROUP | Per campaign group aggregation |
77
+ | CREATIVE | Per creative aggregation |
78
+ | CONVERSION | Per conversion rule aggregation |
79
+ | MEMBER_COMPANY_SIZE | By company size segment |
80
+ | MEMBER_INDUSTRY | By industry segment |
81
+ | MEMBER_SENIORITY | By seniority level |
82
+ | MEMBER_JOB_TITLE | By job title |
83
+ | MEMBER_JOB_FUNCTION | By job function |
84
+ | MEMBER_COUNTRY | By country |
85
+ | MEMBER_REGION | By region |
86
+ | MEMBER_COMPANY | By company |
87
+ | PLACEMENT_NAME | By ad placement (feed, right rail, etc.) |
88
+
89
+ ## Time Granularity Values
90
+
91
+ | Value | Description |
92
+ |-------|-------------|
93
+ | DAILY | One row per day |
94
+ | MONTHLY | One row per month |
95
+ | YEARLY | One row per year |
96
+ | ALL | Aggregate entire date range |
97
+
98
+ ## Date Range Format
99
+
100
+ Dates are specified as year/month/day integers:
101
+ \`\`\`
102
+ dateRange.start.year=2026
103
+ dateRange.start.month=1
104
+ dateRange.start.day=1
105
+ dateRange.end.year=2026
106
+ dateRange.end.month=3
107
+ dateRange.end.day=31
108
+ \`\`\`
109
+
110
+ ## Example: Get Daily Campaign Metrics
111
+
112
+ \`\`\`
113
+ GET /v2/adAnalytics?
114
+ q=analytics&
115
+ pivot=CAMPAIGN&
116
+ timeGranularity=DAILY&
117
+ accounts[0]=urn:li:sponsoredAccount:123456789&
118
+ dateRange.start.year=2026&
119
+ dateRange.start.month=1&
120
+ dateRange.start.day=1&
121
+ dateRange.end.year=2026&
122
+ dateRange.end.month=3&
123
+ dateRange.end.day=31&
124
+ fields=impressions,clicks,costInUsd,conversions
125
+ \`\`\`
126
+
127
+ ## Response Shape
128
+
129
+ \`\`\`json
130
+ {
131
+ "elements": [
132
+ {
133
+ "dateRange": {
134
+ "start": { "year": 2026, "month": 1, "day": 1 },
135
+ "end": { "year": 2026, "month": 1, "day": 1 }
136
+ },
137
+ "pivotValues": ["urn:li:sponsoredCampaign:111222333"],
138
+ "impressions": 12500,
139
+ "clicks": 342,
140
+ "costInUsd": "45.67"
141
+ }
142
+ ],
143
+ "paging": {
144
+ "count": 100,
145
+ "start": 0,
146
+ "total": 450
147
+ }
148
+ }
149
+ \`\`\`
150
+ `;
151
+ }
152
+ export const analyticsReferenceResource = {
153
+ uri: "analytics-reference://linkedin",
154
+ name: "LinkedIn Analytics Reference",
155
+ description: "Available metrics, pivot dimensions, date formats, and examples for LinkedIn adAnalytics API",
156
+ mimeType: "text/markdown",
157
+ getContent: () => {
158
+ cachedContent ??= formatAnalyticsReferenceMarkdown();
159
+ return cachedContent;
160
+ },
161
+ };
162
+ //# sourceMappingURL=analytics-reference.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-reference.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/analytics-reference.resource.ts"],"names":[],"mappings":"AASA,IAAI,aAAiC,CAAC;AAEtC,SAAS,gCAAgC;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmJR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAa;IAClD,GAAG,EAAE,gCAAgC;IACrC,IAAI,EAAE,8BAA8B;IACpC,WAAW,EACT,8FAA8F;IAChG,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,gCAAgC,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entityExampleResources: Resource[];
3
+ export declare const entityExampleAllResource: Resource;
4
+ //# sourceMappingURL=entity-examples.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-examples.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-examples.resource.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiK5C,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EACW,CAAC;AAEzD,eAAO,MAAM,wBAAwB,EAAE,QAStC,CAAC"}
@@ -0,0 +1,164 @@
1
+ const ENTITY_EXAMPLES = {
2
+ campaignGroup: `# LinkedIn Campaign Group Examples
3
+
4
+ ## Create a Campaign Group
5
+
6
+ \`\`\`json
7
+ {
8
+ "entityType": "campaignGroup",
9
+ "data": {
10
+ "name": "Q1 2026 Brand Awareness",
11
+ "account": "urn:li:sponsoredAccount:123456789",
12
+ "status": "DRAFT",
13
+ "totalBudget": { "amount": "5000.00", "currencyCode": "USD" },
14
+ "runSchedule": {
15
+ "start": 1735689600000,
16
+ "end": 1748476800000
17
+ }
18
+ }
19
+ }
20
+ \`\`\`
21
+
22
+ ## Pause a Campaign Group
23
+
24
+ \`\`\`json
25
+ {
26
+ "entityType": "campaignGroup",
27
+ "entityUrn": "urn:li:sponsoredCampaignGroup:987654321",
28
+ "data": { "status": "PAUSED" }
29
+ }
30
+ \`\`\`
31
+ `,
32
+ campaign: `# LinkedIn Campaign Examples
33
+
34
+ ## Create a Sponsored Content Campaign
35
+
36
+ \`\`\`json
37
+ {
38
+ "entityType": "campaign",
39
+ "data": {
40
+ "name": "LinkedIn Tech Leaders Campaign",
41
+ "campaignGroup": "urn:li:sponsoredCampaignGroup:987654321",
42
+ "account": "urn:li:sponsoredAccount:123456789",
43
+ "type": "SPONSORED_UPDATES",
44
+ "objectiveType": "BRAND_AWARENESS",
45
+ "status": "DRAFT",
46
+ "dailyBudget": { "amount": "100.00", "currencyCode": "USD" },
47
+ "bidType": "CPM",
48
+ "unitCost": { "amount": "12.00", "currencyCode": "USD" },
49
+ "runSchedule": {
50
+ "start": 1735689600000,
51
+ "end": 1748476800000
52
+ },
53
+ "targetingCriteria": {
54
+ "include": {
55
+ "and": [
56
+ {
57
+ "or": {
58
+ "urn:li:adTargetingFacet:geos": [
59
+ "urn:li:geo:103644278"
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "or": {
65
+ "urn:li:adTargetingFacet:memberSeniorities": [
66
+ "urn:li:adSeniority:5",
67
+ "urn:li:adSeniority:6"
68
+ ]
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ },
74
+ "locale": {
75
+ "country": "US",
76
+ "language": "en"
77
+ }
78
+ }
79
+ }
80
+ \`\`\`
81
+
82
+ ## Create a Lead Gen Campaign
83
+
84
+ \`\`\`json
85
+ {
86
+ "entityType": "campaign",
87
+ "data": {
88
+ "name": "Lead Generation - IT Decision Makers",
89
+ "campaignGroup": "urn:li:sponsoredCampaignGroup:987654321",
90
+ "account": "urn:li:sponsoredAccount:123456789",
91
+ "type": "SPONSORED_UPDATES",
92
+ "objectiveType": "LEAD_GENERATION",
93
+ "status": "DRAFT",
94
+ "dailyBudget": { "amount": "200.00", "currencyCode": "USD" },
95
+ "bidType": "CPC",
96
+ "unitCost": { "amount": "8.00", "currencyCode": "USD" }
97
+ }
98
+ }
99
+ \`\`\`
100
+ `,
101
+ creative: `# LinkedIn Creative Examples
102
+
103
+ ## Create a Sponsored Content Creative
104
+
105
+ \`\`\`json
106
+ {
107
+ "entityType": "creative",
108
+ "data": {
109
+ "campaign": "urn:li:sponsoredCampaign:111222333",
110
+ "status": "DRAFT",
111
+ "reference": "urn:li:ugcPost:123456789",
112
+ "type": "SPONSORED_STATUS_UPDATE"
113
+ }
114
+ }
115
+ \`\`\`
116
+ `,
117
+ conversionRule: `# LinkedIn Conversion Rule Examples
118
+
119
+ ## Create a Purchase Conversion Rule
120
+
121
+ \`\`\`json
122
+ {
123
+ "entityType": "conversionRule",
124
+ "data": {
125
+ "name": "Product Purchase",
126
+ "type": "PURCHASE",
127
+ "account": "urn:li:sponsoredAccount:123456789",
128
+ "status": "ACTIVE",
129
+ "urlRules": [
130
+ {
131
+ "expression": "https://example.com/thank-you",
132
+ "matchType": "EXACT_URL"
133
+ }
134
+ ],
135
+ "value": { "amount": "100.00", "currencyCode": "USD" },
136
+ "attributionWindow": {
137
+ "clickAttribution": "30_DAY",
138
+ "viewAttribution": "7_DAY"
139
+ }
140
+ }
141
+ }
142
+ \`\`\`
143
+ `,
144
+ };
145
+ function buildExampleResource(entityType) {
146
+ return {
147
+ uri: `entity-examples://linkedin/${entityType}`,
148
+ name: `LinkedIn ${entityType} Examples`,
149
+ description: `Example payloads for creating and updating LinkedIn ${entityType} entities`,
150
+ mimeType: "text/markdown",
151
+ getContent: () => ENTITY_EXAMPLES[entityType] ?? `# ${entityType} Examples\n\nNo examples available.`,
152
+ };
153
+ }
154
+ export const entityExampleResources = Object.keys(ENTITY_EXAMPLES).map(buildExampleResource);
155
+ export const entityExampleAllResource = {
156
+ uri: "entity-examples://linkedin/all",
157
+ name: "LinkedIn All Entity Examples",
158
+ description: "Example payloads for all LinkedIn Ads entity types",
159
+ mimeType: "text/markdown",
160
+ getContent: () => Object.entries(ENTITY_EXAMPLES)
161
+ .map(([, content]) => content)
162
+ .join("\n\n---\n\n"),
163
+ };
164
+ //# sourceMappingURL=entity-examples.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-examples.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-examples.resource.ts"],"names":[],"mappings":"AASA,MAAM,eAAe,GAA2B;IAC9C,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhB;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEX;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;CAeX;IAEC,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BjB;CACA,CAAC;AAEF,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO;QACL,GAAG,EAAE,8BAA8B,UAAU,EAAE;QAC/C,IAAI,EAAE,YAAY,UAAU,WAAW;QACvC,WAAW,EAAE,uDAAuD,UAAU,WAAW;QACzF,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,GAAG,EAAE,CACf,eAAe,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,qCAAqC;KACtF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GACjC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAa;IAChD,GAAG,EAAE,gCAAgC;IACrC,IAAI,EAAE,8BAA8B;IACpC,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CACf,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAC7B,IAAI,CAAC,aAAa,CAAC;CACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entityHierarchyResource: Resource;
3
+ //# sourceMappingURL=entity-hierarchy.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyI5C,eAAO,MAAM,uBAAuB,EAAE,QAUrC,CAAC"}
@@ -0,0 +1,144 @@
1
+ let cachedContent;
2
+ function formatEntityHierarchyMarkdown() {
3
+ return `# LinkedIn Ads Entity Hierarchy
4
+
5
+ ## Relationship Diagram
6
+
7
+ \`\`\`
8
+ Ad Account (urn:li:sponsoredAccount:XXXXXXXXX)
9
+ ├── Campaign Group (urn:li:sponsoredCampaignGroup:XXXXXXXXX)
10
+ │ └── Campaign (urn:li:sponsoredCampaign:XXXXXXXXX)
11
+ │ └── Creative (urn:li:sponsoredCreative:XXXXXXXXX)
12
+ └── Conversion Rule (urn:li:conversion:XXXXXXXXX)
13
+ \`\`\`
14
+
15
+ ## Entity Types (5 total)
16
+
17
+ | Entity Type | API Path | Display Name |
18
+ |-------------|----------|--------------|
19
+ | **adAccount** | \`/v2/adAccounts\` | Ad Account |
20
+ | **campaignGroup** | \`/v2/adCampaignGroups\` | Campaign Group |
21
+ | **campaign** | \`/v2/adCampaigns\` | Campaign |
22
+ | **creative** | \`/v2/adCreatives\` | Creative |
23
+ | **conversionRule** | \`/v2/conversions\` | Conversion Rule |
24
+
25
+ ## Key Concepts
26
+
27
+ ### LinkedIn URN IDs
28
+ All LinkedIn entity IDs are URNs (Uniform Resource Names):
29
+ - Ad Account: \`urn:li:sponsoredAccount:123456789\`
30
+ - Campaign Group: \`urn:li:sponsoredCampaignGroup:987654321\`
31
+ - Campaign: \`urn:li:sponsoredCampaign:111222333\`
32
+ - Creative: \`urn:li:sponsoredCreative:444555666\`
33
+ - Conversion Rule: \`urn:li:conversion:777888999\`
34
+
35
+ URNs must be URL-encoded when used in API paths:
36
+ \`urn:li:sponsoredAccount:123\` → \`urn%3Ali%3AsponsoredAccount%3A123\`
37
+
38
+ ### Core Hierarchy: Account → Campaign Group → Campaign → Creative
39
+ - A campaign group organizes campaigns (like Facebook campaign)
40
+ - A campaign contains targeting, bidding, and budget (like Facebook ad set)
41
+ - A creative is the ad content associated with a campaign
42
+
43
+ ## Creation Order
44
+
45
+ 1. **Ad Account** — pre-exists; use \`linkedin_list_ad_accounts\` to find URN
46
+ 2. **Conversion Rule(s)** — optional; create if tracking conversions
47
+ 3. **Campaign Group** — requires \`account\` URN, \`name\`, \`status\`
48
+ 4. **Campaign(s)** — requires \`campaignGroup\` URN, \`account\` URN, \`type\`, \`objectiveType\`
49
+ 5. **Creative(s)** — requires \`campaign\` URN, \`reference\` content URN
50
+
51
+ ## LinkedIn API Patterns
52
+
53
+ ### Create: POST /v2/{entityPath}
54
+ Body is JSON. Response contains the new entity URN.
55
+
56
+ ### Read: GET /v2/{entityPath}/{encodedUrn}
57
+ URN must be URL-encoded in path.
58
+
59
+ ### Update: POST /v2/{entityPath}/{encodedUrn} with X-Restli-Method: PARTIAL_UPDATE
60
+ Body: \`{ "patch": { "$set": { ...fields } } }\`
61
+
62
+ ### Delete: DELETE /v2/{entityPath}/{encodedUrn}
63
+
64
+ ### List: GET /v2/{entityPath}?q=search&{scopingParam}={accountUrn}&start={n}&count={n}
65
+ Offset-based pagination via \`start\` and \`count\` parameters.
66
+ Response contains \`elements\` array and \`paging\` object.
67
+
68
+ The account scoping parameter varies by entity type:
69
+ - \`accounts[0]\` — campaigns (\`/v2/adCampaigns\`) and creatives (\`/v2/adCreatives\`)
70
+ - \`account\` — campaign groups (\`/v2/adCampaignGroups\`) and conversion rules (\`/v2/conversions\`)
71
+
72
+ ## Required Headers (All Requests)
73
+
74
+ | Header | Value |
75
+ |--------|-------|
76
+ | Authorization | Bearer {access_token} |
77
+ | LinkedIn-Version | 202409 (configurable via LINKEDIN_API_VERSION) |
78
+ | X-Restli-Protocol-Version | 2.0.0 |
79
+
80
+ ## Available Tools Summary
81
+
82
+ | Tool | Purpose | Batch? |
83
+ |------|---------|--------|
84
+ | \`linkedin_list_entities\` | List entities with offset pagination | |
85
+ | \`linkedin_get_entity\` | Get single entity by URN | |
86
+ | \`linkedin_create_entity\` | Create single entity | |
87
+ | \`linkedin_update_entity\` | Update single entity (PATCH) | |
88
+ | \`linkedin_delete_entity\` | Delete single entity | |
89
+ | \`linkedin_list_ad_accounts\` | List accessible ad accounts | |
90
+ | \`linkedin_get_analytics\` | Get analytics metrics | |
91
+ | \`linkedin_get_analytics_breakdowns\` | Analytics with multiple pivots | |
92
+ | \`linkedin_bulk_update_status\` | Batch status update | ✓ |
93
+ | \`linkedin_bulk_create_entities\` | Batch entity creation | ✓ |
94
+ | \`linkedin_bulk_update_entities\` | Batch entity updates | ✓ |
95
+ | \`linkedin_adjust_bids\` | Batch adjust campaign bids | ✓ |
96
+ | \`linkedin_search_targeting\` | Search targeting facets | |
97
+ | \`linkedin_get_targeting_options\` | Browse targeting categories | |
98
+ | \`linkedin_duplicate_entity\` | Copy entity (read + create) | |
99
+ | \`linkedin_get_delivery_forecast\` | Audience size estimation | |
100
+ | \`linkedin_get_ad_preview\` | Ad creative preview | |
101
+ | \`linkedin_validate_entity\` | Client-side payload validation | |
102
+
103
+ ## Budget Format
104
+
105
+ LinkedIn budgets use a CurrencyAmount object:
106
+ \`\`\`json
107
+ { "amount": "50.00", "currencyCode": "USD" }
108
+ \`\`\`
109
+
110
+ ## Campaign Types (type field)
111
+
112
+ | Type | Description |
113
+ |------|-------------|
114
+ | SPONSORED_UPDATES | Sponsored content in the feed |
115
+ | TEXT_AD | Text-based display ads |
116
+ | DYNAMIC | Dynamic personalized ads |
117
+ | SPONSORED_INMAILS | InMail / Message Ads |
118
+ | VIDEO | Video ads |
119
+ | CAROUSEL | Carousel ads |
120
+
121
+ ## Objective Types (objectiveType field)
122
+
123
+ | Objective | Use Case |
124
+ |-----------|----------|
125
+ | BRAND_AWARENESS | Maximize reach and impressions |
126
+ | WEBSITE_TRAFFIC | Drive clicks to website |
127
+ | WEBSITE_CONVERSIONS | Optimize for conversion events |
128
+ | LEAD_GENERATION | LinkedIn Lead Gen Forms |
129
+ | ENGAGEMENT | Increase social engagement |
130
+ | VIDEO_VIEWS | Maximize video completions |
131
+ | TALENT_LEADS | Talent solution objectives |
132
+ `;
133
+ }
134
+ export const entityHierarchyResource = {
135
+ uri: "entity-hierarchy://linkedin/all",
136
+ name: "LinkedIn Ads Entity Hierarchy",
137
+ description: "Parent-child relationships between LinkedIn Ads entities, API patterns, and creation ordering",
138
+ mimeType: "text/markdown",
139
+ getContent: () => {
140
+ cachedContent ??= formatEntityHierarchyMarkdown();
141
+ return cachedContent;
142
+ },
143
+ };
144
+ //# sourceMappingURL=entity-hierarchy.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-hierarchy.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAQA,IAAI,aAAiC,CAAC;AAEtC,SAAS,6BAA6B;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,+BAA+B;IACrC,WAAW,EACT,+FAA+F;IACjG,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,6BAA6B,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Resource } from "../types.js";
2
+ export declare const entitySchemaResources: Resource[];
3
+ export declare const entitySchemaAllResource: Resource;
4
+ //# sourceMappingURL=entity-schemas.resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schemas.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA4H5C,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EACU,CAAC;AAEvD,eAAO,MAAM,uBAAuB,EAAE,QASrC,CAAC"}
@@ -0,0 +1,127 @@
1
+ const ENTITY_SCHEMAS = {
2
+ adAccount: `# LinkedIn Ad Account Schema
3
+
4
+ ## Key Fields
5
+
6
+ | Field | Type | Description |
7
+ |-------|------|-------------|
8
+ | id | number | Account ID (part of URN) |
9
+ | name | string | Account name |
10
+ | status | string | ACTIVE, CANCELED, DRAFT, PENDING_DELETION |
11
+ | currency | string | ISO 4217 currency code (e.g., USD) |
12
+ | type | string | BUSINESS, ENTERPRISE |
13
+ | reference | string | Company URN reference |
14
+
15
+ ## Read-Only Fields
16
+ - id, changeAuditStamps, created, lastModified
17
+
18
+ ## Status Values
19
+ ACTIVE, CANCELED, DRAFT, PENDING_DELETION
20
+ `,
21
+ campaignGroup: `# LinkedIn Campaign Group Schema
22
+
23
+ ## Key Fields
24
+
25
+ | Field | Type | Required | Description |
26
+ |-------|------|----------|-------------|
27
+ | name | string | Yes | Campaign group name |
28
+ | account | string | Yes | Ad account URN |
29
+ | status | string | Yes | ACTIVE, PAUSED, DRAFT, ARCHIVED, CANCELED |
30
+ | totalBudget | CurrencyAmount | No | Total budget cap |
31
+ | runSchedule | DateRange | No | Start/end timestamps (ms) |
32
+ | backfilled | boolean | No | Whether created via migration |
33
+
34
+ ## CurrencyAmount Object
35
+ \`\`\`json
36
+ { "amount": "500.00", "currencyCode": "USD" }
37
+ \`\`\`
38
+
39
+ ## DateRange Object
40
+ \`\`\`json
41
+ { "start": 1735689600000, "end": 1748476800000 }
42
+ \`\`\`
43
+ (Unix timestamps in milliseconds)
44
+ `,
45
+ campaign: `# LinkedIn Campaign Schema
46
+
47
+ ## Key Fields
48
+
49
+ | Field | Type | Required | Description |
50
+ |-------|------|----------|-------------|
51
+ | name | string | Yes | Campaign name |
52
+ | campaignGroup | string | Yes | Campaign group URN |
53
+ | account | string | Yes | Ad account URN |
54
+ | type | string | Yes | SPONSORED_UPDATES, TEXT_AD, DYNAMIC, etc. |
55
+ | objectiveType | string | Yes | BRAND_AWARENESS, WEBSITE_TRAFFIC, etc. |
56
+ | status | string | Yes | ACTIVE, PAUSED, DRAFT, ARCHIVED, CANCELED |
57
+ | dailyBudget | CurrencyAmount | No | Daily spending limit |
58
+ | totalBudget | CurrencyAmount | No | Total campaign budget |
59
+ | bidType | string | No | CPM, CPC, CPS, AUTOMATED |
60
+ | unitCost | CurrencyAmount | No | Bid amount (used when bidType is CPM/CPC) |
61
+ | runSchedule | DateRange | No | Start/end timestamps (ms) |
62
+ | targetingCriteria | object | No | Audience targeting definition |
63
+ | locale | object | No | Language and country for targeting |
64
+
65
+ ## Campaign Types
66
+ SPONSORED_UPDATES, TEXT_AD, DYNAMIC, SPONSORED_INMAILS, VIDEO, CAROUSEL
67
+
68
+ ## Objective Types
69
+ BRAND_AWARENESS, WEBSITE_TRAFFIC, WEBSITE_CONVERSIONS, LEAD_GENERATION,
70
+ ENGAGEMENT, VIDEO_VIEWS, TALENT_LEADS
71
+ `,
72
+ creative: `# LinkedIn Creative Schema
73
+
74
+ ## Key Fields
75
+
76
+ | Field | Type | Required | Description |
77
+ |-------|------|----------|-------------|
78
+ | campaign | string | Yes | Campaign URN |
79
+ | status | string | Yes | ACTIVE, PAUSED, DRAFT, ARCHIVED, CANCELED |
80
+ | reference | string | Yes | Content reference URN (UGC post, share, etc.) |
81
+ | type | string | No | TEXT_AD, SPONSORED_STATUS_UPDATE, etc. |
82
+ | variables | object | No | Template variables for dynamic content |
83
+ | review | object | No | Review status (read-only) |
84
+
85
+ ## Reference URN Formats
86
+ - UGC post: \`urn:li:ugcPost:123456789\`
87
+ - Share: \`urn:li:share:123456789\`
88
+ - Article: \`urn:li:article:123456789\`
89
+ `,
90
+ conversionRule: `# LinkedIn Conversion Rule Schema
91
+
92
+ ## Key Fields
93
+
94
+ | Field | Type | Required | Description |
95
+ |-------|------|----------|-------------|
96
+ | name | string | Yes | Conversion rule name |
97
+ | type | string | Yes | PURCHASE, ADD_TO_CART, DOWNLOAD, SIGN_UP, etc. |
98
+ | account | string | Yes | Ad account URN |
99
+ | status | string | Yes | ACTIVE, PAUSED |
100
+ | urlRules | array | No | URL matching rules |
101
+ | value | CurrencyAmount | No | Monetary value of conversion |
102
+ | attributionWindow | object | No | Click/view attribution window settings |
103
+
104
+ ## Conversion Types
105
+ PURCHASE, ADD_TO_CART, DOWNLOAD, SIGN_UP, LEAD, VIEW_KEY_PAGE, JOB_APPLICANT, OTHER
106
+ `,
107
+ };
108
+ function buildSchemaResource(entityType) {
109
+ return {
110
+ uri: `entity-schema://linkedin/${entityType}`,
111
+ name: `LinkedIn ${entityType} Schema`,
112
+ description: `Field reference for LinkedIn ${entityType} entities`,
113
+ mimeType: "text/markdown",
114
+ getContent: () => ENTITY_SCHEMAS[entityType] ?? `# ${entityType}\n\nNo schema available.`,
115
+ };
116
+ }
117
+ export const entitySchemaResources = Object.keys(ENTITY_SCHEMAS).map(buildSchemaResource);
118
+ export const entitySchemaAllResource = {
119
+ uri: "entity-schema://linkedin/all",
120
+ name: "LinkedIn All Entity Schemas",
121
+ description: "Field references for all LinkedIn Ads entity types",
122
+ mimeType: "text/markdown",
123
+ getContent: () => Object.entries(ENTITY_SCHEMAS)
124
+ .map(([, content]) => content)
125
+ .join("\n\n---\n\n"),
126
+ };
127
+ //# sourceMappingURL=entity-schemas.resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schemas.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AASA,MAAM,cAAc,GAA2B;IAC7C,SAAS,EAAE;;;;;;;;;;;;;;;;;;CAkBZ;IAEC,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBhB;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BX;IAEC,QAAQ,EAAE;;;;;;;;;;;;;;;;;CAiBX;IAEC,cAAc,EAAE;;;;;;;;;;;;;;;;CAgBjB;CACA,CAAC;AAEF,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,OAAO;QACL,GAAG,EAAE,4BAA4B,UAAU,EAAE;QAC7C,IAAI,EAAE,YAAY,UAAU,SAAS;QACrC,WAAW,EAAE,gCAAgC,UAAU,WAAW;QAClE,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,0BAA0B;KAC1F,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAChC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,8BAA8B;IACnC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CACf,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAC7B,IAAI,CAAC,aAAa,CAAC;CACzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { entityHierarchyResource } from "./entity-hierarchy.resource.js";
2
+ export { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
3
+ export { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
4
+ export { analyticsReferenceResource } from "./analytics-reference.resource.js";
5
+ export { targetingReferenceResource } from "./targeting-reference.resource.js";
6
+ import type { Resource } from "../types.js";
7
+ export declare const allResources: Resource[];
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAS/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAoC5C,eAAO,MAAM,YAAY,EAAE,QAAQ,EAUlC,CAAC"}