@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,168 @@
1
+ import { type LinkedInEntityType } from "../utils/entity-mapping.js";
2
+ export declare const validateEntityTool: {
3
+ name: string;
4
+ title: string;
5
+ description: string;
6
+ inputSchema: import("zod").ZodObject<{
7
+ entityType: import("zod").ZodEnum<[LinkedInEntityType, ...LinkedInEntityType[]]>;
8
+ mode: import("zod").ZodEnum<["create", "update"]>;
9
+ data: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
10
+ }, "strip", import("zod").ZodTypeAny, {
11
+ entityType: LinkedInEntityType;
12
+ data: Record<string, unknown>;
13
+ mode: "create" | "update";
14
+ }, {
15
+ entityType: LinkedInEntityType;
16
+ data: Record<string, unknown>;
17
+ mode: "create" | "update";
18
+ }>;
19
+ outputSchema: import("zod").ZodObject<{
20
+ valid: import("zod").ZodBoolean;
21
+ entityType: import("zod").ZodString;
22
+ mode: import("zod").ZodString;
23
+ issues: import("zod").ZodArray<import("zod").ZodObject<{
24
+ field: import("zod").ZodString;
25
+ code: import("zod").ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
26
+ message: import("zod").ZodString;
27
+ hint: import("zod").ZodOptional<import("zod").ZodString>;
28
+ suggestedValues: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
29
+ severity: import("zod").ZodOptional<import("zod").ZodEnum<["error", "warning"]>>;
30
+ }, "strip", import("zod").ZodTypeAny, {
31
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
32
+ message: string;
33
+ field: string;
34
+ hint?: string | undefined;
35
+ suggestedValues?: string[] | undefined;
36
+ severity?: "error" | "warning" | undefined;
37
+ }, {
38
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
39
+ message: string;
40
+ field: string;
41
+ hint?: string | undefined;
42
+ suggestedValues?: string[] | undefined;
43
+ severity?: "error" | "warning" | undefined;
44
+ }>, "many">;
45
+ nextAction: import("zod").ZodOptional<import("zod").ZodString>;
46
+ timestamp: import("zod").ZodString;
47
+ }, "strip", import("zod").ZodTypeAny, {
48
+ issues: {
49
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
50
+ message: string;
51
+ field: string;
52
+ hint?: string | undefined;
53
+ suggestedValues?: string[] | undefined;
54
+ severity?: "error" | "warning" | undefined;
55
+ }[];
56
+ valid: boolean;
57
+ entityType: string;
58
+ mode: string;
59
+ timestamp: string;
60
+ nextAction?: string | undefined;
61
+ }, {
62
+ issues: {
63
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
64
+ message: string;
65
+ field: string;
66
+ hint?: string | undefined;
67
+ suggestedValues?: string[] | undefined;
68
+ severity?: "error" | "warning" | undefined;
69
+ }[];
70
+ valid: boolean;
71
+ entityType: string;
72
+ mode: string;
73
+ timestamp: string;
74
+ nextAction?: string | undefined;
75
+ }>;
76
+ annotations: {
77
+ readOnlyHint: boolean;
78
+ idempotentHint: boolean;
79
+ openWorldHint: boolean;
80
+ destructiveHint: boolean;
81
+ };
82
+ inputExamples: {
83
+ label: string;
84
+ input: Record<string, unknown>;
85
+ }[];
86
+ logic: (input: {
87
+ entityType: LinkedInEntityType;
88
+ data: Record<string, unknown>;
89
+ mode: "create" | "update";
90
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
91
+ responseFormatter: typeof import("@cesteral/shared").validateEntityResponseFormatter;
92
+ };
93
+ export declare const ValidateEntityInputSchema: import("zod").ZodObject<{
94
+ entityType: import("zod").ZodEnum<[LinkedInEntityType, ...LinkedInEntityType[]]>;
95
+ mode: import("zod").ZodEnum<["create", "update"]>;
96
+ data: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
97
+ }, "strip", import("zod").ZodTypeAny, {
98
+ entityType: LinkedInEntityType;
99
+ data: Record<string, unknown>;
100
+ mode: "create" | "update";
101
+ }, {
102
+ entityType: LinkedInEntityType;
103
+ data: Record<string, unknown>;
104
+ mode: "create" | "update";
105
+ }>;
106
+ export declare const ValidateEntityOutputSchema: import("zod").ZodObject<{
107
+ valid: import("zod").ZodBoolean;
108
+ entityType: import("zod").ZodString;
109
+ mode: import("zod").ZodString;
110
+ issues: import("zod").ZodArray<import("zod").ZodObject<{
111
+ field: import("zod").ZodString;
112
+ code: import("zod").ZodEnum<["missing", "wrongType", "invalidValue", "readOnly", "custom"]>;
113
+ message: import("zod").ZodString;
114
+ hint: import("zod").ZodOptional<import("zod").ZodString>;
115
+ suggestedValues: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
116
+ severity: import("zod").ZodOptional<import("zod").ZodEnum<["error", "warning"]>>;
117
+ }, "strip", import("zod").ZodTypeAny, {
118
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
119
+ message: string;
120
+ field: string;
121
+ hint?: string | undefined;
122
+ suggestedValues?: string[] | undefined;
123
+ severity?: "error" | "warning" | undefined;
124
+ }, {
125
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
126
+ message: string;
127
+ field: string;
128
+ hint?: string | undefined;
129
+ suggestedValues?: string[] | undefined;
130
+ severity?: "error" | "warning" | undefined;
131
+ }>, "many">;
132
+ nextAction: import("zod").ZodOptional<import("zod").ZodString>;
133
+ timestamp: import("zod").ZodString;
134
+ }, "strip", import("zod").ZodTypeAny, {
135
+ issues: {
136
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
137
+ message: string;
138
+ field: string;
139
+ hint?: string | undefined;
140
+ suggestedValues?: string[] | undefined;
141
+ severity?: "error" | "warning" | undefined;
142
+ }[];
143
+ valid: boolean;
144
+ entityType: string;
145
+ mode: string;
146
+ timestamp: string;
147
+ nextAction?: string | undefined;
148
+ }, {
149
+ issues: {
150
+ code: "custom" | "missing" | "wrongType" | "invalidValue" | "readOnly";
151
+ message: string;
152
+ field: string;
153
+ hint?: string | undefined;
154
+ suggestedValues?: string[] | undefined;
155
+ severity?: "error" | "warning" | undefined;
156
+ }[];
157
+ valid: boolean;
158
+ entityType: string;
159
+ mode: string;
160
+ timestamp: string;
161
+ nextAction?: string | undefined;
162
+ }>;
163
+ export declare const validateEntityLogic: (input: {
164
+ entityType: LinkedInEntityType;
165
+ data: Record<string, unknown>;
166
+ mode: "create" | "update";
167
+ }, _context: import("@cesteral/shared").RequestContext, _sdkContext?: import("@cesteral/shared").SdkContext) => Promise<import("@cesteral/shared").ValidateEntityOutput>;
168
+ //# 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":"AAUA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AA6HxF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAsBnB,CAAJ;2BAGF,CAAL;oBAG6B,CAAC;;;;;gBAMzB,CAAJ;2BAGgC,CAAC;oBACN,CAAC;;;;;;;;;gBAOJ,CAAC;2BACmB,CAAA;oBAA4C,CAAC;;;;;;kBAShF,CAAC;;;;;;gBAMwC,CAAC;2BACnB,CAAC;oBACZ,CAAC;;;;;;kBAO0B,CAAC;;;;;;;;;;;;;;;;;;CAQjD,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAAiC,CAAC;AACxE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;YA5D3B,CAAJ;uBAGF,CAAL;gBAG6B,CAAC;;;;;YAMzB,CAAJ;uBAGgC,CAAC;gBACN,CAAC;;;;;;;;;YAOJ,CAAC;uBACmB,CAAA;gBAA4C,CAAC;;;;;;;;;;;;YAevC,CAAC;uBACnB,CAAC;gBACZ,CAAC;;;;;;;EAmBiD,CAAC;AAC1E,eAAO,MAAM,mBAAmB;;;;wKAA2B,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { getEntityTypeEnum } from "../utils/entity-mapping.js";
2
+ import { createValidateEntityTool } from "@cesteral/shared";
3
+ const ACCOUNT_STATUSES = ["ACTIVE", "CANCELED", "DRAFT", "PENDING_DELETION", "REMOVED"];
4
+ const CAMPAIGN_STATUSES = [
5
+ "ACTIVE",
6
+ "PAUSED",
7
+ "ARCHIVED",
8
+ "COMPLETED",
9
+ "CANCELED",
10
+ "DRAFT",
11
+ "PENDING_DELETION",
12
+ "REMOVED",
13
+ ];
14
+ const CREATIVE_STATUSES = [
15
+ "ACTIVE",
16
+ "PAUSED",
17
+ "ARCHIVED",
18
+ "DRAFT",
19
+ "PENDING_DELETION",
20
+ "CANCELED",
21
+ "REMOVED",
22
+ ];
23
+ const CAMPAIGN_TYPES = [
24
+ "TEXT_AD",
25
+ "SPONSORED_UPDATES",
26
+ "SPONSORED_INMAILS",
27
+ "DYNAMIC",
28
+ "STANDARD_UPDATE",
29
+ ];
30
+ const OBJECTIVE_TYPES = [
31
+ "BRAND_AWARENESS",
32
+ "WEBSITE_VISIT",
33
+ "ENGAGEMENT",
34
+ "VIDEO_VIEW",
35
+ "LEAD_GENERATION",
36
+ "WEBSITE_CONVERSION",
37
+ "JOB_APPLICANT",
38
+ "TALENT_LEAD",
39
+ ];
40
+ const CONVERSION_TYPES = [
41
+ "ADD_TO_CART",
42
+ "DOWNLOAD",
43
+ "INSTALL",
44
+ "KEY_PAGE_VIEW",
45
+ "LEAD",
46
+ "PURCHASE",
47
+ "SIGN_UP",
48
+ "OTHER",
49
+ ];
50
+ const ACCOUNT_TYPES = ["BUSINESS", "ENTERPRISE"];
51
+ const REQUIRED_FIELDS_CREATE = {
52
+ adAccount: [
53
+ { field: "name", expectedType: "string" },
54
+ { field: "type", expectedType: "string", hint: "Account type", suggestedValues: ACCOUNT_TYPES },
55
+ { field: "currency", expectedType: "string", hint: "ISO 4217 currency code (e.g., USD)" },
56
+ ],
57
+ campaignGroup: [
58
+ { field: "name", expectedType: "string" },
59
+ {
60
+ field: "account",
61
+ expectedType: "string",
62
+ hint: "Ad account URN (e.g., urn:li:sponsoredAccount:123)",
63
+ },
64
+ {
65
+ field: "status",
66
+ expectedType: "string",
67
+ hint: "Campaign group lifecycle status",
68
+ suggestedValues: ACCOUNT_STATUSES,
69
+ },
70
+ ],
71
+ campaign: [
72
+ { field: "name", expectedType: "string" },
73
+ { field: "campaignGroup", expectedType: "string", hint: "Campaign group URN" },
74
+ { field: "account", expectedType: "string", hint: "Ad account URN" },
75
+ {
76
+ field: "type",
77
+ expectedType: "string",
78
+ hint: "Campaign creative format",
79
+ suggestedValues: CAMPAIGN_TYPES,
80
+ },
81
+ {
82
+ field: "objectiveType",
83
+ expectedType: "string",
84
+ hint: "Campaign optimization objective",
85
+ suggestedValues: OBJECTIVE_TYPES,
86
+ },
87
+ {
88
+ field: "status",
89
+ expectedType: "string",
90
+ hint: "Campaign lifecycle status",
91
+ suggestedValues: CAMPAIGN_STATUSES,
92
+ },
93
+ ],
94
+ creative: [
95
+ { field: "campaign", expectedType: "string", hint: "Campaign URN" },
96
+ {
97
+ field: "status",
98
+ expectedType: "string",
99
+ hint: "Creative lifecycle status",
100
+ suggestedValues: CREATIVE_STATUSES,
101
+ },
102
+ { field: "reference", expectedType: "string", hint: "Content reference URN" },
103
+ ],
104
+ conversionRule: [
105
+ { field: "name", expectedType: "string" },
106
+ {
107
+ field: "type",
108
+ expectedType: "string",
109
+ hint: "Conversion event type",
110
+ suggestedValues: CONVERSION_TYPES,
111
+ },
112
+ { field: "account", expectedType: "string", hint: "Ad account URN" },
113
+ {
114
+ field: "status",
115
+ expectedType: "string",
116
+ hint: "Conversion rule status",
117
+ suggestedValues: ["ACTIVE", "PAUSED"],
118
+ },
119
+ ],
120
+ };
121
+ const READ_ONLY_FIELDS = ["id", "changeAuditStamps", "created", "lastModified", "review"];
122
+ export const validateEntityTool = createValidateEntityTool({
123
+ toolName: "linkedin_validate_entity",
124
+ toolTitle: "LinkedIn Ads Entity Validation (Client-Side)",
125
+ toolDescription: `Validate an entity payload against known LinkedIn Ads requirements without calling the API.
126
+
127
+ **Supported entity types:** ${getEntityTypeEnum().join(", ")}
128
+
129
+ Checks required fields, data types, and common configuration mistakes.
130
+ The LinkedIn API may still reject payloads for business-rule reasons.`,
131
+ entityTypeEnum: getEntityTypeEnum(),
132
+ rulesByEntity: REQUIRED_FIELDS_CREATE,
133
+ readOnlyFields: READ_ONLY_FIELDS,
134
+ extraValidate: ({ mode, data, issues }) => {
135
+ if (mode === "create") {
136
+ for (const field of ["account", "campaignGroup", "campaign"]) {
137
+ const value = data[field];
138
+ if (value && typeof value === "string" && !value.startsWith("urn:li:")) {
139
+ issues.push({
140
+ field,
141
+ code: "invalidValue",
142
+ message: `Field "${field}" value "${value}" doesn't look like a LinkedIn URN. Expected format: urn:li:{type}:{id}`,
143
+ severity: "warning",
144
+ });
145
+ }
146
+ }
147
+ }
148
+ if (mode === "update" && Object.keys(data).length === 0) {
149
+ issues.push({
150
+ field: "data",
151
+ code: "custom",
152
+ message: "Update payload must contain at least one field to update",
153
+ severity: "error",
154
+ });
155
+ }
156
+ for (const field of ["dailyBudget", "totalBudget", "unitCost"]) {
157
+ const value = data[field];
158
+ if (value !== undefined && typeof value === "object" && value !== null) {
159
+ const budgetObj = value;
160
+ if (!budgetObj.amount || !budgetObj.currencyCode) {
161
+ issues.push({
162
+ field,
163
+ code: "wrongType",
164
+ message: `Field "${field}" should be an object with "amount" (string) and "currencyCode" (e.g., USD). Got: ${JSON.stringify(value)}`,
165
+ severity: "warning",
166
+ });
167
+ }
168
+ }
169
+ }
170
+ },
171
+ inputExamples: [
172
+ {
173
+ label: "Valid campaign create",
174
+ input: {
175
+ entityType: "campaign",
176
+ mode: "create",
177
+ data: {
178
+ name: "Q1 LinkedIn Campaign",
179
+ campaignGroup: "urn:li:sponsoredCampaignGroup:987654321",
180
+ account: "urn:li:sponsoredAccount:123456789",
181
+ type: "SPONSORED_UPDATES",
182
+ objectiveType: "BRAND_AWARENESS",
183
+ status: "DRAFT",
184
+ },
185
+ },
186
+ },
187
+ {
188
+ label: "Missing required fields (campaign group)",
189
+ input: {
190
+ entityType: "campaignGroup",
191
+ mode: "create",
192
+ data: { name: "Test Campaign Group" },
193
+ },
194
+ },
195
+ ],
196
+ });
197
+ export const ValidateEntityInputSchema = validateEntityTool.inputSchema;
198
+ export const ValidateEntityOutputSchema = validateEntityTool.outputSchema;
199
+ export const validateEntityLogic = validateEntityTool.logic;
200
+ //# 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,13 @@
1
+ export type LinkedInEntityType = "adAccount" | "campaignGroup" | "campaign" | "creative" | "conversionRule";
2
+ export interface LinkedInEntityConfig {
3
+ apiPath: string;
4
+ displayName: string;
5
+ defaultFields: string[];
6
+ listScopingParam?: "accounts[0]" | "account";
7
+ }
8
+ export declare function getEntityConfig(entityType: LinkedInEntityType): LinkedInEntityConfig;
9
+ export declare function getSupportedEntityTypes(): LinkedInEntityType[];
10
+ export declare function getEntityTypeEnum(): [string, ...string[]];
11
+ export declare const ACCOUNT_SCOPED_ENTITY_TYPES: LinkedInEntityType[];
12
+ export declare function isAccountScopedEntity(entityType: LinkedInEntityType): boolean;
13
+ //# 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,kBAAkB,GAC1B,WAAW,GACX,eAAe,GACf,UAAU,GACV,UAAU,GACV,gBAAgB,CAAC;AAErB,MAAM,WAAW,oBAAoB;IAEnC,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,MAAM,EAAE,CAAC;IAOxB,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC9C;AA+CD,wBAAgB,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,oBAAoB,CASpF;AAED,wBAAgB,uBAAuB,IAAI,kBAAkB,EAAE,CAE9D;AAED,wBAAgB,iBAAiB,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAGzD;AAKD,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,EAK3D,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAE7E"}
@@ -0,0 +1,68 @@
1
+ import { JsonRpcErrorCode, McpError } from "@cesteral/shared";
2
+ const ENTITY_CONFIGS = {
3
+ adAccount: {
4
+ apiPath: "/v2/adAccounts",
5
+ displayName: "Ad Account",
6
+ defaultFields: ["id", "name", "status", "currency", "type", "reference"],
7
+ },
8
+ campaignGroup: {
9
+ apiPath: "/v2/adCampaignGroups",
10
+ displayName: "Campaign Group",
11
+ defaultFields: ["id", "name", "status", "account", "totalBudget", "runSchedule"],
12
+ listScopingParam: "account",
13
+ },
14
+ campaign: {
15
+ apiPath: "/v2/adCampaigns",
16
+ displayName: "Campaign",
17
+ defaultFields: [
18
+ "id",
19
+ "name",
20
+ "status",
21
+ "campaignGroup",
22
+ "type",
23
+ "objectiveType",
24
+ "dailyBudget",
25
+ "totalBudget",
26
+ "bidType",
27
+ "unitCost",
28
+ "runSchedule",
29
+ ],
30
+ listScopingParam: "accounts[0]",
31
+ },
32
+ creative: {
33
+ apiPath: "/v2/adCreatives",
34
+ displayName: "Creative",
35
+ defaultFields: ["id", "status", "campaign", "reference", "review"],
36
+ listScopingParam: "accounts[0]",
37
+ },
38
+ conversionRule: {
39
+ apiPath: "/v2/conversions",
40
+ displayName: "Conversion Rule",
41
+ defaultFields: ["id", "name", "type", "account", "status", "urlRules"],
42
+ listScopingParam: "account",
43
+ },
44
+ };
45
+ export function getEntityConfig(entityType) {
46
+ const config = ENTITY_CONFIGS[entityType];
47
+ if (!config) {
48
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Unknown LinkedIn entity type: ${entityType}`);
49
+ }
50
+ return config;
51
+ }
52
+ export function getSupportedEntityTypes() {
53
+ return Object.keys(ENTITY_CONFIGS);
54
+ }
55
+ export function getEntityTypeEnum() {
56
+ const types = getSupportedEntityTypes();
57
+ return types;
58
+ }
59
+ export const ACCOUNT_SCOPED_ENTITY_TYPES = [
60
+ "campaignGroup",
61
+ "campaign",
62
+ "creative",
63
+ "conversionRule",
64
+ ];
65
+ export function isAccountScopedEntity(entityType) {
66
+ return ACCOUNT_SCOPED_ENTITY_TYPES.includes(entityType);
67
+ }
68
+ //# 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":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiC9D,MAAM,cAAc,GAAqD;IACvE,SAAS,EAAE;QACT,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC;KAEzE;IACD,aAAa,EAAE;QACb,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC;QAChF,gBAAgB,EAAE,SAAS;KAC5B;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE;YACb,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,eAAe;YACf,MAAM;YACN,eAAe;YACf,aAAa;YACb,aAAa;YACb,SAAS;YACT,UAAU;YACV,aAAa;SACd;QACD,gBAAgB,EAAE,aAAa;KAChC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;QAClE,gBAAgB,EAAE,aAAa;KAChC;IACD,cAAc,EAAE;QACd,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,iBAAiB;QAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;QACtE,gBAAgB,EAAE,SAAS;KAC5B;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,UAA8B;IAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,iCAAiC,UAAU,EAAE,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAyB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,OAAO,KAA8B,CAAC;AACxC,CAAC;AAKD,MAAM,CAAC,MAAM,2BAA2B,GAAyB;IAC/D,eAAe;IACf,UAAU;IACV,UAAU;IACV,gBAAgB;CACjB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,UAA8B;IAClE,OAAO,2BAA2B,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface LinkedInRegisterUploadResponse {
2
+ value?: {
3
+ uploadMechanism?: {
4
+ "com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest"?: {
5
+ uploadUrl?: string;
6
+ headers?: Record<string, string>;
7
+ };
8
+ };
9
+ asset?: string;
10
+ };
11
+ }
12
+ //# sourceMappingURL=media-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-types.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/media-types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE;QACN,eAAe,CAAC,EAAE;YAChB,4DAA4D,CAAC,EAAE;gBAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAClC,CAAC;SACH,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=media-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-types.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/media-types.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -0,0 +1,6 @@
1
+ import { resolveSessionServicesFromStore } from "@cesteral/shared";
2
+ import { sessionServiceStore } from "../../../services/session-services.js";
3
+ export function resolveSessionServices(sdkContext) {
4
+ return resolveSessionServicesFromStore(sessionServiceStore, sdkContext);
5
+ }
6
+ //# sourceMappingURL=resolve-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-session.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/resolve-session.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uCAAuC,CAAC;AAOlG,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,OAAO,+BAA+B,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { Logger } from "pino";
2
+ export declare const createMcpHttpServer: (config: {
3
+ serviceName: string;
4
+ port: number;
5
+ otelServiceName: string;
6
+ mcpAuthMode: "linkedin-bearer" | "jwt" | "none";
7
+ linkedinApiBaseUrl: string;
8
+ linkedinApiVersion: string;
9
+ linkedinRateLimitPerMinute: number;
10
+ host: string;
11
+ nodeEnv: "development" | "production" | "test";
12
+ mcpStatefulSessionTimeoutMs: number;
13
+ logLevel: "debug" | "info" | "notice" | "warning" | "error";
14
+ mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
15
+ otelEnabled: boolean;
16
+ linkedinAccessToken?: string | undefined;
17
+ linkedinClientId?: string | undefined;
18
+ linkedinClientSecret?: string | undefined;
19
+ linkedinRefreshToken?: string | undefined;
20
+ mcpAuthSecretKey?: string | undefined;
21
+ mcpAllowedOrigins?: string | undefined;
22
+ otelExporterOtlpTracesEndpoint?: string | undefined;
23
+ otelExporterOtlpMetricsEndpoint?: string | undefined;
24
+ gcsBucketName?: string | undefined;
25
+ }, logger: Logger) => ReturnType<typeof import("@cesteral/shared").createMcpHttpTransport>, startHttpServer: (config: {
26
+ serviceName: string;
27
+ port: number;
28
+ otelServiceName: string;
29
+ mcpAuthMode: "linkedin-bearer" | "jwt" | "none";
30
+ linkedinApiBaseUrl: string;
31
+ linkedinApiVersion: string;
32
+ linkedinRateLimitPerMinute: number;
33
+ host: string;
34
+ nodeEnv: "development" | "production" | "test";
35
+ mcpStatefulSessionTimeoutMs: number;
36
+ logLevel: "debug" | "info" | "notice" | "warning" | "error";
37
+ mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
38
+ otelEnabled: boolean;
39
+ linkedinAccessToken?: string | undefined;
40
+ linkedinClientId?: string | undefined;
41
+ linkedinClientSecret?: string | undefined;
42
+ linkedinRefreshToken?: string | undefined;
43
+ mcpAuthSecretKey?: string | undefined;
44
+ mcpAllowedOrigins?: string | undefined;
45
+ otelExporterOtlpTracesEndpoint?: string | undefined;
46
+ otelExporterOtlpMetricsEndpoint?: string | undefined;
47
+ gcsBucketName?: string | undefined;
48
+ }, logger: Logger) => Promise<import("@cesteral/shared").McpHttpServer>;
49
+ //# sourceMappingURL=streamable-http-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamable-http-transport.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/transports/streamable-http-transport.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA+InC,eAAO,MAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;4FAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;uEACS,CAAC"}