@burdenoff/mcp-libs 2026.704.1 → 2026.719.2

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 (185) hide show
  1. package/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
  2. package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
  3. package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
  4. package/dist/chunk-YOSQUY3M.js.map +1 -0
  5. package/dist/core/index.cjs +101 -32
  6. package/dist/core/index.cjs.map +1 -1
  7. package/dist/core/index.d.cts +1 -1
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.js +1 -1
  10. package/dist/index.cjs +97 -31
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/modules/adaptercloud/index.cjs +14 -14
  16. package/dist/modules/adaptercloud/index.cjs.map +1 -1
  17. package/dist/modules/adaptercloud/index.js +1 -1
  18. package/dist/modules/artistrybase/index.cjs +14 -14
  19. package/dist/modules/artistrybase/index.cjs.map +1 -1
  20. package/dist/modules/artistrybase/index.js +1 -1
  21. package/dist/modules/assethandler/index.cjs +14 -14
  22. package/dist/modules/assethandler/index.cjs.map +1 -1
  23. package/dist/modules/assethandler/index.js +1 -1
  24. package/dist/modules/atheletebridge/index.cjs +14 -14
  25. package/dist/modules/atheletebridge/index.cjs.map +1 -1
  26. package/dist/modules/atheletebridge/index.js +1 -1
  27. package/dist/modules/auth/index.cjs +14 -14
  28. package/dist/modules/auth/index.cjs.map +1 -1
  29. package/dist/modules/auth/index.js +3 -3
  30. package/dist/modules/billing/index.cjs +14 -14
  31. package/dist/modules/billing/index.cjs.map +1 -1
  32. package/dist/modules/billing/index.js +1 -1
  33. package/dist/modules/brainyrich/index.cjs +14 -14
  34. package/dist/modules/brainyrich/index.cjs.map +1 -1
  35. package/dist/modules/brainyrich/index.js +1 -1
  36. package/dist/modules/buildmyiq/index.cjs +14 -14
  37. package/dist/modules/buildmyiq/index.cjs.map +1 -1
  38. package/dist/modules/buildmyiq/index.js +1 -1
  39. package/dist/modules/channels/index.cjs +14 -14
  40. package/dist/modules/channels/index.cjs.map +1 -1
  41. package/dist/modules/channels/index.js +1 -1
  42. package/dist/modules/collabkin/index.cjs +14 -14
  43. package/dist/modules/collabkin/index.cjs.map +1 -1
  44. package/dist/modules/collabkin/index.js +1 -1
  45. package/dist/modules/comradecircle/index.cjs +14 -14
  46. package/dist/modules/comradecircle/index.cjs.map +1 -1
  47. package/dist/modules/comradecircle/index.js +1 -1
  48. package/dist/modules/conversations/index.cjs +14 -14
  49. package/dist/modules/conversations/index.cjs.map +1 -1
  50. package/dist/modules/conversations/index.js +1 -1
  51. package/dist/modules/coolandlovely/index.cjs +14 -14
  52. package/dist/modules/coolandlovely/index.cjs.map +1 -1
  53. package/dist/modules/coolandlovely/index.js +1 -1
  54. package/dist/modules/cosmicintersection/index.cjs +14 -14
  55. package/dist/modules/cosmicintersection/index.cjs.map +1 -1
  56. package/dist/modules/cosmicintersection/index.js +1 -1
  57. package/dist/modules/crewfoundry/index.cjs +14 -14
  58. package/dist/modules/crewfoundry/index.cjs.map +1 -1
  59. package/dist/modules/crewfoundry/index.js +1 -1
  60. package/dist/modules/devportal/index.cjs +14 -14
  61. package/dist/modules/devportal/index.cjs.map +1 -1
  62. package/dist/modules/devportal/index.js +1 -1
  63. package/dist/modules/ecoimpacthub/index.cjs +14 -14
  64. package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
  65. package/dist/modules/ecoimpacthub/index.js +1 -1
  66. package/dist/modules/eventfullymanaged/index.cjs +14 -14
  67. package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
  68. package/dist/modules/eventfullymanaged/index.js +1 -1
  69. package/dist/modules/export/index.cjs +14 -14
  70. package/dist/modules/export/index.cjs.map +1 -1
  71. package/dist/modules/export/index.js +1 -1
  72. package/dist/modules/files/index.cjs +14 -14
  73. package/dist/modules/files/index.cjs.map +1 -1
  74. package/dist/modules/files/index.js +1 -1
  75. package/dist/modules/ggnomad/index.cjs +14 -14
  76. package/dist/modules/ggnomad/index.cjs.map +1 -1
  77. package/dist/modules/ggnomad/index.js +1 -1
  78. package/dist/modules/govcitizenhub/index.cjs +14 -14
  79. package/dist/modules/govcitizenhub/index.cjs.map +1 -1
  80. package/dist/modules/govcitizenhub/index.js +1 -1
  81. package/dist/modules/groups/index.cjs +14 -14
  82. package/dist/modules/groups/index.cjs.map +1 -1
  83. package/dist/modules/groups/index.js +1 -1
  84. package/dist/modules/headshotmarketing/index.cjs +14 -14
  85. package/dist/modules/headshotmarketing/index.cjs.map +1 -1
  86. package/dist/modules/headshotmarketing/index.js +1 -1
  87. package/dist/modules/health/index.cjs +21 -19
  88. package/dist/modules/health/index.cjs.map +1 -1
  89. package/dist/modules/health/index.js +1 -1
  90. package/dist/modules/hookmovies/index.cjs +14 -14
  91. package/dist/modules/hookmovies/index.cjs.map +1 -1
  92. package/dist/modules/hookmovies/index.js +1 -1
  93. package/dist/modules/housingvista/index.cjs +14 -14
  94. package/dist/modules/housingvista/index.cjs.map +1 -1
  95. package/dist/modules/housingvista/index.js +1 -1
  96. package/dist/modules/integrations/index.cjs +14 -14
  97. package/dist/modules/integrations/index.cjs.map +1 -1
  98. package/dist/modules/integrations/index.js +1 -1
  99. package/dist/modules/intelwatchtower/index.cjs +14 -14
  100. package/dist/modules/intelwatchtower/index.cjs.map +1 -1
  101. package/dist/modules/intelwatchtower/index.js +1 -1
  102. package/dist/modules/kadaikodi/index.cjs +14 -14
  103. package/dist/modules/kadaikodi/index.cjs.map +1 -1
  104. package/dist/modules/kadaikodi/index.js +1 -1
  105. package/dist/modules/labsofscience/index.cjs +14 -14
  106. package/dist/modules/labsofscience/index.cjs.map +1 -1
  107. package/dist/modules/labsofscience/index.js +1 -1
  108. package/dist/modules/manufacturedops/index.cjs +14 -14
  109. package/dist/modules/manufacturedops/index.cjs.map +1 -1
  110. package/dist/modules/manufacturedops/index.js +1 -1
  111. package/dist/modules/movethewheels/index.cjs +16 -42
  112. package/dist/modules/movethewheels/index.cjs.map +1 -1
  113. package/dist/modules/movethewheels/index.js +3 -29
  114. package/dist/modules/movethewheels/index.js.map +1 -1
  115. package/dist/modules/mybodyshield/index.cjs +14 -14
  116. package/dist/modules/mybodyshield/index.cjs.map +1 -1
  117. package/dist/modules/mybodyshield/index.js +1 -1
  118. package/dist/modules/notifications/index.cjs +14 -14
  119. package/dist/modules/notifications/index.cjs.map +1 -1
  120. package/dist/modules/notifications/index.js +1 -1
  121. package/dist/modules/organizations/index.cjs +14 -14
  122. package/dist/modules/organizations/index.cjs.map +1 -1
  123. package/dist/modules/organizations/index.js +1 -1
  124. package/dist/modules/planmagnet/index.cjs +14 -14
  125. package/dist/modules/planmagnet/index.cjs.map +1 -1
  126. package/dist/modules/planmagnet/index.js +1 -1
  127. package/dist/modules/products/index.cjs +14 -14
  128. package/dist/modules/products/index.cjs.map +1 -1
  129. package/dist/modules/products/index.js +1 -1
  130. package/dist/modules/proserviceworld/index.cjs +14 -14
  131. package/dist/modules/proserviceworld/index.cjs.map +1 -1
  132. package/dist/modules/proserviceworld/index.js +1 -1
  133. package/dist/modules/rbac/index.cjs +14 -14
  134. package/dist/modules/rbac/index.cjs.map +1 -1
  135. package/dist/modules/rbac/index.js +1 -1
  136. package/dist/modules/sandbox/index.cjs +14 -14
  137. package/dist/modules/sandbox/index.cjs.map +1 -1
  138. package/dist/modules/sandbox/index.js +1 -1
  139. package/dist/modules/scheduler/index.cjs +14 -14
  140. package/dist/modules/scheduler/index.cjs.map +1 -1
  141. package/dist/modules/scheduler/index.js +1 -1
  142. package/dist/modules/security/index.cjs +14 -14
  143. package/dist/modules/security/index.cjs.map +1 -1
  144. package/dist/modules/security/index.js +1 -1
  145. package/dist/modules/semanticfed/index.cjs +14 -14
  146. package/dist/modules/semanticfed/index.cjs.map +1 -1
  147. package/dist/modules/semanticfed/index.js +1 -1
  148. package/dist/modules/store/index.cjs +14 -14
  149. package/dist/modules/store/index.cjs.map +1 -1
  150. package/dist/modules/store/index.js +1 -1
  151. package/dist/modules/subscriberbot/index.cjs +14 -14
  152. package/dist/modules/subscriberbot/index.cjs.map +1 -1
  153. package/dist/modules/subscriberbot/index.js +1 -1
  154. package/dist/modules/support/index.cjs +14 -14
  155. package/dist/modules/support/index.cjs.map +1 -1
  156. package/dist/modules/support/index.js +1 -1
  157. package/dist/modules/tags/index.cjs +14 -14
  158. package/dist/modules/tags/index.cjs.map +1 -1
  159. package/dist/modules/tags/index.js +1 -1
  160. package/dist/modules/technospam/index.cjs +14 -14
  161. package/dist/modules/technospam/index.cjs.map +1 -1
  162. package/dist/modules/technospam/index.js +1 -1
  163. package/dist/modules/theculturepost/index.cjs +14 -14
  164. package/dist/modules/theculturepost/index.cjs.map +1 -1
  165. package/dist/modules/theculturepost/index.js +1 -1
  166. package/dist/modules/theglobalfuel/index.cjs +14 -14
  167. package/dist/modules/theglobalfuel/index.cjs.map +1 -1
  168. package/dist/modules/theglobalfuel/index.js +1 -1
  169. package/dist/modules/timecampus/index.cjs +21 -16
  170. package/dist/modules/timecampus/index.cjs.map +1 -1
  171. package/dist/modules/timecampus/index.js +8 -3
  172. package/dist/modules/timecampus/index.js.map +1 -1
  173. package/dist/modules/tours/index.cjs +14 -14
  174. package/dist/modules/tours/index.cjs.map +1 -1
  175. package/dist/modules/tours/index.js +1 -1
  176. package/dist/modules/vibecontrols/index.cjs +14 -14
  177. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  178. package/dist/modules/vibecontrols/index.js +2 -2
  179. package/dist/modules/workspaces/index.cjs +14 -14
  180. package/dist/modules/workspaces/index.cjs.map +1 -1
  181. package/dist/modules/workspaces/index.js +1 -1
  182. package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
  183. package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
  184. package/package.json +1 -1
  185. package/dist/chunk-H2OYWLOA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/headshotmarketing/operations.ts","../../../src/modules/headshotmarketing/tools/shared.ts","../../../src/modules/headshotmarketing/tools/campaigns.ts","../../../src/modules/headshotmarketing/tools/helpers.ts","../../../src/modules/headshotmarketing/tools/contacts.ts","../../../src/modules/headshotmarketing/tools/leads.ts","../../../src/modules/headshotmarketing/tools/deals.ts","../../../src/modules/headshotmarketing/tools/content.ts","../../../src/modules/headshotmarketing/tools/social.ts","../../../src/modules/headshotmarketing/tools/ads.ts","../../../src/modules/headshotmarketing/tools/influencers.ts","../../../src/modules/headshotmarketing/tools/events.ts","../../../src/modules/headshotmarketing/tools/seo.ts","../../../src/modules/headshotmarketing/tools/landing_pages.ts","../../../src/modules/headshotmarketing/tools/workflows.ts","../../../src/modules/headshotmarketing/tools/analytics.ts","../../../src/modules/headshotmarketing/resources.ts","../../../src/modules/headshotmarketing/prompts.ts","../../../src/modules/headshotmarketing/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the Headshotmarketing MCP module.\n *\n * Headshotmarketing is the end-to-end marketing operations platform. Backend\n * subgraph: ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Headshotmarketing inputs do NOT carry a\n * workspaceId (the optional `workspaceId` filter fields are left unset).\n *\n * Every root field is called by its EXACT schema name. Note the inconsistent\n * server prefixing: some operations are `headshotmarketing<Verb><Entity>`\n * (e.g. headshotmarketingCreateContentItem) while others are\n * `<verb>Headshotmarketing<Entity>` (e.g. createHeadshotmarketingCampaign) —\n * both forms appear verbatim below.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (scalar selections; access/refresh tokens deliberately omitted)\n// ---------------------------------------------------------------------------\n\nexport const CAMPAIGN_FIELDS = `\n id name description type status budget spent goals tags startDate endDate\n metadata createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const CAMPAIGN_TEMPLATE_FIELDS = `\n id name description type configuration isActive tags metadata\n createdBy workspaceId createdAt updatedAt\n`;\n\nexport const CONTACT_FIELDS = `\n id firstName lastName email phone company jobTitle avatarUrl address\n socialProfiles customFields status tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const CONTACT_ACTIVITY_FIELDS = `\n id contactId type title description metadata createdBy createdAt\n`;\n\nexport const LEAD_FIELDS = `\n id title description status source score estimatedValue contactId campaignId\n ownerId customFields tags metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const DEAL_FIELDS = `\n id title description status value probability pipelineId stageId contactId\n leadId ownerId expectedCloseDate closedAt customFields tags metadata\n createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const PIPELINE_STAGE_FIELDS = `\n id pipelineId name description order color defaultProbability isActive\n metadata createdAt updatedAt\n`;\n\nexport const PIPELINE_FIELDS = `\n id name description isActive isDefault metadata createdBy workspaceId\n createdAt updatedAt\n stages { ${PIPELINE_STAGE_FIELDS} }\n`;\n\nexport const PIPELINE_OVERVIEW_FIELDS = `\n pipelineId pipelineName totalDeals totalValue stages\n`;\n\nexport const CONTENT_ITEM_FIELDS = `\n id title type status body summary slug tags authorId campaignId\n scheduledAt publishedAt metadata workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id name type url thumbnailUrl mimeType sizeBytes width height altText\n folderId tags metadata uploadedBy workspaceId createdAt updatedAt\n`;\n\nexport const AI_TOOL_FIELDS = `\n id name description category provider model isEnabled configuration\n usageCount metadata workspaceId createdAt updatedAt\n`;\n\nexport const AI_TOOL_EXECUTION_FIELDS = `\n id toolId status input output cost durationMs tokensUsed errorMessage\n executedBy metadata workspaceId createdAt updatedAt\n`;\n\nexport const SOCIAL_ACCOUNT_FIELDS = `\n id platform accountName platformAccountId profileUrl avatarUrl followerCount\n status tokenExpiresAt metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const SOCIAL_POST_FIELDS = `\n id socialAccountId campaignId content mediaUrls status scheduledAt publishedAt\n platformPostId postUrl metrics errorMessage tags metadata createdBy updatedBy\n workspaceId createdAt updatedAt\n`;\n\nexport const AD_CAMPAIGN_FIELDS = `\n id name description platform status campaignId audienceId totalBudget\n dailyBudget spent bidStrategy startDate endDate metrics metadata\n createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const AD_CREATIVE_FIELDS = `\n id adCampaignId name type status headline body callToAction destinationUrl\n mediaUrls metrics metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const AUDIENCE_FIELDS = `\n id name description estimatedSize isActive targetingCriteria tags metadata\n createdBy workspaceId createdAt updatedAt\n`;\n\nexport const INFLUENCER_FIELDS = `\n id name bio email phone location tier totalFollowers engagementRate niches\n platforms audienceDemographics avatarUrl tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const INFLUENCER_CAMPAIGN_FIELDS = `\n id name description influencerId campaignId status compensation compensationType\n deliverables contentDeadline startDate endDate metrics metadata createdBy\n updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const INFLUENCER_RELATIONSHIP_FIELDS = `\n id influencerId status rating notes firstContactDate lastInteractionDate\n totalCampaigns totalCompensation tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const EVENT_FIELDS = `\n id title description type status slug startDate endDate timezone location\n virtualUrl maxAttendees registrationCount coverImageUrl campaignId tags\n metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const EVENT_REGISTRATION_FIELDS = `\n id eventId attendeeName attendeeEmail attendeePhone attendeeCompany\n attendeeTitle status checkedInAt cancelledAt notes registeredBy metadata\n workspaceId createdAt updatedAt\n`;\n\nexport const EVENT_SPEAKER_FIELDS = `\n id eventId name title company bio email linkedinUrl twitterUrl avatarUrl\n topic sortOrder metadata workspaceId createdAt updatedAt\n`;\n\nexport const SEO_KEYWORD_FIELDS = `\n id keyword url status searchVolume difficulty cpc currentRank previousRank\n bestRank lastCheckedAt tags metadata workspaceId createdAt updatedAt\n`;\n\nexport const SEO_AUDIT_FIELDS = `\n id url status pageTitle metaDescription canonicalUrl overallScore seoScore\n performanceScore accessibilityScore bestPracticesScore totalIssues\n criticalIssues warningIssues findings runBy completedAt metadata workspaceId\n createdAt updatedAt\n`;\n\nexport const LANDING_PAGE_SECTION_FIELDS = `\n id landingPageId type title subtitle content settings backgroundColor\n backgroundImageUrl isVisible sortOrder metadata createdAt updatedAt\n`;\n\nexport const LANDING_PAGE_FIELDS = `\n id title slug description status campaignId templateId seoTitle seoDescription\n ogImageUrl faviconUrl customCss customJs publishedUrl publishedAt viewCount\n conversionCount metadata createdBy workspaceId createdAt updatedAt\n sections { ${LANDING_PAGE_SECTION_FIELDS} }\n`;\n\nexport const WORKFLOW_FIELDS = `\n id name description status triggerType triggerConfig steps variables\n isEnabled maxRetries timeoutSeconds executionCount lastExecutedAt tags\n metadata createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const WORKFLOW_EXECUTION_FIELDS = `\n id workflowId status currentStep totalSteps stepLog inputData outputData\n errorMessage errorDetails retryCount durationMs startedAt completedAt\n triggeredBy metadata workspaceId createdAt updatedAt\n`;\n\nexport const CAMPAIGN_ANALYTICS_FIELDS = `\n id campaignId date impressions clicks conversions leads cost revenue ctr\n cpc roas engagementRate bounceRate metadata workspaceId createdAt updatedAt\n`;\n\nexport const CHANNEL_PERFORMANCE_FIELDS = `\n id channel date impressions clicks conversions leads cost revenue ctr cpc\n cpm roas metadata workspaceId createdAt updatedAt\n`;\n\nexport const DASHBOARD_CONFIG_FIELDS = `\n id name description layout widgets filters dateRangePreset isDefault\n metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const REPORT_FIELDS = `\n id name description type status configuration data dateRangeStart dateRangeEnd\n scheduleExpression generatedAt generatedBy metadata workspaceId\n createdAt updatedAt\n`;\n\n// ===========================================================================\n// Campaigns + templates\n// ===========================================================================\n\nexport const GET_CAMPAIGN = `\n query HmGetCampaign($id: ID!) {\n headshotmarketingCampaign(id: $id) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_CAMPAIGNS = `\n query HmListCampaigns($filter: HeadshotmarketingCampaignFilterInput) {\n headshotmarketingCampaigns(filter: $filter) {\n total hasMore items { ${CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CAMPAIGN = `\n mutation HmCreateCampaign($input: CreateHeadshotmarketingCampaignInput!) {\n createHeadshotmarketingCampaign(input: $input) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_CAMPAIGN = `\n mutation HmUpdateCampaign($id: ID!, $input: UpdateHeadshotmarketingCampaignInput!) {\n updateHeadshotmarketingCampaign(id: $id, input: $input) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_CAMPAIGN = `\n mutation HmDeleteCampaign($id: ID!) {\n deleteHeadshotmarketingCampaign(id: $id)\n }\n`;\n\nexport const DUPLICATE_CAMPAIGN = `\n mutation HmDuplicateCampaign($id: ID!) {\n duplicateHeadshotmarketingCampaign(id: $id) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const GET_CAMPAIGN_TEMPLATE = `\n query HmGetCampaignTemplate($id: ID!) {\n headshotmarketingCampaignTemplate(id: $id) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const LIST_CAMPAIGN_TEMPLATES = `\n query HmListCampaignTemplates($filter: HeadshotmarketingCampaignTemplateFilterInput) {\n headshotmarketingCampaignTemplates(filter: $filter) {\n total hasMore items { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CAMPAIGN_TEMPLATE = `\n mutation HmCreateCampaignTemplate($input: CreateHeadshotmarketingCampaignTemplateInput!) {\n createHeadshotmarketingCampaignTemplate(input: $input) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const UPDATE_CAMPAIGN_TEMPLATE = `\n mutation HmUpdateCampaignTemplate($id: ID!, $input: UpdateHeadshotmarketingCampaignTemplateInput!) {\n updateHeadshotmarketingCampaignTemplate(id: $id, input: $input) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const DELETE_CAMPAIGN_TEMPLATE = `\n mutation HmDeleteCampaignTemplate($id: ID!) {\n deleteHeadshotmarketingCampaignTemplate(id: $id)\n }\n`;\n\n// ===========================================================================\n// Contacts\n// ===========================================================================\n\nexport const GET_CONTACT = `\n query HmGetContact($id: ID!) {\n headshotmarketingContact(id: $id) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const LIST_CONTACTS = `\n query HmListContacts($filter: HeadshotmarketingContactFilterInput) {\n headshotmarketingContacts(filter: $filter) {\n total hasMore items { ${CONTACT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_CONTACT_ACTIVITIES = `\n query HmContactActivities($contactId: ID!, $limit: Int, $offset: Int) {\n headshotmarketingContactActivities(contactId: $contactId, limit: $limit, offset: $offset) {\n ${CONTACT_ACTIVITY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_CONTACT = `\n mutation HmCreateContact($input: CreateHeadshotmarketingContactInput!) {\n createHeadshotmarketingContact(input: $input) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONTACT = `\n mutation HmUpdateContact($id: ID!, $input: UpdateHeadshotmarketingContactInput!) {\n updateHeadshotmarketingContact(id: $id, input: $input) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const DELETE_CONTACT = `\n mutation HmDeleteContact($id: ID!) {\n deleteHeadshotmarketingContact(id: $id)\n }\n`;\n\n// ===========================================================================\n// Leads\n// ===========================================================================\n\nexport const GET_LEAD = `\n query HmGetLead($id: ID!) {\n headshotmarketingLead(id: $id) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const LIST_LEADS = `\n query HmListLeads($filter: HeadshotmarketingLeadFilterInput) {\n headshotmarketingLeads(filter: $filter) {\n total hasMore items { ${LEAD_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_LEAD = `\n mutation HmCreateLead($input: CreateHeadshotmarketingLeadInput!) {\n createHeadshotmarketingLead(input: $input) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const UPDATE_LEAD = `\n mutation HmUpdateLead($id: ID!, $input: UpdateHeadshotmarketingLeadInput!) {\n updateHeadshotmarketingLead(id: $id, input: $input) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const DELETE_LEAD = `\n mutation HmDeleteLead($id: ID!) {\n deleteHeadshotmarketingLead(id: $id)\n }\n`;\n\nexport const CONVERT_LEAD = `\n mutation HmConvertLead($leadId: ID!, $pipelineId: ID!, $stageId: ID!, $dealTitle: String!) {\n convertHeadshotmarketingLead(\n leadId: $leadId\n pipelineId: $pipelineId\n stageId: $stageId\n dealTitle: $dealTitle\n ) { ${DEAL_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Deals + pipelines\n// ===========================================================================\n\nexport const GET_DEAL = `\n query HmGetDeal($id: ID!) {\n headshotmarketingDeal(id: $id) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const LIST_DEALS = `\n query HmListDeals($filter: HeadshotmarketingDealFilterInput) {\n headshotmarketingDeals(filter: $filter) {\n total hasMore items { ${DEAL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_DEAL = `\n mutation HmCreateDeal($input: CreateHeadshotmarketingDealInput!) {\n createHeadshotmarketingDeal(input: $input) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_DEAL = `\n mutation HmUpdateDeal($id: ID!, $input: UpdateHeadshotmarketingDealInput!) {\n updateHeadshotmarketingDeal(id: $id, input: $input) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const DELETE_DEAL = `\n mutation HmDeleteDeal($id: ID!) {\n deleteHeadshotmarketingDeal(id: $id)\n }\n`;\n\nexport const MOVE_DEAL = `\n mutation HmMoveDeal($id: ID!, $stageId: ID!) {\n moveHeadshotmarketingDeal(id: $id, stageId: $stageId) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const GET_PIPELINE = `\n query HmGetPipeline($id: ID!) {\n headshotmarketingPipeline(id: $id) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const LIST_PIPELINES = `\n query HmListPipelines($filter: HeadshotmarketingPipelineFilterInput) {\n headshotmarketingPipelines(filter: $filter) {\n total hasMore items { ${PIPELINE_FIELDS} }\n }\n }\n`;\n\nexport const GET_PIPELINE_OVERVIEW = `\n query HmPipelineOverview($pipelineId: ID!) {\n headshotmarketingPipelineOverview(pipelineId: $pipelineId) { ${PIPELINE_OVERVIEW_FIELDS} }\n }\n`;\n\nexport const CREATE_PIPELINE = `\n mutation HmCreatePipeline($input: CreateHeadshotmarketingPipelineInput!) {\n createHeadshotmarketingPipeline(input: $input) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const UPDATE_PIPELINE = `\n mutation HmUpdatePipeline($id: ID!, $input: UpdateHeadshotmarketingPipelineInput!) {\n updateHeadshotmarketingPipeline(id: $id, input: $input) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const DELETE_PIPELINE = `\n mutation HmDeletePipeline($id: ID!) {\n deleteHeadshotmarketingPipeline(id: $id)\n }\n`;\n\nexport const CREATE_PIPELINE_STAGE = `\n mutation HmCreatePipelineStage($input: CreateHeadshotmarketingPipelineStageInput!) {\n createHeadshotmarketingPipelineStage(input: $input) { ${PIPELINE_STAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_PIPELINE_STAGE = `\n mutation HmUpdatePipelineStage($id: ID!, $input: UpdateHeadshotmarketingPipelineStageInput!) {\n updateHeadshotmarketingPipelineStage(id: $id, input: $input) { ${PIPELINE_STAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_PIPELINE_STAGE = `\n mutation HmDeletePipelineStage($id: ID!) {\n deleteHeadshotmarketingPipelineStage(id: $id)\n }\n`;\n\n// ===========================================================================\n// Content: content items, assets, AI tools\n// ===========================================================================\n\nexport const GET_CONTENT_ITEM = `\n query HmGetContentItem($id: ID!) {\n headshotmarketingContentItem(id: $id) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const LIST_CONTENT_ITEMS = `\n query HmListContentItems($filter: HeadshotmarketingContentItemFilterInput, $pagination: PaginationInput) {\n headshotmarketingContentItems(filter: $filter, pagination: $pagination) {\n total hasMore items { ${CONTENT_ITEM_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CONTENT_ITEM = `\n mutation HmCreateContentItem($input: HeadshotmarketingCreateContentItemInput!) {\n headshotmarketingCreateContentItem(input: $input) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONTENT_ITEM = `\n mutation HmUpdateContentItem($id: ID!, $input: HeadshotmarketingUpdateContentItemInput!) {\n headshotmarketingUpdateContentItem(id: $id, input: $input) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const DELETE_CONTENT_ITEM = `\n mutation HmDeleteContentItem($id: ID!) {\n headshotmarketingDeleteContentItem(id: $id)\n }\n`;\n\nexport const GET_ASSET = `\n query HmGetAsset($id: ID!) {\n headshotmarketingAsset(id: $id) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const LIST_ASSETS = `\n query HmListAssets($filter: HeadshotmarketingAssetFilterInput, $pagination: PaginationInput) {\n headshotmarketingAssets(filter: $filter, pagination: $pagination) {\n total hasMore items { ${ASSET_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_ASSET = `\n mutation HmCreateAsset($input: HeadshotmarketingCreateAssetInput!) {\n headshotmarketingCreateAsset(input: $input) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const UPDATE_ASSET = `\n mutation HmUpdateAsset($id: ID!, $input: HeadshotmarketingUpdateAssetInput!) {\n headshotmarketingUpdateAsset(id: $id, input: $input) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const DELETE_ASSET = `\n mutation HmDeleteAsset($id: ID!) {\n headshotmarketingDeleteAsset(id: $id)\n }\n`;\n\nexport const GET_AI_TOOL = `\n query HmGetAITool($id: ID!) {\n headshotmarketingAITool(id: $id) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const LIST_AI_TOOLS = `\n query HmListAITools($filter: HeadshotmarketingAIToolFilterInput, $pagination: PaginationInput) {\n headshotmarketingAITools(filter: $filter, pagination: $pagination) {\n total hasMore items { ${AI_TOOL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AI_TOOL = `\n mutation HmCreateAITool($input: HeadshotmarketingCreateAIToolInput!) {\n headshotmarketingCreateAITool(input: $input) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const UPDATE_AI_TOOL = `\n mutation HmUpdateAITool($id: ID!, $input: HeadshotmarketingUpdateAIToolInput!) {\n headshotmarketingUpdateAITool(id: $id, input: $input) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const DELETE_AI_TOOL = `\n mutation HmDeleteAITool($id: ID!) {\n headshotmarketingDeleteAITool(id: $id)\n }\n`;\n\nexport const EXECUTE_AI_TOOL = `\n mutation HmExecuteAITool($input: HeadshotmarketingExecuteAIToolInput!) {\n headshotmarketingExecuteAITool(input: $input) { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n`;\n\nexport const GET_AI_TOOL_EXECUTION = `\n query HmGetAIToolExecution($id: ID!) {\n headshotmarketingAIToolExecution(id: $id) { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_AI_TOOL_EXECUTIONS = `\n query HmListAIToolExecutions($filter: HeadshotmarketingAIToolExecutionFilterInput, $pagination: PaginationInput) {\n headshotmarketingAIToolExecutions(filter: $filter, pagination: $pagination) {\n total hasMore items { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n }\n`;\n\n// ===========================================================================\n// Social accounts + posts\n// ===========================================================================\n\nexport const GET_SOCIAL_ACCOUNT = `\n query HmGetSocialAccount($id: ID!) {\n headshotmarketingSocialAccount(id: $id) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const LIST_SOCIAL_ACCOUNTS = `\n query HmListSocialAccounts($filter: HeadshotmarketingSocialAccountFilterInput) {\n headshotmarketingSocialAccounts(filter: $filter) {\n total hasMore items { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n }\n`;\n\nexport const SOCIAL_METRICS = `\n query HmSocialMetrics {\n headshotmarketingSocialMetrics {\n totalAccounts totalPosts publishedPosts scheduledPosts totalFollowers totalEngagement\n }\n }\n`;\n\nexport const CREATE_SOCIAL_ACCOUNT = `\n mutation HmCreateSocialAccount($input: CreateHeadshotmarketingSocialAccountInput!) {\n createHeadshotmarketingSocialAccount(input: $input) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOCIAL_ACCOUNT = `\n mutation HmUpdateSocialAccount($id: ID!, $input: UpdateHeadshotmarketingSocialAccountInput!) {\n updateHeadshotmarketingSocialAccount(id: $id, input: $input) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const DELETE_SOCIAL_ACCOUNT = `\n mutation HmDeleteSocialAccount($id: ID!) {\n deleteHeadshotmarketingSocialAccount(id: $id)\n }\n`;\n\nexport const DISCONNECT_SOCIAL_ACCOUNT = `\n mutation HmDisconnectSocialAccount($id: ID!) {\n disconnectHeadshotmarketingSocialAccount(id: $id) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const GET_SOCIAL_POST = `\n query HmGetSocialPost($id: ID!) {\n headshotmarketingSocialPost(id: $id) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const LIST_SOCIAL_POSTS = `\n query HmListSocialPosts($filter: HeadshotmarketingSocialPostFilterInput) {\n headshotmarketingSocialPosts(filter: $filter) {\n total hasMore items { ${SOCIAL_POST_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SOCIAL_POST = `\n mutation HmCreateSocialPost($input: CreateHeadshotmarketingSocialPostInput!) {\n createHeadshotmarketingSocialPost(input: $input) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOCIAL_POST = `\n mutation HmUpdateSocialPost($id: ID!, $input: UpdateHeadshotmarketingSocialPostInput!) {\n updateHeadshotmarketingSocialPost(id: $id, input: $input) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const DELETE_SOCIAL_POST = `\n mutation HmDeleteSocialPost($id: ID!) {\n deleteHeadshotmarketingSocialPost(id: $id)\n }\n`;\n\nexport const PUBLISH_SOCIAL_POST = `\n mutation HmPublishSocialPost($id: ID!) {\n publishHeadshotmarketingSocialPost(id: $id) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const SCHEDULE_SOCIAL_POST = `\n mutation HmScheduleSocialPost($id: ID!, $scheduledAt: DateTime!) {\n scheduleHeadshotmarketingSocialPost(id: $id, scheduledAt: $scheduledAt) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Paid ads: ad campaigns, ad creatives, audiences\n// ===========================================================================\n\nexport const GET_AD_CAMPAIGN = `\n query HmGetAdCampaign($id: ID!) {\n headshotmarketingAdCampaign(id: $id) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_AD_CAMPAIGNS = `\n query HmListAdCampaigns($filter: HeadshotmarketingAdCampaignFilterInput) {\n headshotmarketingAdCampaigns(filter: $filter) {\n total hasMore items { ${AD_CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const AD_METRICS = `\n query HmAdMetrics {\n headshotmarketingAdMetrics {\n totalAdCampaigns activeAdCampaigns totalCreatives totalImpressions totalClicks totalSpent\n }\n }\n`;\n\nexport const CREATE_AD_CAMPAIGN = `\n mutation HmCreateAdCampaign($input: CreateHeadshotmarketingAdCampaignInput!) {\n createHeadshotmarketingAdCampaign(input: $input) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_AD_CAMPAIGN = `\n mutation HmUpdateAdCampaign($id: ID!, $input: UpdateHeadshotmarketingAdCampaignInput!) {\n updateHeadshotmarketingAdCampaign(id: $id, input: $input) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_AD_CAMPAIGN = `\n mutation HmDeleteAdCampaign($id: ID!) {\n deleteHeadshotmarketingAdCampaign(id: $id)\n }\n`;\n\nexport const GET_AD_CREATIVE = `\n query HmGetAdCreative($id: ID!) {\n headshotmarketingAdCreative(id: $id) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const LIST_AD_CREATIVES = `\n query HmListAdCreatives($filter: HeadshotmarketingAdCreativeFilterInput) {\n headshotmarketingAdCreatives(filter: $filter) {\n total hasMore items { ${AD_CREATIVE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AD_CREATIVE = `\n mutation HmCreateAdCreative($input: CreateHeadshotmarketingAdCreativeInput!) {\n createHeadshotmarketingAdCreative(input: $input) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const UPDATE_AD_CREATIVE = `\n mutation HmUpdateAdCreative($id: ID!, $input: UpdateHeadshotmarketingAdCreativeInput!) {\n updateHeadshotmarketingAdCreative(id: $id, input: $input) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const DELETE_AD_CREATIVE = `\n mutation HmDeleteAdCreative($id: ID!) {\n deleteHeadshotmarketingAdCreative(id: $id)\n }\n`;\n\nexport const GET_AUDIENCE = `\n query HmGetAudience($id: ID!) {\n headshotmarketingAudience(id: $id) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const LIST_AUDIENCES = `\n query HmListAudiences($filter: HeadshotmarketingAudienceFilterInput) {\n headshotmarketingAudiences(filter: $filter) {\n total hasMore items { ${AUDIENCE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AUDIENCE = `\n mutation HmCreateAudience($input: CreateHeadshotmarketingAudienceInput!) {\n createHeadshotmarketingAudience(input: $input) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_AUDIENCE = `\n mutation HmUpdateAudience($id: ID!, $input: UpdateHeadshotmarketingAudienceInput!) {\n updateHeadshotmarketingAudience(id: $id, input: $input) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const DELETE_AUDIENCE = `\n mutation HmDeleteAudience($id: ID!) {\n deleteHeadshotmarketingAudience(id: $id)\n }\n`;\n\n// ===========================================================================\n// Influencers, influencer campaigns, relationships\n// ===========================================================================\n\nexport const GET_INFLUENCER = `\n query HmGetInfluencer($id: ID!) {\n headshotmarketingInfluencer(id: $id) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCERS = `\n query HmListInfluencers($filter: HeadshotmarketingInfluencerFilterInput) {\n headshotmarketingInfluencers(filter: $filter) {\n total hasMore items { ${INFLUENCER_FIELDS} }\n }\n }\n`;\n\nexport const DISCOVER_INFLUENCERS = `\n query HmDiscoverInfluencers($filter: HeadshotmarketingInfluencerFilterInput) {\n headshotmarketingDiscoverInfluencers(filter: $filter) {\n total hasMore items { ${INFLUENCER_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER = `\n mutation HmCreateInfluencer($input: CreateHeadshotmarketingInfluencerInput!) {\n createHeadshotmarketingInfluencer(input: $input) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER = `\n mutation HmUpdateInfluencer($id: ID!, $input: UpdateHeadshotmarketingInfluencerInput!) {\n updateHeadshotmarketingInfluencer(id: $id, input: $input) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER = `\n mutation HmDeleteInfluencer($id: ID!) {\n deleteHeadshotmarketingInfluencer(id: $id)\n }\n`;\n\nexport const GET_INFLUENCER_CAMPAIGN = `\n query HmGetInfluencerCampaign($id: ID!) {\n headshotmarketingInfluencerCampaign(id: $id) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCER_CAMPAIGNS = `\n query HmListInfluencerCampaigns($filter: HeadshotmarketingInfluencerCampaignFilterInput) {\n headshotmarketingInfluencerCampaigns(filter: $filter) {\n total hasMore items { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER_CAMPAIGN = `\n mutation HmCreateInfluencerCampaign($input: CreateHeadshotmarketingInfluencerCampaignInput!) {\n createHeadshotmarketingInfluencerCampaign(input: $input) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER_CAMPAIGN = `\n mutation HmUpdateInfluencerCampaign($id: ID!, $input: UpdateHeadshotmarketingInfluencerCampaignInput!) {\n updateHeadshotmarketingInfluencerCampaign(id: $id, input: $input) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER_CAMPAIGN = `\n mutation HmDeleteInfluencerCampaign($id: ID!) {\n deleteHeadshotmarketingInfluencerCampaign(id: $id)\n }\n`;\n\nexport const GET_INFLUENCER_RELATIONSHIP = `\n query HmGetInfluencerRelationship($id: ID!) {\n headshotmarketingInfluencerRelationship(id: $id) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCER_RELATIONSHIPS = `\n query HmListInfluencerRelationships($filter: HeadshotmarketingInfluencerRelationshipFilterInput) {\n headshotmarketingInfluencerRelationships(filter: $filter) {\n total hasMore items { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER_RELATIONSHIP = `\n mutation HmCreateInfluencerRelationship($input: CreateHeadshotmarketingInfluencerRelationshipInput!) {\n createHeadshotmarketingInfluencerRelationship(input: $input) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER_RELATIONSHIP = `\n mutation HmUpdateInfluencerRelationship($id: ID!, $input: UpdateHeadshotmarketingInfluencerRelationshipInput!) {\n updateHeadshotmarketingInfluencerRelationship(id: $id, input: $input) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER_RELATIONSHIP = `\n mutation HmDeleteInfluencerRelationship($id: ID!) {\n deleteHeadshotmarketingInfluencerRelationship(id: $id)\n }\n`;\n\nexport const UPDATE_INFLUENCER_RELATIONSHIP_STATUS = `\n mutation HmUpdateInfluencerRelationshipStatus($id: ID!, $status: HeadshotmarketingInfluencerRelationshipStatus!) {\n updateHeadshotmarketingInfluencerRelationshipStatus(id: $id, status: $status) {\n ${INFLUENCER_RELATIONSHIP_FIELDS}\n }\n }\n`;\n\n// ===========================================================================\n// Events, registrations, speakers\n// ===========================================================================\n\nexport const GET_EVENT = `\n query HmGetEvent($id: ID!) {\n headshotmarketingEvent(id: $id) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const LIST_EVENTS = `\n query HmListEvents($filter: HeadshotmarketingEventFilterInput, $pagination: PaginationInput) {\n headshotmarketingEvents(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT = `\n mutation HmCreateEvent($input: HeadshotmarketingCreateEventInput!) {\n headshotmarketingCreateEvent(input: $input) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT = `\n mutation HmUpdateEvent($id: ID!, $input: HeadshotmarketingUpdateEventInput!) {\n headshotmarketingUpdateEvent(id: $id, input: $input) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const DELETE_EVENT = `\n mutation HmDeleteEvent($id: ID!) {\n headshotmarketingDeleteEvent(id: $id)\n }\n`;\n\nexport const GET_EVENT_REGISTRATION = `\n query HmGetEventRegistration($id: ID!) {\n headshotmarketingEventRegistration(id: $id) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const LIST_EVENT_REGISTRATIONS = `\n query HmListEventRegistrations($filter: HeadshotmarketingEventRegistrationFilterInput, $pagination: PaginationInput) {\n headshotmarketingEventRegistrations(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_REGISTRATION_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT_REGISTRATION = `\n mutation HmCreateEventRegistration($input: HeadshotmarketingCreateEventRegistrationInput!) {\n headshotmarketingCreateEventRegistration(input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT_REGISTRATION = `\n mutation HmUpdateEventRegistration($id: ID!, $input: HeadshotmarketingUpdateEventRegistrationInput!) {\n headshotmarketingUpdateEventRegistration(id: $id, input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const REGISTER_FOR_EVENT = `\n mutation HmRegisterForEvent($input: HeadshotmarketingCreateEventRegistrationInput!) {\n headshotmarketingRegisterForEvent(input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const CHECK_IN_ATTENDEE = `\n mutation HmCheckInAttendee($registrationId: ID!) {\n headshotmarketingCheckInAttendee(registrationId: $registrationId) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const CANCEL_REGISTRATION = `\n mutation HmCancelRegistration($registrationId: ID!) {\n headshotmarketingCancelRegistration(registrationId: $registrationId) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const GET_EVENT_SPEAKER = `\n query HmGetEventSpeaker($id: ID!) {\n headshotmarketingEventSpeaker(id: $id) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const LIST_EVENT_SPEAKERS = `\n query HmListEventSpeakers($filter: HeadshotmarketingEventSpeakerFilterInput, $pagination: PaginationInput) {\n headshotmarketingEventSpeakers(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_SPEAKER_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT_SPEAKER = `\n mutation HmCreateEventSpeaker($input: HeadshotmarketingCreateEventSpeakerInput!) {\n headshotmarketingCreateEventSpeaker(input: $input) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT_SPEAKER = `\n mutation HmUpdateEventSpeaker($id: ID!, $input: HeadshotmarketingUpdateEventSpeakerInput!) {\n headshotmarketingUpdateEventSpeaker(id: $id, input: $input) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const DELETE_EVENT_SPEAKER = `\n mutation HmDeleteEventSpeaker($id: ID!) {\n headshotmarketingDeleteEventSpeaker(id: $id)\n }\n`;\n\n// ===========================================================================\n// SEO keywords + audits\n// ===========================================================================\n\nexport const GET_SEO_KEYWORD = `\n query HmGetSEOKeyword($id: ID!) {\n headshotmarketingSEOKeyword(id: $id) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const LIST_SEO_KEYWORDS = `\n query HmListSEOKeywords($filter: HeadshotmarketingSEOKeywordFilterInput, $pagination: PaginationInput) {\n headshotmarketingSEOKeywords(filter: $filter, pagination: $pagination) {\n total hasMore items { ${SEO_KEYWORD_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SEO_KEYWORD = `\n mutation HmCreateSEOKeyword($input: HeadshotmarketingCreateSEOKeywordInput!) {\n headshotmarketingCreateSEOKeyword(input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const UPDATE_SEO_KEYWORD = `\n mutation HmUpdateSEOKeyword($id: ID!, $input: HeadshotmarketingUpdateSEOKeywordInput!) {\n headshotmarketingUpdateSEOKeyword(id: $id, input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const DELETE_SEO_KEYWORD = `\n mutation HmDeleteSEOKeyword($id: ID!) {\n headshotmarketingDeleteSEOKeyword(id: $id)\n }\n`;\n\nexport const TRACK_KEYWORD = `\n mutation HmTrackKeyword($input: HeadshotmarketingCreateSEOKeywordInput!) {\n headshotmarketingTrackKeyword(input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const GET_SEO_AUDIT = `\n query HmGetSEOAudit($id: ID!) {\n headshotmarketingSEOAudit(id: $id) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const LIST_SEO_AUDITS = `\n query HmListSEOAudits($filter: HeadshotmarketingSEOAuditFilterInput, $pagination: PaginationInput) {\n headshotmarketingSEOAudits(filter: $filter, pagination: $pagination) {\n total hasMore items { ${SEO_AUDIT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SEO_AUDIT = `\n mutation HmCreateSEOAudit($input: HeadshotmarketingCreateSEOAuditInput!) {\n headshotmarketingCreateSEOAudit(input: $input) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const UPDATE_SEO_AUDIT = `\n mutation HmUpdateSEOAudit($id: ID!, $input: HeadshotmarketingUpdateSEOAuditInput!) {\n headshotmarketingUpdateSEOAudit(id: $id, input: $input) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const DELETE_SEO_AUDIT = `\n mutation HmDeleteSEOAudit($id: ID!) {\n headshotmarketingDeleteSEOAudit(id: $id)\n }\n`;\n\nexport const RUN_SEO_AUDIT = `\n mutation HmRunSEOAudit($url: String!) {\n headshotmarketingRunSEOAudit(url: $url) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const SEO_OVERVIEW = `\n query HmSEOOverview {\n headshotmarketingSEOOverview {\n totalKeywords totalAudits avgSEOScore avgPerformanceScore avgRank\n keywordsImproved keywordsDeclined keywordsUnchanged topKeywords\n }\n }\n`;\n\n// ===========================================================================\n// Landing pages + sections (builder)\n// ===========================================================================\n\nexport const GET_LANDING_PAGE = `\n query HmGetLandingPage($id: ID!) {\n headshotmarketingLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const GET_LANDING_PAGE_BY_SLUG = `\n query HmGetLandingPageBySlug($slug: String!) {\n headshotmarketingLandingPageBySlug(slug: $slug) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const LIST_LANDING_PAGES = `\n query HmListLandingPages($filter: HeadshotmarketingLandingPageFilterInput, $pagination: PaginationInput) {\n headshotmarketingLandingPages(filter: $filter, pagination: $pagination) {\n total hasMore items { ${LANDING_PAGE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_LANDING_PAGE = `\n mutation HmCreateLandingPage($input: HeadshotmarketingCreateLandingPageInput!) {\n headshotmarketingCreateLandingPage(input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_LANDING_PAGE = `\n mutation HmUpdateLandingPage($id: ID!, $input: HeadshotmarketingUpdateLandingPageInput!) {\n headshotmarketingUpdateLandingPage(id: $id, input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_LANDING_PAGE = `\n mutation HmDeleteLandingPage($id: ID!) {\n headshotmarketingDeleteLandingPage(id: $id)\n }\n`;\n\nexport const PUBLISH_LANDING_PAGE = `\n mutation HmPublishLandingPage($id: ID!) {\n headshotmarketingPublishLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const UNPUBLISH_LANDING_PAGE = `\n mutation HmUnpublishLandingPage($id: ID!) {\n headshotmarketingUnpublishLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const ADD_LANDING_PAGE_SECTION = `\n mutation HmAddLandingPageSection($input: HeadshotmarketingAddLandingPageSectionInput!) {\n headshotmarketingAddLandingPageSection(input: $input) { ${LANDING_PAGE_SECTION_FIELDS} }\n }\n`;\n\nexport const UPDATE_LANDING_PAGE_SECTION = `\n mutation HmUpdateLandingPageSection($id: ID!, $input: HeadshotmarketingUpdateLandingPageSectionInput!) {\n headshotmarketingUpdateLandingPageSection(id: $id, input: $input) { ${LANDING_PAGE_SECTION_FIELDS} }\n }\n`;\n\nexport const REMOVE_LANDING_PAGE_SECTION = `\n mutation HmRemoveLandingPageSection($id: ID!) {\n headshotmarketingRemoveLandingPageSection(id: $id)\n }\n`;\n\nexport const REORDER_LANDING_PAGE_SECTIONS = `\n mutation HmReorderLandingPageSections($input: HeadshotmarketingReorderSectionsInput!) {\n headshotmarketingReorderLandingPageSections(input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Workflows + executions\n// ===========================================================================\n\nexport const GET_WORKFLOW = `\n query HmGetWorkflow($id: ID!) {\n headshotmarketingWorkflow(id: $id) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const LIST_WORKFLOWS = `\n query HmListWorkflows($filter: HeadshotmarketingWorkflowFilterInput) {\n headshotmarketingWorkflows(filter: $filter) {\n total hasMore items { ${WORKFLOW_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_WORKFLOW = `\n mutation HmCreateWorkflow($input: CreateHeadshotmarketingWorkflowInput!) {\n createHeadshotmarketingWorkflow(input: $input) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const UPDATE_WORKFLOW = `\n mutation HmUpdateWorkflow($id: ID!, $input: UpdateHeadshotmarketingWorkflowInput!) {\n updateHeadshotmarketingWorkflow(id: $id, input: $input) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const DELETE_WORKFLOW = `\n mutation HmDeleteWorkflow($id: ID!) {\n deleteHeadshotmarketingWorkflow(id: $id)\n }\n`;\n\nexport const TRIGGER_WORKFLOW = `\n mutation HmTriggerWorkflow($input: TriggerHeadshotmarketingWorkflowInput!) {\n triggerHeadshotmarketingWorkflow(input: $input) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\nexport const GET_WORKFLOW_EXECUTION = `\n query HmGetWorkflowExecution($id: ID!) {\n headshotmarketingWorkflowExecution(id: $id) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_WORKFLOW_EXECUTIONS = `\n query HmListWorkflowExecutions($filter: HeadshotmarketingWorkflowExecutionFilterInput) {\n headshotmarketingWorkflowExecutions(filter: $filter) {\n total hasMore items { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n }\n`;\n\nexport const CANCEL_WORKFLOW_EXECUTION = `\n mutation HmCancelWorkflowExecution($id: ID!) {\n cancelHeadshotmarketingWorkflowExecution(id: $id) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Analytics: dashboard, campaign analytics, channel performance, funnel,\n// time series, content performance, reports, dashboard configs\n// ===========================================================================\n\nexport const DASHBOARD_METRICS = `\n query HmDashboardMetrics($dateRange: HeadshotmarketingDateRangeInput) {\n headshotmarketingDashboardMetrics(dateRange: $dateRange) {\n totalCampaigns activeCampaigns totalImpressions totalClicks totalConversions\n totalLeads totalRevenue totalCost overallCTR overallCPC overallROAS\n topCampaignId topChannel periodStart periodEnd\n }\n }\n`;\n\nexport const CONTENT_PERFORMANCE = `\n query HmContentPerformance {\n headshotmarketingContentPerformance {\n totalItems publishedItems draftItems totalAssets totalAIExecutions\n avgContentScore topPerformingTypes { type count }\n }\n }\n`;\n\nexport const FUNNEL_DATA = `\n query HmFunnelData {\n headshotmarketingFunnelData {\n name count value conversionRate dropOffRate\n }\n }\n`;\n\nexport const TIME_SERIES_DATA = `\n query HmTimeSeriesData($dateRange: HeadshotmarketingDateRangeInput!, $metric: HeadshotmarketingMetricType!) {\n headshotmarketingTimeSeriesData(dateRange: $dateRange, metric: $metric) {\n metric total average min max dataPoints\n }\n }\n`;\n\nexport const CAMPAIGN_ANALYTICS = `\n query HmCampaignAnalytics($campaignId: ID!, $dateRange: HeadshotmarketingDateRangeInput) {\n headshotmarketingCampaignAnalytics(campaignId: $campaignId, dateRange: $dateRange) {\n total hasMore items { ${CAMPAIGN_ANALYTICS_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_CAMPAIGN_ANALYTICS = `\n mutation HmRecordCampaignAnalytics($input: HeadshotmarketingRecordCampaignAnalyticsInput!) {\n headshotmarketingRecordCampaignAnalytics(input: $input) { ${CAMPAIGN_ANALYTICS_FIELDS} }\n }\n`;\n\nexport const CHANNEL_PERFORMANCE = `\n query HmChannelPerformance($dateRange: HeadshotmarketingDateRangeInput!) {\n headshotmarketingChannelPerformance(dateRange: $dateRange) {\n total hasMore items { ${CHANNEL_PERFORMANCE_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_CHANNEL_PERFORMANCE = `\n mutation HmRecordChannelPerformance($input: HeadshotmarketingRecordChannelPerformanceInput!) {\n headshotmarketingRecordChannelPerformance(input: $input) { ${CHANNEL_PERFORMANCE_FIELDS} }\n }\n`;\n\nexport const GET_DASHBOARD_CONFIG = `\n query HmGetDashboardConfig($id: ID!) {\n headshotmarketingDashboardConfig(id: $id) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const LIST_DASHBOARD_CONFIGS = `\n query HmListDashboardConfigs($filter: HeadshotmarketingDashboardConfigFilterInput, $pagination: PaginationInput) {\n headshotmarketingDashboardConfigs(filter: $filter, pagination: $pagination) {\n total hasMore items { ${DASHBOARD_CONFIG_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_DASHBOARD_CONFIG = `\n mutation HmCreateDashboardConfig($input: HeadshotmarketingCreateDashboardConfigInput!) {\n headshotmarketingCreateDashboardConfig(input: $input) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const UPDATE_DASHBOARD_CONFIG = `\n mutation HmUpdateDashboardConfig($id: ID!, $input: HeadshotmarketingUpdateDashboardConfigInput!) {\n headshotmarketingUpdateDashboardConfig(id: $id, input: $input) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_DASHBOARD_CONFIG = `\n mutation HmDeleteDashboardConfig($id: ID!) {\n headshotmarketingDeleteDashboardConfig(id: $id)\n }\n`;\n\nexport const GET_REPORT = `\n query HmGetReport($id: ID!) {\n headshotmarketingReport(id: $id) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const LIST_REPORTS = `\n query HmListReports($filter: HeadshotmarketingReportFilterInput, $pagination: PaginationInput) {\n headshotmarketingReports(filter: $filter, pagination: $pagination) {\n total hasMore items { ${REPORT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_REPORT = `\n mutation HmCreateReport($input: HeadshotmarketingCreateReportInput!) {\n headshotmarketingCreateReport(input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const UPDATE_REPORT = `\n mutation HmUpdateReport($id: ID!, $input: HeadshotmarketingUpdateReportInput!) {\n headshotmarketingUpdateReport(id: $id, input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const DELETE_REPORT = `\n mutation HmDeleteReport($id: ID!) {\n headshotmarketingDeleteReport(id: $id)\n }\n`;\n","/**\n * Shared zod schemas for the Headshotmarketing tool surface.\n *\n * Headshotmarketing is the end-to-end marketing operations platform\n * (campaigns, CRM contacts/leads/deals, content + assets + AI tools, social,\n * paid ads + audiences, influencers, events, SEO, landing-page builder,\n * workflows, and analytics). Backend subgraph:\n * ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`).\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. JSON scalar inputs (metadata,\n * goals, configuration, targetingCriteria, etc.) are modelled as permissive\n * object records — the backend accepts arbitrary JSON, but a record shape gives\n * the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\n// ── AI tools ────────────────────────────────────────────────────────────────\n\nexport const AIToolCategoryEnum = z\n .enum([\n 'CONTENT_GENERATION',\n 'COPYWRITING',\n 'IMAGE_GENERATION',\n 'OTHER',\n 'SEO_OPTIMIZATION',\n 'SUMMARIZATION',\n 'TRANSLATION',\n 'VIDEO_GENERATION',\n ])\n .describe('Category of an AI marketing tool');\n\nexport const AIToolExecutionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Status of an AI tool execution');\n\n// ── Assets / content ─────────────────────────────────────────────────────────\n\nexport const AssetTypeEnum = z\n .enum(['AUDIO', 'DOCUMENT', 'FONT', 'ICON', 'IMAGE', 'OTHER', 'TEMPLATE', 'VIDEO'])\n .describe('Type of a digital asset');\n\nexport const ContentItemStatusEnum = z\n .enum(['APPROVED', 'ARCHIVED', 'DRAFT', 'IN_REVIEW', 'PUBLISHED'])\n .describe('Lifecycle status of a content item');\n\nexport const ContentItemTypeEnum = z\n .enum([\n 'AD_COPY',\n 'BLOG_POST',\n 'CASE_STUDY',\n 'EMAIL',\n 'INFOGRAPHIC',\n 'LANDING_PAGE',\n 'OTHER',\n 'SOCIAL_POST',\n 'VIDEO_SCRIPT',\n 'WHITEPAPER',\n ])\n .describe('Type of a content item');\n\n// ── Campaigns ─────────────────────────────────────────────────────────────────\n\nexport const CampaignStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'COMPLETED', 'DRAFT', 'PAUSED', 'SCHEDULED'])\n .describe('Lifecycle status of a marketing campaign');\n\nexport const CampaignTypeEnum = z\n .enum(['AD', 'CONTENT', 'EMAIL', 'EVENT', 'INFLUENCER', 'MULTI_CHANNEL', 'SOCIAL'])\n .describe('Type / channel of a marketing campaign');\n\n// ── Paid ads ──────────────────────────────────────────────────────────────────\n\nexport const AdCampaignStatusEnum = z\n .enum(['ACTIVE', 'COMPLETED', 'DRAFT', 'PAUSED', 'PENDING_REVIEW', 'REJECTED'])\n .describe('Status of a paid ad campaign');\n\nexport const AdCreativeStatusEnum = z\n .enum(['ACTIVE', 'APPROVED', 'DRAFT', 'PAUSED', 'PENDING_REVIEW', 'REJECTED'])\n .describe('Status of an ad creative');\n\nexport const AdCreativeTypeEnum = z\n .enum(['CAROUSEL', 'IMAGE', 'RESPONSIVE', 'TEXT', 'VIDEO'])\n .describe('Type of an ad creative asset');\n\nexport const AdPlatformEnum = z\n .enum([\n 'FACEBOOK_ADS',\n 'GOOGLE_ADS',\n 'INSTAGRAM_ADS',\n 'LINKEDIN_ADS',\n 'TIKTOK_ADS',\n 'TWITTER_ADS',\n ])\n .describe('External ad platform');\n\n// ── CRM ───────────────────────────────────────────────────────────────────────\n\nexport const ContactStatusEnum = z\n .enum(['ACTIVE', 'BOUNCED', 'INACTIVE', 'UNSUBSCRIBED'])\n .describe('Status of a CRM contact');\n\nexport const LeadSourceEnum = z\n .enum([\n 'AD_CAMPAIGN',\n 'COLD_OUTREACH',\n 'EMAIL',\n 'EVENT',\n 'OTHER',\n 'REFERRAL',\n 'SOCIAL_MEDIA',\n 'WEBSITE',\n ])\n .describe('Acquisition source of a lead');\n\nexport const LeadStatusEnum = z\n .enum(['CONTACTED', 'CONVERTED', 'LOST', 'NEW', 'QUALIFIED', 'UNQUALIFIED'])\n .describe('Status of a lead');\n\nexport const DealStatusEnum = z\n .enum(['LOST', 'OPEN', 'STALE', 'WON'])\n .describe('Status of a sales deal');\n\n// ── Influencers ───────────────────────────────────────────────────────────────\n\nexport const InfluencerTierEnum = z\n .enum(['CELEBRITY', 'MACRO', 'MEGA', 'MICRO', 'MID', 'NANO'])\n .describe('Influencer tier based on follower count');\n\nexport const InfluencerCampaignStatusEnum = z\n .enum([\n 'ACCEPTED',\n 'APPROVED',\n 'CANCELLED',\n 'COMPLETED',\n 'CONTENT_SUBMITTED',\n 'IN_PROGRESS',\n 'NEGOTIATING',\n 'PROPOSED',\n 'PUBLISHED',\n ])\n .describe('Status of an influencer campaign');\n\nexport const InfluencerRelationshipStatusEnum = z\n .enum(['ACTIVE', 'ENDED', 'NEGOTIATING', 'OUTREACH', 'PAUSED', 'PROSPECT'])\n .describe('Status of an influencer relationship');\n\n// ── Social ────────────────────────────────────────────────────────────────────\n\nexport const SocialPlatformEnum = z\n .enum(['FACEBOOK', 'INSTAGRAM', 'LINKEDIN', 'PINTEREST', 'TIKTOK', 'TWITTER', 'YOUTUBE'])\n .describe('Social media platform');\n\nexport const SocialAccountStatusEnum = z\n .enum(['CONNECTED', 'DISCONNECTED', 'ERROR', 'EXPIRED'])\n .describe('Connection status of a social account');\n\nexport const SocialPostStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'FAILED', 'PUBLISHED', 'PUBLISHING', 'SCHEDULED'])\n .describe('Status of a social media post');\n\n// ── Events ────────────────────────────────────────────────────────────────────\n\nexport const EventTypeEnum = z\n .enum([\n 'CONFERENCE',\n 'MEETUP',\n 'NETWORKING',\n 'OTHER',\n 'PRODUCT_LAUNCH',\n 'TRADESHOW',\n 'WEBINAR',\n 'WORKSHOP',\n ])\n .describe('Type of a marketing event');\n\nexport const EventStatusEnum = z\n .enum([\n 'CANCELLED',\n 'COMPLETED',\n 'DRAFT',\n 'IN_PROGRESS',\n 'PUBLISHED',\n 'REGISTRATION_CLOSED',\n 'REGISTRATION_OPEN',\n ])\n .describe('Status of a marketing event');\n\nexport const EventRegistrationStatusEnum = z\n .enum(['CANCELLED', 'CHECKED_IN', 'CONFIRMED', 'NO_SHOW', 'REGISTERED', 'WAITLISTED'])\n .describe('Status of an event registration');\n\n// ── SEO ───────────────────────────────────────────────────────────────────────\n\nexport const SEOAuditStatusEnum = z\n .enum(['COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Status of an SEO audit');\n\nexport const SEOKeywordStatusEnum = z\n .enum(['ARCHIVED', 'PAUSED', 'TRACKING'])\n .describe('Tracking status of an SEO keyword');\n\n// ── Landing-page builder ──────────────────────────────────────────────────────\n\nexport const LandingPageStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Status of a landing page');\n\nexport const LandingPageSectionTypeEnum = z\n .enum([\n 'CTA',\n 'CUSTOM',\n 'FAQ',\n 'FEATURES',\n 'FOOTER',\n 'FORM',\n 'GALLERY',\n 'HERO',\n 'PRICING',\n 'STATS',\n 'TEAM',\n 'TESTIMONIALS',\n 'TEXT',\n 'VIDEO',\n ])\n .describe('Type of a landing-page section');\n\n// ── Workflows ─────────────────────────────────────────────────────────────────\n\nexport const WorkflowStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Status of a workflow');\n\nexport const WorkflowTriggerTypeEnum = z\n .enum(['CONDITION', 'EVENT', 'MANUAL', 'SCHEDULE', 'WEBHOOK'])\n .describe('Trigger type of a workflow');\n\nexport const WorkflowExecutionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'FAILED', 'PENDING', 'RUNNING', 'TIMED_OUT'])\n .describe('Status of a workflow execution');\n\n// ── Analytics ─────────────────────────────────────────────────────────────────\n\nexport const DateRangePresetEnum = z\n .enum([\n 'CUSTOM',\n 'LAST_7_DAYS',\n 'LAST_30_DAYS',\n 'LAST_90_DAYS',\n 'LAST_MONTH',\n 'THIS_MONTH',\n 'THIS_QUARTER',\n 'THIS_YEAR',\n 'TODAY',\n 'YESTERDAY',\n ])\n .describe('Preset date range for analytics');\n\nexport const MetricTypeEnum = z\n .enum([\n 'BOUNCE_RATE',\n 'CLICKS',\n 'CONVERSIONS',\n 'COST',\n 'CPC',\n 'CPM',\n 'CTR',\n 'ENGAGEMENT_RATE',\n 'IMPRESSIONS',\n 'LEADS',\n 'PAGE_VIEWS',\n 'REVENUE',\n 'ROAS',\n 'SESSIONS',\n ])\n .describe('A time-series analytics metric');\n\nexport const ReportStatusEnum = z\n .enum(['ARCHIVED', 'COMPLETED', 'DRAFT', 'FAILED', 'GENERATING'])\n .describe('Status of an analytics report');\n\nexport const ReportTypeEnum = z\n .enum([\n 'AUDIENCE_INSIGHTS',\n 'CAMPAIGN_PERFORMANCE',\n 'CHANNEL_ANALYSIS',\n 'CONTENT_PERFORMANCE',\n 'CUSTOM',\n 'FUNNEL_ANALYSIS',\n 'ROI_SUMMARY',\n ])\n .describe('Type of an analytics report');\n\n// ── Scalars ───────────────────────────────────────────────────────────────────\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** ISO-8601 date-time string for `DateTime` scalar inputs. */\nexport const IsoDateTime = z.string().describe('ISO-8601 date-time string');\n\n/** A `{ start, end }` date-range input (HeadshotmarketingDateRangeInput). */\nexport const DateRange = z\n .object({ start: IsoDateTime, end: IsoDateTime })\n .describe('Date range { start, end } as ISO-8601 strings');\n","/**\n * Headshotmarketing campaign tools — marketing campaigns + reusable templates.\n *\n * Surface (11): campaigns_{get,list,create,update,delete,duplicate},\n * campaign_templates_{get,list,create,update,delete}.\n *\n * Campaign writes map to the `<verb>HeadshotmarketingCampaign[Template]`\n * mutations; reads map to the `headshotmarketingCampaign[Template](s)` queries.\n * Both inconsistent prefixings are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CampaignStatusEnum, CampaignTypeEnum, JsonObject, IsoDateTime } from './shared.js';\n\nexport function registerCampaignTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_get')),\n {\n title: 'Get Campaign',\n description: 'Fetch a single marketing campaign by ID.',\n inputSchema: { id: z.string().describe('Campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaign: Record<string, unknown> | null;\n }>(ops.GET_CAMPAIGN, { id });\n if (!data.headshotmarketingCampaign) return errorResult(`Campaign ${id} not found`);\n return jsonResult(data.headshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_get failed', { error: String(error) });\n return errorResult(\n `Failed to get campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_list')),\n {\n title: 'List Campaigns',\n description:\n 'List marketing campaigns in the bound workspace with optional status/type/text filters and pagination.',\n inputSchema: {\n status: CampaignStatusEnum.optional().describe('Filter by status'),\n type: CampaignTypeEnum.optional().describe('Filter by campaign type/channel'),\n search: z.string().optional().describe('Free-text search across name/description'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ status, type, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (status !== undefined) filter.status = status;\n if (type !== undefined) filter.type = type;\n if (search !== undefined) filter.search = search;\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaigns: Record<string, unknown>;\n }>(ops.LIST_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingCampaigns);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_list failed', { error: String(error) });\n return errorResult(\n `Failed to list campaigns: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_create')),\n {\n title: 'Create Campaign',\n description: 'Create a new marketing campaign.',\n inputSchema: {\n name: z.string().min(1).describe('Campaign name'),\n type: CampaignTypeEnum.describe('Campaign type/channel'),\n description: z.string().optional().describe('Campaign description'),\n status: CampaignStatusEnum.optional().describe('Initial status (default DRAFT)'),\n budget: z.number().optional().describe('Budget in cents'),\n startDate: IsoDateTime.optional().describe('Start date (ISO-8601)'),\n endDate: IsoDateTime.optional().describe('End date (ISO-8601)'),\n goals: JsonObject.optional().describe('Goals/KPIs JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n async ({\n name,\n type,\n description,\n status,\n budget,\n startDate,\n endDate,\n goals,\n tags,\n metadata,\n }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (budget !== undefined) input.budget = budget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (goals !== undefined) input.goals = goals;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.CREATE_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_create failed', { error: String(error) });\n return errorResult(\n `Failed to create campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_update')),\n {\n title: 'Update Campaign',\n description: 'Update a campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Campaign ID'),\n name: z.string().optional().describe('Updated name'),\n type: CampaignTypeEnum.optional().describe('Updated type'),\n description: z.string().optional().describe('Updated description'),\n status: CampaignStatusEnum.optional().describe('Updated status'),\n budget: z.number().optional().describe('Updated budget in cents'),\n spent: z.number().optional().describe('Updated spent amount in cents'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n goals: JsonObject.optional().describe('Updated goals JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n async ({\n id,\n name,\n type,\n description,\n status,\n budget,\n spent,\n startDate,\n endDate,\n goals,\n tags,\n metadata,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (budget !== undefined) input.budget = budget;\n if (spent !== undefined) input.spent = spent;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (goals !== undefined) input.goals = goals;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.UPDATE_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_update failed', { error: String(error) });\n return errorResult(\n `Failed to update campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_delete')),\n {\n title: 'Delete Campaign',\n description: 'Soft-delete a campaign by ID.',\n inputSchema: { id: z.string().describe('Campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingCampaign: boolean }>(\n ops.DELETE_CAMPAIGN,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingCampaign, id });\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_duplicate')),\n {\n title: 'Duplicate Campaign',\n description: 'Duplicate an existing campaign, returning the new copy.',\n inputSchema: { id: z.string().describe('Source campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n duplicateHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.DUPLICATE_CAMPAIGN, { id });\n return jsonResult(data.duplicateHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_duplicate failed', { error: String(error) });\n return errorResult(\n `Failed to duplicate campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Campaign templates ──────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_get_template')),\n {\n title: 'Get Campaign Template',\n description: 'Fetch a single campaign template by ID.',\n inputSchema: { id: z.string().describe('Campaign template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignTemplate: Record<string, unknown> | null;\n }>(ops.GET_CAMPAIGN_TEMPLATE, { id });\n if (!data.headshotmarketingCampaignTemplate) {\n return errorResult(`Campaign template ${id} not found`);\n }\n return jsonResult(data.headshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_get_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to get campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_list_templates')),\n {\n title: 'List Campaign Templates',\n description: 'List reusable campaign templates with optional type/active/text filters.',\n inputSchema: {\n type: CampaignTypeEnum.optional().describe('Filter by default campaign type'),\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ type, isActive, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (type !== undefined) filter.type = type;\n if (isActive !== undefined) filter.isActive = isActive;\n if (search !== undefined) filter.search = search;\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignTemplates: Record<string, unknown>;\n }>(ops.LIST_CAMPAIGN_TEMPLATES, { filter });\n return jsonResult(data.headshotmarketingCampaignTemplates);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_list_templates failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list campaign templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_create_template')),\n {\n title: 'Create Campaign Template',\n description: 'Create a reusable campaign template.',\n inputSchema: {\n name: z.string().min(1).describe('Template name'),\n type: CampaignTypeEnum.describe('Default campaign type'),\n description: z.string().optional().describe('Template description'),\n configuration: JsonObject.optional().describe('Template configuration/defaults JSON'),\n isActive: z.boolean().optional().describe('Whether the template is active'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n async ({ name, type, description, configuration, isActive, tags, metadata }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (description !== undefined) input.description = description;\n if (configuration !== undefined) input.configuration = configuration;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingCampaignTemplate: Record<string, unknown>;\n }>(ops.CREATE_CAMPAIGN_TEMPLATE, { input });\n return jsonResult(data.createHeadshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_create_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_update_template')),\n {\n title: 'Update Campaign Template',\n description: 'Update a campaign template. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Campaign template ID'),\n name: z.string().optional().describe('Updated name'),\n type: CampaignTypeEnum.optional().describe('Updated default type'),\n description: z.string().optional().describe('Updated description'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n async ({ id, name, type, description, configuration, isActive, tags, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (configuration !== undefined) input.configuration = configuration;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingCampaignTemplate: Record<string, unknown>;\n }>(ops.UPDATE_CAMPAIGN_TEMPLATE, { id, input });\n return jsonResult(data.updateHeadshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_update_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to update campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_delete_template')),\n {\n title: 'Delete Campaign Template',\n description: 'Soft-delete a campaign template by ID.',\n inputSchema: { id: z.string().describe('Campaign template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingCampaignTemplate: boolean;\n }>(ops.DELETE_CAMPAIGN_TEMPLATE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingCampaignTemplate, id });\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_delete_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to delete campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Internal helpers shared by the Headshotmarketing tool files.\n *\n * These keep the per-tool registration explicit (literal product-prefixed\n * names via mcpToolName, typed inputSchema, jsonResult/errorResult) while\n * factoring out the repetitive try/catch + structured-logging + input-pruning\n * boilerplate. No `any`, no `ts-ignore`, no `eslint-disable`.\n */\n\nimport { errorResult, type McpContext } from '../../../core/index.js';\nimport type { ToolResult } from '../../../core/index.js';\n\n/**\n * Run a tool body, mapping any thrown error to a uniform error ToolResult and\n * logging it under the module-prefixed label. `label` is the short tool suffix\n * (e.g. 'contacts_get').\n */\nexport async function runTool(\n ctx: McpContext,\n label: string,\n run: () => Promise<ToolResult>,\n): Promise<ToolResult> {\n try {\n return await run();\n } catch (error) {\n ctx.logger.error(`headshotmarketing ${label} failed`, { error: String(error) });\n return errorResult(\n `Failed (${label}): ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/** Copy only the defined (non-undefined) entries into a fresh object. */\nexport function definedInput(obj: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) out[key] = value;\n }\n return out;\n}\n\n/** Build a {limit, offset}-bearing filter object (style: limit/offset live in the filter). */\nexport function filterWithPaging(\n fields: Record<string, unknown>,\n limit?: number,\n offset?: number,\n): Record<string, unknown> {\n return { ...definedInput(fields), limit: limit ?? 50, offset: offset ?? 0 };\n}\n\n/** Build a PaginationInput object (style: separate `pagination` arg). */\nexport function pagination(limit?: number, offset?: number): Record<string, unknown> {\n return { limit: limit ?? 50, offset: offset ?? 0 };\n}\n","/**\n * Headshotmarketing CRM contact tools.\n *\n * Surface (6): contacts_{get,list,create,update,delete}, contacts_activities.\n * Reads map to headshotmarketingContact(s)/headshotmarketingContactActivities;\n * writes map to the create/update/deleteHeadshotmarketingContact mutations.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ContactStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerContactTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_get')),\n {\n title: 'Get Contact',\n description: 'Fetch a single CRM contact by ID.',\n inputSchema: { id: z.string().describe('Contact ID') },\n },\n ({ id }) =>\n runTool(ctx, 'contacts_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContact: Record<string, unknown> | null;\n }>(ops.GET_CONTACT, { id });\n if (!data.headshotmarketingContact) return errorResult(`Contact ${id} not found`);\n return jsonResult(data.headshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_list')),\n {\n title: 'List Contacts',\n description:\n 'List CRM contacts with optional status/company/tags/text filters and pagination.',\n inputSchema: {\n status: ContactStatusEnum.optional().describe('Filter by status'),\n company: z.string().optional().describe('Filter by company'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, company, tags, search, limit, offset }) =>\n runTool(ctx, 'contacts_list', async () => {\n const filter = filterWithPaging({ status, company, tags, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContacts: Record<string, unknown>;\n }>(ops.LIST_CONTACTS, { filter });\n return jsonResult(data.headshotmarketingContacts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_activities')),\n {\n title: 'List Contact Activities',\n description: 'List the activity/interaction history for a contact.',\n inputSchema: {\n contactId: z.string().describe('Contact ID'),\n limit: z.number().int().optional().describe('Page size'),\n offset: z.number().int().optional().describe('Pagination offset'),\n },\n },\n ({ contactId, limit, offset }) =>\n runTool(ctx, 'contacts_activities', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContactActivities: Array<Record<string, unknown>>;\n }>(ops.LIST_CONTACT_ACTIVITIES, { contactId, limit, offset });\n return jsonResult(data.headshotmarketingContactActivities);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_create')),\n {\n title: 'Create Contact',\n description: 'Create a new CRM contact. firstName and lastName are required.',\n inputSchema: {\n firstName: z.string().min(1).describe('First name'),\n lastName: z.string().min(1).describe('Last name'),\n email: z.string().optional().describe('Email address'),\n phone: z.string().optional().describe('Phone number'),\n company: z.string().optional().describe('Company/organization'),\n jobTitle: z.string().optional().describe('Job title'),\n avatarUrl: z.string().optional().describe('Avatar image URL'),\n address: JsonObject.optional().describe('Address JSON'),\n socialProfiles: JsonObject.optional().describe('Social profiles JSON'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n status: ContactStatusEnum.optional().describe('Initial status'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'contacts_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingContact: Record<string, unknown>;\n }>(ops.CREATE_CONTACT, { input });\n return jsonResult(data.createHeadshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_update')),\n {\n title: 'Update Contact',\n description: 'Update a contact. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Contact ID'),\n firstName: z.string().optional().describe('Updated first name'),\n lastName: z.string().optional().describe('Updated last name'),\n email: z.string().optional().describe('Updated email'),\n phone: z.string().optional().describe('Updated phone'),\n company: z.string().optional().describe('Updated company'),\n jobTitle: z.string().optional().describe('Updated job title'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n address: JsonObject.optional().describe('Updated address JSON'),\n socialProfiles: JsonObject.optional().describe('Updated social profiles JSON'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n status: ContactStatusEnum.optional().describe('Updated status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'contacts_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingContact: Record<string, unknown>;\n }>(ops.UPDATE_CONTACT, { id, input });\n return jsonResult(data.updateHeadshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_delete')),\n {\n title: 'Delete Contact',\n description: 'Soft-delete a contact by ID.',\n inputSchema: { id: z.string().describe('Contact ID') },\n },\n ({ id }) =>\n runTool(ctx, 'contacts_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingContact: boolean }>(\n ops.DELETE_CONTACT,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingContact, id });\n }),\n );\n}\n","/**\n * Headshotmarketing lead tools.\n *\n * Surface (6): leads_{get,list,create,update,delete}, deals_convert_lead.\n * deals_convert_lead maps to convertHeadshotmarketingLead (lead → deal).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { LeadSourceEnum, LeadStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerLeadTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_get')),\n {\n title: 'Get Lead',\n description: 'Fetch a single lead by ID.',\n inputSchema: { id: z.string().describe('Lead ID') },\n },\n ({ id }) =>\n runTool(ctx, 'leads_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLead: Record<string, unknown> | null;\n }>(ops.GET_LEAD, { id });\n if (!data.headshotmarketingLead) return errorResult(`Lead ${id} not found`);\n return jsonResult(data.headshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_list')),\n {\n title: 'List Leads',\n description: 'List leads with optional status/source/owner/text filters and pagination.',\n inputSchema: {\n status: LeadStatusEnum.optional().describe('Filter by status'),\n source: LeadSourceEnum.optional().describe('Filter by acquisition source'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, source, ownerId, search, limit, offset }) =>\n runTool(ctx, 'leads_list', async () => {\n const filter = filterWithPaging({ status, source, ownerId, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLeads: Record<string, unknown>;\n }>(ops.LIST_LEADS, { filter });\n return jsonResult(data.headshotmarketingLeads);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_create')),\n {\n title: 'Create Lead',\n description: 'Create a new lead. title is required.',\n inputSchema: {\n title: z.string().min(1).describe('Lead title'),\n description: z.string().optional().describe('Description'),\n status: LeadStatusEnum.optional().describe('Initial status'),\n source: LeadSourceEnum.optional().describe('Acquisition source'),\n score: z.number().int().optional().describe('Lead score'),\n estimatedValue: z.number().optional().describe('Estimated value in cents'),\n contactId: z.string().optional().describe('Associated contact ID'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'leads_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.CREATE_LEAD, { input });\n return jsonResult(data.createHeadshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_update')),\n {\n title: 'Update Lead',\n description: 'Update a lead. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Lead ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: LeadStatusEnum.optional().describe('Updated status'),\n source: LeadSourceEnum.optional().describe('Updated source'),\n score: z.number().int().optional().describe('Updated score'),\n estimatedValue: z.number().optional().describe('Updated estimated value'),\n contactId: z.string().optional().describe('Updated contact ID'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n ownerId: z.string().optional().describe('Updated owner ID'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'leads_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.UPDATE_LEAD, { id, input });\n return jsonResult(data.updateHeadshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_delete')),\n {\n title: 'Delete Lead',\n description: 'Soft-delete a lead by ID.',\n inputSchema: { id: z.string().describe('Lead ID') },\n },\n ({ id }) =>\n runTool(ctx, 'leads_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingLead: boolean }>(\n ops.DELETE_LEAD,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingLead, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_convert_lead')),\n {\n title: 'Convert Lead to Deal',\n description:\n 'Convert a lead into a new deal, placing it on a pipeline stage. Returns the created deal.',\n inputSchema: {\n leadId: z.string().describe('Lead ID to convert'),\n pipelineId: z.string().describe('Target pipeline ID'),\n stageId: z.string().describe('Target pipeline stage ID'),\n dealTitle: z.string().min(1).describe('Title for the new deal'),\n },\n },\n ({ leadId, pipelineId, stageId, dealTitle }) =>\n runTool(ctx, 'deals_convert_lead', async () => {\n const data = await ctx.gql.workspace.request<{\n convertHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.CONVERT_LEAD, { leadId, pipelineId, stageId, dealTitle });\n return jsonResult(data.convertHeadshotmarketingLead);\n }),\n );\n}\n","/**\n * Headshotmarketing deal + pipeline tools.\n *\n * Surface (14): deals_{get,list,create,update,delete,move};\n * pipelines_{get,list,create,update,delete,overview};\n * pipeline_stages_{create,update,delete}.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { DealStatusEnum, JsonObject, IsoDateTime } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerDealTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Deals ───────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_get')),\n {\n title: 'Get Deal',\n description: 'Fetch a single deal by ID.',\n inputSchema: { id: z.string().describe('Deal ID') },\n },\n ({ id }) =>\n runTool(ctx, 'deals_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeal: Record<string, unknown> | null;\n }>(ops.GET_DEAL, { id });\n if (!data.headshotmarketingDeal) return errorResult(`Deal ${id} not found`);\n return jsonResult(data.headshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_list')),\n {\n title: 'List Deals',\n description:\n 'List deals with optional pipeline/stage/owner/status/text filters and pagination.',\n inputSchema: {\n pipelineId: z.string().optional().describe('Filter by pipeline ID'),\n stageId: z.string().optional().describe('Filter by stage ID'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n status: DealStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ pipelineId, stageId, ownerId, status, search, limit, offset }) =>\n runTool(ctx, 'deals_list', async () => {\n const filter = filterWithPaging(\n { pipelineId, stageId, ownerId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeals: Record<string, unknown>;\n }>(ops.LIST_DEALS, { filter });\n return jsonResult(data.headshotmarketingDeals);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_create')),\n {\n title: 'Create Deal',\n description:\n 'Create a new deal on a pipeline stage. title, pipelineId and stageId are required.',\n inputSchema: {\n title: z.string().min(1).describe('Deal title'),\n pipelineId: z.string().describe('Pipeline ID'),\n stageId: z.string().describe('Pipeline stage ID'),\n description: z.string().optional().describe('Description'),\n value: z.number().optional().describe('Deal value in cents'),\n probability: z.number().int().optional().describe('Win probability 0-100'),\n status: DealStatusEnum.optional().describe('Initial status'),\n contactId: z.string().optional().describe('Associated contact ID'),\n leadId: z.string().optional().describe('Source lead ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n expectedCloseDate: IsoDateTime.optional().describe('Expected close date'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'deals_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.CREATE_DEAL, { input });\n return jsonResult(data.createHeadshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_update')),\n {\n title: 'Update Deal',\n description: 'Update a deal. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Deal ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n value: z.number().optional().describe('Updated value in cents'),\n probability: z.number().int().optional().describe('Updated probability 0-100'),\n status: DealStatusEnum.optional().describe('Updated status'),\n pipelineId: z.string().optional().describe('Updated pipeline ID'),\n stageId: z.string().optional().describe('Updated stage ID'),\n contactId: z.string().optional().describe('Updated contact ID'),\n ownerId: z.string().optional().describe('Updated owner ID'),\n expectedCloseDate: IsoDateTime.optional().describe('Updated expected close date'),\n closedAt: IsoDateTime.optional().describe('Actual close date'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'deals_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.UPDATE_DEAL, { id, input });\n return jsonResult(data.updateHeadshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_delete')),\n {\n title: 'Delete Deal',\n description: 'Soft-delete a deal by ID.',\n inputSchema: { id: z.string().describe('Deal ID') },\n },\n ({ id }) =>\n runTool(ctx, 'deals_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingDeal: boolean }>(\n ops.DELETE_DEAL,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingDeal, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_move')),\n {\n title: 'Move Deal',\n description: 'Move a deal to a different pipeline stage.',\n inputSchema: {\n id: z.string().describe('Deal ID'),\n stageId: z.string().describe('Target pipeline stage ID'),\n },\n },\n ({ id, stageId }) =>\n runTool(ctx, 'deals_move', async () => {\n const data = await ctx.gql.workspace.request<{\n moveHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.MOVE_DEAL, { id, stageId });\n return jsonResult(data.moveHeadshotmarketingDeal);\n }),\n );\n\n // ── Pipelines ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_get')),\n {\n title: 'Get Pipeline',\n description: 'Fetch a single pipeline (with its stages) by ID.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipeline: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE, { id });\n if (!data.headshotmarketingPipeline) return errorResult(`Pipeline ${id} not found`);\n return jsonResult(data.headshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_list')),\n {\n title: 'List Pipelines',\n description: 'List pipelines with optional active/text filters and pagination.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isActive, search, limit, offset }) =>\n runTool(ctx, 'pipelines_list', async () => {\n const filter = filterWithPaging({ isActive, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipelines: Record<string, unknown>;\n }>(ops.LIST_PIPELINES, { filter });\n return jsonResult(data.headshotmarketingPipelines);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_overview')),\n {\n title: 'Pipeline Overview',\n description: 'Get a pipeline overview with deal counts and values per stage.',\n inputSchema: { pipelineId: z.string().describe('Pipeline ID') },\n },\n ({ pipelineId }) =>\n runTool(ctx, 'pipelines_overview', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipelineOverview: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE_OVERVIEW, { pipelineId });\n if (!data.headshotmarketingPipelineOverview) {\n return errorResult(`Pipeline ${pipelineId} not found`);\n }\n return jsonResult(data.headshotmarketingPipelineOverview);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create')),\n {\n title: 'Create Pipeline',\n description: 'Create a new sales pipeline.',\n inputSchema: {\n name: z.string().min(1).describe('Pipeline name'),\n description: z.string().optional().describe('Description'),\n isActive: z.boolean().optional().describe('Whether the pipeline is active'),\n isDefault: z.boolean().optional().describe('Whether this is the default pipeline'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'pipelines_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingPipeline: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE, { input });\n return jsonResult(data.createHeadshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update')),\n {\n title: 'Update Pipeline',\n description: 'Update a pipeline. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n isDefault: z.boolean().optional().describe('Updated default flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'pipelines_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingPipeline: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE, { id, input });\n return jsonResult(data.updateHeadshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_delete')),\n {\n title: 'Delete Pipeline',\n description: 'Soft-delete a pipeline by ID.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingPipeline: boolean }>(\n ops.DELETE_PIPELINE,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingPipeline, id });\n }),\n );\n\n // ── Pipeline stages ───────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create_stage')),\n {\n title: 'Create Pipeline Stage',\n description: 'Add a stage to a pipeline. pipelineId, name and order are required.',\n inputSchema: {\n pipelineId: z.string().describe('Pipeline ID'),\n name: z.string().min(1).describe('Stage name'),\n order: z.number().int().describe('Sort order of the stage'),\n description: z.string().optional().describe('Description'),\n color: z.string().optional().describe('Display color'),\n defaultProbability: z.number().int().optional().describe('Default win probability 0-100'),\n isActive: z.boolean().optional().describe('Whether the stage is active'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'pipelines_create_stage', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingPipelineStage: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE_STAGE, { input });\n return jsonResult(data.createHeadshotmarketingPipelineStage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update_stage')),\n {\n title: 'Update Pipeline Stage',\n description: 'Update a pipeline stage. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline stage ID'),\n name: z.string().optional().describe('Updated name'),\n order: z.number().int().optional().describe('Updated sort order'),\n description: z.string().optional().describe('Updated description'),\n color: z.string().optional().describe('Updated color'),\n defaultProbability: z.number().int().optional().describe('Updated default probability'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'pipelines_update_stage', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingPipelineStage: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE_STAGE, { id, input });\n return jsonResult(data.updateHeadshotmarketingPipelineStage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_delete_stage')),\n {\n title: 'Delete Pipeline Stage',\n description: 'Soft-delete a pipeline stage by ID.',\n inputSchema: { id: z.string().describe('Pipeline stage ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_delete_stage', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingPipelineStage: boolean;\n }>(ops.DELETE_PIPELINE_STAGE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingPipelineStage, id });\n }),\n );\n}\n","/**\n * Headshotmarketing content tools — content items, digital assets, AI tools.\n *\n * Surface (17):\n * content_items_{get,list,create,update,delete}\n * assets_{get,list,create,update,delete}\n * ai_tools_{get,list,create,update,delete,execute}\n * ai_tool_executions_{get,list}\n *\n * All these list queries take a separate `pagination: PaginationInput` arg\n * (their filter inputs do NOT carry limit/offset).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ContentItemStatusEnum,\n ContentItemTypeEnum,\n AssetTypeEnum,\n AIToolCategoryEnum,\n AIToolExecutionStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerContentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Content items ─────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_get')),\n {\n title: 'Get Content Item',\n description: 'Fetch a single content item by ID.',\n inputSchema: { id: z.string().describe('Content item ID') },\n },\n ({ id }) =>\n runTool(ctx, 'content_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentItem: Record<string, unknown> | null;\n }>(ops.GET_CONTENT_ITEM, { id });\n if (!data.headshotmarketingContentItem) return errorResult(`Content item ${id} not found`);\n return jsonResult(data.headshotmarketingContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_list')),\n {\n title: 'List Content Items',\n description: 'List content items with optional type/status/author/campaign/tags filters.',\n inputSchema: {\n type: ContentItemTypeEnum.optional().describe('Filter by content type'),\n status: ContentItemStatusEnum.optional().describe('Filter by status'),\n authorId: z.string().optional().describe('Filter by author ID'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, authorId, campaignId, tags, search, limit, offset }) =>\n runTool(ctx, 'content_list', async () => {\n const filter = definedInput({ type, status, authorId, campaignId, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentItems: Record<string, unknown>;\n }>(ops.LIST_CONTENT_ITEMS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingContentItems);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_create')),\n {\n title: 'Create Content Item',\n description: 'Create a new content item (blog post, social copy, email, etc.).',\n inputSchema: {\n title: z.string().min(1).describe('Content title'),\n type: ContentItemTypeEnum.describe('Content type'),\n body: z.string().optional().describe('Content body'),\n summary: z.string().optional().describe('Summary'),\n slug: z.string().optional().describe('URL slug'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n scheduledAt: IsoDateTime.optional().describe('Scheduled publish time'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'content_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateContentItem: Record<string, unknown>;\n }>(ops.CREATE_CONTENT_ITEM, { input });\n return jsonResult(data.headshotmarketingCreateContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_update')),\n {\n title: 'Update Content Item',\n description: 'Update a content item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Content item ID'),\n title: z.string().optional().describe('Updated title'),\n type: ContentItemTypeEnum.optional().describe('Updated type'),\n status: ContentItemStatusEnum.optional().describe('Updated status'),\n body: z.string().optional().describe('Updated body'),\n summary: z.string().optional().describe('Updated summary'),\n slug: z.string().optional().describe('Updated slug'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n scheduledAt: IsoDateTime.optional().describe('Updated scheduled time'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'content_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateContentItem: Record<string, unknown>;\n }>(ops.UPDATE_CONTENT_ITEM, { id, input });\n return jsonResult(data.headshotmarketingUpdateContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_delete')),\n {\n title: 'Delete Content Item',\n description: 'Soft-delete a content item by ID.',\n inputSchema: { id: z.string().describe('Content item ID') },\n },\n ({ id }) =>\n runTool(ctx, 'content_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteContentItem: boolean;\n }>(ops.DELETE_CONTENT_ITEM, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteContentItem, id });\n }),\n );\n\n // ── Assets ──────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_get')),\n {\n title: 'Get Asset',\n description: 'Fetch a single digital asset by ID.',\n inputSchema: { id: z.string().describe('Asset ID') },\n },\n ({ id }) =>\n runTool(ctx, 'assets_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAsset: Record<string, unknown> | null;\n }>(ops.GET_ASSET, { id });\n if (!data.headshotmarketingAsset) return errorResult(`Asset ${id} not found`);\n return jsonResult(data.headshotmarketingAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_list')),\n {\n title: 'List Assets',\n description: 'List digital assets with optional type/folder/tags/text filters.',\n inputSchema: {\n type: AssetTypeEnum.optional().describe('Filter by asset type'),\n folderId: z.string().optional().describe('Filter by folder ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, folderId, tags, search, limit, offset }) =>\n runTool(ctx, 'assets_list', async () => {\n const filter = definedInput({ type, folderId, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAssets: Record<string, unknown>;\n }>(ops.LIST_ASSETS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAssets);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_create')),\n {\n title: 'Create Asset',\n description: 'Register a new digital asset. name, type and url are required.',\n inputSchema: {\n name: z.string().min(1).describe('Asset name'),\n type: AssetTypeEnum.describe('Asset type'),\n url: z.string().min(1).describe('Asset URL'),\n thumbnailUrl: z.string().optional().describe('Thumbnail URL'),\n mimeType: z.string().optional().describe('MIME type'),\n sizeBytes: z.number().int().optional().describe('Size in bytes'),\n width: z.number().int().optional().describe('Width (px)'),\n height: z.number().int().optional().describe('Height (px)'),\n altText: z.string().optional().describe('Alt text'),\n folderId: z.string().optional().describe('Folder ID'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'assets_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateAsset: Record<string, unknown>;\n }>(ops.CREATE_ASSET, { input });\n return jsonResult(data.headshotmarketingCreateAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_update')),\n {\n title: 'Update Asset',\n description: 'Update an asset. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Asset ID'),\n name: z.string().optional().describe('Updated name'),\n type: AssetTypeEnum.optional().describe('Updated type'),\n url: z.string().optional().describe('Updated URL'),\n thumbnailUrl: z.string().optional().describe('Updated thumbnail URL'),\n altText: z.string().optional().describe('Updated alt text'),\n folderId: z.string().optional().describe('Updated folder ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'assets_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateAsset: Record<string, unknown>;\n }>(ops.UPDATE_ASSET, { id, input });\n return jsonResult(data.headshotmarketingUpdateAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_delete')),\n {\n title: 'Delete Asset',\n description: 'Soft-delete an asset by ID.',\n inputSchema: { id: z.string().describe('Asset ID') },\n },\n ({ id }) =>\n runTool(ctx, 'assets_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteAsset: boolean }>(\n ops.DELETE_ASSET,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteAsset, id });\n }),\n );\n\n // ── AI tools + executions ───────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_get')),\n {\n title: 'Get AI Tool',\n description: 'Fetch a single AI tool by ID.',\n inputSchema: { id: z.string().describe('AI tool ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAITool: Record<string, unknown> | null;\n }>(ops.GET_AI_TOOL, { id });\n if (!data.headshotmarketingAITool) return errorResult(`AI tool ${id} not found`);\n return jsonResult(data.headshotmarketingAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_list')),\n {\n title: 'List AI Tools',\n description: 'List AI marketing tools with optional category/provider/enabled/text filters.',\n inputSchema: {\n category: AIToolCategoryEnum.optional().describe('Filter by category'),\n provider: z.string().optional().describe('Filter by provider'),\n isEnabled: z.boolean().optional().describe('Filter by enabled flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ category, provider, isEnabled, search, limit, offset }) =>\n runTool(ctx, 'ai_tools_list', async () => {\n const filter = definedInput({ category, provider, isEnabled, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAITools: Record<string, unknown>;\n }>(ops.LIST_AI_TOOLS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAITools);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_create')),\n {\n title: 'Create AI Tool',\n description: 'Register a new AI marketing tool. name, category and provider are required.',\n inputSchema: {\n name: z.string().min(1).describe('Tool name'),\n category: AIToolCategoryEnum.describe('Tool category'),\n provider: z.string().min(1).describe('Provider (e.g. \"openai\", \"anthropic\")'),\n description: z.string().optional().describe('Description'),\n model: z.string().optional().describe('Model identifier'),\n isEnabled: z.boolean().optional().describe('Whether the tool is enabled'),\n configuration: JsonObject.optional().describe('Tool configuration JSON'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ai_tools_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateAITool: Record<string, unknown>;\n }>(ops.CREATE_AI_TOOL, { input });\n return jsonResult(data.headshotmarketingCreateAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_update')),\n {\n title: 'Update AI Tool',\n description: 'Update an AI tool. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('AI tool ID'),\n name: z.string().optional().describe('Updated name'),\n category: AIToolCategoryEnum.optional().describe('Updated category'),\n provider: z.string().optional().describe('Updated provider'),\n description: z.string().optional().describe('Updated description'),\n model: z.string().optional().describe('Updated model'),\n isEnabled: z.boolean().optional().describe('Updated enabled flag'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ai_tools_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateAITool: Record<string, unknown>;\n }>(ops.UPDATE_AI_TOOL, { id, input });\n return jsonResult(data.headshotmarketingUpdateAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_delete')),\n {\n title: 'Delete AI Tool',\n description: 'Soft-delete an AI tool by ID.',\n inputSchema: { id: z.string().describe('AI tool ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteAITool: boolean }>(\n ops.DELETE_AI_TOOL,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteAITool, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_execute')),\n {\n title: 'Execute AI Tool',\n description: 'Execute an AI tool and return the execution record.',\n inputSchema: {\n toolId: z.string().describe('AI tool ID to execute'),\n input: JsonObject.describe('Execution input payload JSON'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n ({ toolId, input, metadata }) =>\n runTool(ctx, 'ai_tools_execute', async () => {\n const payload = definedInput({ toolId, input, metadata });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingExecuteAITool: Record<string, unknown>;\n }>(ops.EXECUTE_AI_TOOL, { input: payload });\n return jsonResult(data.headshotmarketingExecuteAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_get_execution')),\n {\n title: 'Get AI Tool Execution',\n description: 'Fetch a single AI tool execution record by ID.',\n inputSchema: { id: z.string().describe('AI tool execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_get_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAIToolExecution: Record<string, unknown> | null;\n }>(ops.GET_AI_TOOL_EXECUTION, { id });\n if (!data.headshotmarketingAIToolExecution) {\n return errorResult(`AI tool execution ${id} not found`);\n }\n return jsonResult(data.headshotmarketingAIToolExecution);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_list_executions')),\n {\n title: 'List AI Tool Executions',\n description: 'List AI tool execution records with optional tool/status/executor filters.',\n inputSchema: {\n toolId: z.string().optional().describe('Filter by tool ID'),\n status: AIToolExecutionStatusEnum.optional().describe('Filter by status'),\n executedBy: z.string().optional().describe('Filter by executor user ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ toolId, status, executedBy, limit, offset }) =>\n runTool(ctx, 'ai_tools_list_executions', async () => {\n const filter = definedInput({ toolId, status, executedBy });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAIToolExecutions: Record<string, unknown>;\n }>(ops.LIST_AI_TOOL_EXECUTIONS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAIToolExecutions);\n }),\n );\n}\n","/**\n * Headshotmarketing social media tools — accounts + posts.\n *\n * Surface (14):\n * social_accounts_{get,list,create,update,delete,disconnect}\n * social_metrics\n * social_posts_{get,list,create,update,delete,publish,schedule}\n *\n * Both list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n SocialPlatformEnum,\n SocialAccountStatusEnum,\n SocialPostStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerSocialTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Social accounts ───────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_get_account')),\n {\n title: 'Get Social Account',\n description: 'Fetch a single connected social account by ID.',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_get_account', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialAccount: Record<string, unknown> | null;\n }>(ops.GET_SOCIAL_ACCOUNT, { id });\n if (!data.headshotmarketingSocialAccount)\n return errorResult(`Social account ${id} not found`);\n return jsonResult(data.headshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_list_accounts')),\n {\n title: 'List Social Accounts',\n description: 'List connected social accounts with optional platform/status/text filters.',\n inputSchema: {\n platform: SocialPlatformEnum.optional().describe('Filter by platform'),\n status: SocialAccountStatusEnum.optional().describe('Filter by connection status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ platform, status, search, limit, offset }) =>\n runTool(ctx, 'social_list_accounts', async () => {\n const filter = filterWithPaging({ platform, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialAccounts: Record<string, unknown>;\n }>(ops.LIST_SOCIAL_ACCOUNTS, { filter });\n return jsonResult(data.headshotmarketingSocialAccounts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_create_account')),\n {\n title: 'Connect Social Account',\n description:\n 'Connect a new social media account. platform, accountName and platformAccountId are required.',\n inputSchema: {\n platform: SocialPlatformEnum.describe('Social platform'),\n accountName: z.string().min(1).describe('Account display name'),\n platformAccountId: z.string().min(1).describe('Platform-side account ID'),\n accessToken: z.string().optional().describe('OAuth access token'),\n refreshToken: z.string().optional().describe('OAuth refresh token'),\n tokenExpiresAt: IsoDateTime.optional().describe('Token expiry'),\n profileUrl: z.string().optional().describe('Profile URL'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n followerCount: z.number().int().optional().describe('Follower count'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'social_create_account', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.CREATE_SOCIAL_ACCOUNT, { input });\n return jsonResult(data.createHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_update_account')),\n {\n title: 'Update Social Account',\n description: 'Update a social account. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Social account ID'),\n accountName: z.string().optional().describe('Updated account name'),\n accessToken: z.string().optional().describe('Updated access token'),\n refreshToken: z.string().optional().describe('Updated refresh token'),\n tokenExpiresAt: IsoDateTime.optional().describe('Updated token expiry'),\n profileUrl: z.string().optional().describe('Updated profile URL'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n followerCount: z.number().int().optional().describe('Updated follower count'),\n status: SocialAccountStatusEnum.optional().describe('Updated status'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'social_update_account', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.UPDATE_SOCIAL_ACCOUNT, { id, input });\n return jsonResult(data.updateHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_delete_account')),\n {\n title: 'Delete Social Account',\n description: 'Soft-delete a social account by ID.',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_delete_account', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingSocialAccount: boolean;\n }>(ops.DELETE_SOCIAL_ACCOUNT, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingSocialAccount, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_disconnect_account')),\n {\n title: 'Disconnect Social Account',\n description: 'Disconnect a social account (revoke tokens and mark disconnected).',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_disconnect_account', async () => {\n const data = await ctx.gql.workspace.request<{\n disconnectHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.DISCONNECT_SOCIAL_ACCOUNT, { id });\n return jsonResult(data.disconnectHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_metrics')),\n {\n title: 'Social Metrics',\n description:\n 'Aggregated social media metrics: account/post counts, followers, and engagement.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'social_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialMetrics: Record<string, unknown>;\n }>(ops.SOCIAL_METRICS, {});\n return jsonResult(data.headshotmarketingSocialMetrics);\n }),\n );\n\n // ── Social posts ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_get_post')),\n {\n title: 'Get Social Post',\n description: 'Fetch a single social media post by ID.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_get_post', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialPost: Record<string, unknown> | null;\n }>(ops.GET_SOCIAL_POST, { id });\n if (!data.headshotmarketingSocialPost) return errorResult(`Social post ${id} not found`);\n return jsonResult(data.headshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_list_posts')),\n {\n title: 'List Social Posts',\n description: 'List social posts with optional account/campaign/status/text filters.',\n inputSchema: {\n socialAccountId: z.string().optional().describe('Filter by social account ID'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n status: SocialPostStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ socialAccountId, campaignId, status, search, limit, offset }) =>\n runTool(ctx, 'social_list_posts', async () => {\n const filter = filterWithPaging(\n { socialAccountId, campaignId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialPosts: Record<string, unknown>;\n }>(ops.LIST_SOCIAL_POSTS, { filter });\n return jsonResult(data.headshotmarketingSocialPosts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_create_post')),\n {\n title: 'Create Social Post',\n description: 'Create a new social media post. socialAccountId and content are required.',\n inputSchema: {\n socialAccountId: z.string().describe('Target social account ID'),\n content: z.string().min(1).describe('Post content'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n mediaUrls: z.array(z.string()).optional().describe('Media asset URLs'),\n scheduledAt: IsoDateTime.optional().describe('Scheduled publish time'),\n status: SocialPostStatusEnum.optional().describe('Initial status'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'social_create_post', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.CREATE_SOCIAL_POST, { input });\n return jsonResult(data.createHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_update_post')),\n {\n title: 'Update Social Post',\n description: 'Update a social post. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Social post ID'),\n content: z.string().optional().describe('Updated content'),\n mediaUrls: z.array(z.string()).optional().describe('Updated media URLs'),\n scheduledAt: IsoDateTime.optional().describe('Updated scheduled time'),\n status: SocialPostStatusEnum.optional().describe('Updated status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'social_update_post', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.UPDATE_SOCIAL_POST, { id, input });\n return jsonResult(data.updateHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_delete_post')),\n {\n title: 'Delete Social Post',\n description: 'Soft-delete a social post by ID.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_delete_post', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingSocialPost: boolean;\n }>(ops.DELETE_SOCIAL_POST, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingSocialPost, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_publish_post')),\n {\n title: 'Publish Social Post',\n description: 'Publish a social media post immediately.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_publish_post', async () => {\n const data = await ctx.gql.workspace.request<{\n publishHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.PUBLISH_SOCIAL_POST, { id });\n return jsonResult(data.publishHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_schedule_post')),\n {\n title: 'Schedule Social Post',\n description: 'Schedule a social media post for future publishing.',\n inputSchema: {\n id: z.string().describe('Social post ID'),\n scheduledAt: IsoDateTime.describe('Publish time (ISO-8601)'),\n },\n },\n ({ id, scheduledAt }) =>\n runTool(ctx, 'social_schedule_post', async () => {\n const data = await ctx.gql.workspace.request<{\n scheduleHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.SCHEDULE_SOCIAL_POST, { id, scheduledAt });\n return jsonResult(data.scheduleHeadshotmarketingSocialPost);\n }),\n );\n}\n","/**\n * Headshotmarketing paid-ads tools — ad campaigns, ad creatives, audiences.\n *\n * Surface (15):\n * ad_campaigns_{get,list,create,update,delete}\n * ads_metrics\n * ad_creatives_{get,list,create,update,delete}\n * audiences_{get,list,create,update,delete}\n *\n * All list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n AdPlatformEnum,\n AdCampaignStatusEnum,\n AdCreativeStatusEnum,\n AdCreativeTypeEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerAdTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Ad campaigns ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_get_campaign')),\n {\n title: 'Get Ad Campaign',\n description: 'Fetch a single paid ad campaign by ID.',\n inputSchema: { id: z.string().describe('Ad campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_get_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCampaign: Record<string, unknown> | null;\n }>(ops.GET_AD_CAMPAIGN, { id });\n if (!data.headshotmarketingAdCampaign) return errorResult(`Ad campaign ${id} not found`);\n return jsonResult(data.headshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_list_campaigns')),\n {\n title: 'List Ad Campaigns',\n description: 'List paid ad campaigns with optional platform/status/campaign/text filters.',\n inputSchema: {\n platform: AdPlatformEnum.optional().describe('Filter by ad platform'),\n status: AdCampaignStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by linked marketing campaign ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ platform, status, campaignId, search, limit, offset }) =>\n runTool(ctx, 'ads_list_campaigns', async () => {\n const filter = filterWithPaging({ platform, status, campaignId, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCampaigns: Record<string, unknown>;\n }>(ops.LIST_AD_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingAdCampaigns);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_metrics')),\n {\n title: 'Ad Metrics',\n description:\n 'Aggregated ad performance metrics: campaign/creative counts, impressions, clicks, spend.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'ads_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdMetrics: Record<string, unknown>;\n }>(ops.AD_METRICS, {});\n return jsonResult(data.headshotmarketingAdMetrics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_create_campaign')),\n {\n title: 'Create Ad Campaign',\n description: 'Create a new paid ad campaign. name and platform are required.',\n inputSchema: {\n name: z.string().min(1).describe('Ad campaign name'),\n platform: AdPlatformEnum.describe('Ad platform'),\n description: z.string().optional().describe('Description'),\n status: AdCampaignStatusEnum.optional().describe('Initial status'),\n campaignId: z.string().optional().describe('Linked marketing campaign ID'),\n audienceId: z.string().optional().describe('Target audience ID'),\n totalBudget: z.number().optional().describe('Total budget in cents'),\n dailyBudget: z.number().optional().describe('Daily budget in cents'),\n bidStrategy: z.string().optional().describe('Bid strategy (CPC, CPM, CPA, ...)'),\n startDate: IsoDateTime.optional().describe('Start date'),\n endDate: IsoDateTime.optional().describe('End date'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ads_create_campaign', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAdCampaign: Record<string, unknown>;\n }>(ops.CREATE_AD_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_update_campaign')),\n {\n title: 'Update Ad Campaign',\n description: 'Update an ad campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Ad campaign ID'),\n name: z.string().optional().describe('Updated name'),\n platform: AdPlatformEnum.optional().describe('Updated platform'),\n description: z.string().optional().describe('Updated description'),\n status: AdCampaignStatusEnum.optional().describe('Updated status'),\n audienceId: z.string().optional().describe('Updated audience ID'),\n totalBudget: z.number().optional().describe('Updated total budget'),\n dailyBudget: z.number().optional().describe('Updated daily budget'),\n spent: z.number().optional().describe('Updated spent amount'),\n bidStrategy: z.string().optional().describe('Updated bid strategy'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ads_update_campaign', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAdCampaign: Record<string, unknown>;\n }>(ops.UPDATE_AD_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_delete_campaign')),\n {\n title: 'Delete Ad Campaign',\n description: 'Soft-delete an ad campaign by ID.',\n inputSchema: { id: z.string().describe('Ad campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_delete_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingAdCampaign: boolean;\n }>(ops.DELETE_AD_CAMPAIGN, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingAdCampaign, id });\n }),\n );\n\n // ── Ad creatives ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_get_creative')),\n {\n title: 'Get Ad Creative',\n description: 'Fetch a single ad creative by ID.',\n inputSchema: { id: z.string().describe('Ad creative ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_get_creative', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCreative: Record<string, unknown> | null;\n }>(ops.GET_AD_CREATIVE, { id });\n if (!data.headshotmarketingAdCreative) return errorResult(`Ad creative ${id} not found`);\n return jsonResult(data.headshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_list_creatives')),\n {\n title: 'List Ad Creatives',\n description: 'List ad creatives with optional campaign/type/status/text filters.',\n inputSchema: {\n adCampaignId: z.string().optional().describe('Filter by ad campaign ID'),\n type: AdCreativeTypeEnum.optional().describe('Filter by creative type'),\n status: AdCreativeStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ adCampaignId, type, status, search, limit, offset }) =>\n runTool(ctx, 'ads_list_creatives', async () => {\n const filter = filterWithPaging({ adCampaignId, type, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCreatives: Record<string, unknown>;\n }>(ops.LIST_AD_CREATIVES, { filter });\n return jsonResult(data.headshotmarketingAdCreatives);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_create_creative')),\n {\n title: 'Create Ad Creative',\n description: 'Create a new ad creative asset. name and type are required.',\n inputSchema: {\n name: z.string().min(1).describe('Creative name'),\n type: AdCreativeTypeEnum.describe('Creative type'),\n adCampaignId: z.string().optional().describe('Associated ad campaign ID'),\n headline: z.string().optional().describe('Headline text'),\n body: z.string().optional().describe('Body/description text'),\n callToAction: z.string().optional().describe('Call-to-action text'),\n destinationUrl: z.string().optional().describe('Destination URL'),\n mediaUrls: z.array(z.string()).optional().describe('Media asset URLs'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ads_create_creative', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAdCreative: Record<string, unknown>;\n }>(ops.CREATE_AD_CREATIVE, { input });\n return jsonResult(data.createHeadshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_update_creative')),\n {\n title: 'Update Ad Creative',\n description: 'Update an ad creative. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Ad creative ID'),\n name: z.string().optional().describe('Updated name'),\n type: AdCreativeTypeEnum.optional().describe('Updated type'),\n status: AdCreativeStatusEnum.optional().describe('Updated status'),\n headline: z.string().optional().describe('Updated headline'),\n body: z.string().optional().describe('Updated body'),\n callToAction: z.string().optional().describe('Updated call-to-action'),\n destinationUrl: z.string().optional().describe('Updated destination URL'),\n mediaUrls: z.array(z.string()).optional().describe('Updated media URLs'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ads_update_creative', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAdCreative: Record<string, unknown>;\n }>(ops.UPDATE_AD_CREATIVE, { id, input });\n return jsonResult(data.updateHeadshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_delete_creative')),\n {\n title: 'Delete Ad Creative',\n description: 'Soft-delete an ad creative by ID.',\n inputSchema: { id: z.string().describe('Ad creative ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_delete_creative', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingAdCreative: boolean;\n }>(ops.DELETE_AD_CREATIVE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingAdCreative, id });\n }),\n );\n\n // ── Audiences ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_get')),\n {\n title: 'Get Audience',\n description: 'Fetch a single target audience by ID.',\n inputSchema: { id: z.string().describe('Audience ID') },\n },\n ({ id }) =>\n runTool(ctx, 'audiences_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAudience: Record<string, unknown> | null;\n }>(ops.GET_AUDIENCE, { id });\n if (!data.headshotmarketingAudience) return errorResult(`Audience ${id} not found`);\n return jsonResult(data.headshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_list')),\n {\n title: 'List Audiences',\n description: 'List target audiences with optional active/text filters.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isActive, search, limit, offset }) =>\n runTool(ctx, 'audiences_list', async () => {\n const filter = filterWithPaging({ isActive, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAudiences: Record<string, unknown>;\n }>(ops.LIST_AUDIENCES, { filter });\n return jsonResult(data.headshotmarketingAudiences);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_create')),\n {\n title: 'Create Audience',\n description: 'Create a new target audience definition. name is required.',\n inputSchema: {\n name: z.string().min(1).describe('Audience name'),\n description: z.string().optional().describe('Description'),\n estimatedSize: z.number().int().optional().describe('Estimated audience size'),\n isActive: z.boolean().optional().describe('Whether the audience is active'),\n targetingCriteria: JsonObject.optional().describe('Targeting criteria JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'audiences_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAudience: Record<string, unknown>;\n }>(ops.CREATE_AUDIENCE, { input });\n return jsonResult(data.createHeadshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_update')),\n {\n title: 'Update Audience',\n description: 'Update an audience. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Audience ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n estimatedSize: z.number().int().optional().describe('Updated estimated size'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n targetingCriteria: JsonObject.optional().describe('Updated targeting criteria JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'audiences_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAudience: Record<string, unknown>;\n }>(ops.UPDATE_AUDIENCE, { id, input });\n return jsonResult(data.updateHeadshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_delete')),\n {\n title: 'Delete Audience',\n description: 'Soft-delete an audience by ID.',\n inputSchema: { id: z.string().describe('Audience ID') },\n },\n ({ id }) =>\n runTool(ctx, 'audiences_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingAudience: boolean }>(\n ops.DELETE_AUDIENCE,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingAudience, id });\n }),\n );\n}\n","/**\n * Headshotmarketing influencer tools — influencers, influencer campaigns,\n * relationships.\n *\n * Surface (15):\n * influencers_{get,list,create,update,delete,discover}\n * influencer_campaigns_{get,list,create,update,delete}\n * influencer_relationships_{get,list,create,update,delete,update_status}\n *\n * All list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n InfluencerTierEnum,\n InfluencerCampaignStatusEnum,\n InfluencerRelationshipStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerInfluencerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Influencers ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get')),\n {\n title: 'Get Influencer',\n description: 'Fetch a single influencer profile by ID.',\n inputSchema: { id: z.string().describe('Influencer ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencer: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER, { id });\n if (!data.headshotmarketingInfluencer) return errorResult(`Influencer ${id} not found`);\n return jsonResult(data.headshotmarketingInfluencer);\n }),\n );\n\n const influencerFilterSchema = {\n tier: InfluencerTierEnum.optional().describe('Filter by tier'),\n location: z.string().optional().describe('Filter by location'),\n niches: z.array(z.string()).optional().describe('Filter by content niches'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list')),\n {\n title: 'List Influencers',\n description: 'List influencer profiles with optional tier/location/niche/text filters.',\n inputSchema: influencerFilterSchema,\n },\n ({ tier, location, niches, search, limit, offset }) =>\n runTool(ctx, 'influencers_list', async () => {\n const filter = filterWithPaging({ tier, location, niches, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencers: Record<string, unknown>;\n }>(ops.LIST_INFLUENCERS, { filter });\n return jsonResult(data.headshotmarketingInfluencers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_discover')),\n {\n title: 'Discover Influencers',\n description: 'Discover influencers with advanced tier/location/niche/text search filters.',\n inputSchema: influencerFilterSchema,\n },\n ({ tier, location, niches, search, limit, offset }) =>\n runTool(ctx, 'influencers_discover', async () => {\n const filter = filterWithPaging({ tier, location, niches, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDiscoverInfluencers: Record<string, unknown>;\n }>(ops.DISCOVER_INFLUENCERS, { filter });\n return jsonResult(data.headshotmarketingDiscoverInfluencers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create')),\n {\n title: 'Create Influencer',\n description: 'Create a new influencer profile. name and tier are required.',\n inputSchema: {\n name: z.string().min(1).describe('Influencer display name'),\n tier: InfluencerTierEnum.describe('Influencer tier'),\n bio: z.string().optional().describe('Bio'),\n email: z.string().optional().describe('Email'),\n phone: z.string().optional().describe('Phone'),\n location: z.string().optional().describe('Location/region'),\n totalFollowers: z.number().int().optional().describe('Total follower count'),\n engagementRate: z.number().optional().describe('Average engagement rate'),\n niches: z.array(z.string()).optional().describe('Content niches'),\n platforms: JsonObject.optional().describe('Platforms + handles JSON'),\n audienceDemographics: JsonObject.optional().describe('Audience demographics JSON'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencer: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER, { input });\n return jsonResult(data.createHeadshotmarketingInfluencer);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update')),\n {\n title: 'Update Influencer',\n description: 'Update an influencer. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer ID'),\n name: z.string().optional().describe('Updated name'),\n tier: InfluencerTierEnum.optional().describe('Updated tier'),\n bio: z.string().optional().describe('Updated bio'),\n email: z.string().optional().describe('Updated email'),\n phone: z.string().optional().describe('Updated phone'),\n location: z.string().optional().describe('Updated location'),\n totalFollowers: z.number().int().optional().describe('Updated follower count'),\n engagementRate: z.number().optional().describe('Updated engagement rate'),\n niches: z.array(z.string()).optional().describe('Updated niches'),\n platforms: JsonObject.optional().describe('Updated platforms JSON'),\n audienceDemographics: JsonObject.optional().describe('Updated demographics JSON'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencer: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencer);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete')),\n {\n title: 'Delete Influencer',\n description: 'Soft-delete an influencer profile by ID.',\n inputSchema: { id: z.string().describe('Influencer ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencer: boolean;\n }>(ops.DELETE_INFLUENCER, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencer, id });\n }),\n );\n\n // ── Influencer campaigns ──────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get_campaign')),\n {\n title: 'Get Influencer Campaign',\n description: 'Fetch a single influencer campaign by ID.',\n inputSchema: { id: z.string().describe('Influencer campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerCampaign: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER_CAMPAIGN, { id });\n if (!data.headshotmarketingInfluencerCampaign) {\n return errorResult(`Influencer campaign ${id} not found`);\n }\n return jsonResult(data.headshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list_campaigns')),\n {\n title: 'List Influencer Campaigns',\n description:\n 'List influencer campaigns with optional influencer/campaign/status/text filters.',\n inputSchema: {\n influencerId: z.string().optional().describe('Filter by influencer ID'),\n campaignId: z.string().optional().describe('Filter by marketing campaign ID'),\n status: InfluencerCampaignStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ influencerId, campaignId, status, search, limit, offset }) =>\n runTool(ctx, 'influencers_list_campaigns', async () => {\n const filter = filterWithPaging(\n { influencerId, campaignId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerCampaigns: Record<string, unknown>;\n }>(ops.LIST_INFLUENCER_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingInfluencerCampaigns);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create_campaign')),\n {\n title: 'Create Influencer Campaign',\n description: 'Create a new influencer campaign. name and influencerId are required.',\n inputSchema: {\n name: z.string().min(1).describe('Campaign name'),\n influencerId: z.string().describe('Influencer ID'),\n campaignId: z.string().optional().describe('Linked marketing campaign ID'),\n description: z.string().optional().describe('Description'),\n status: InfluencerCampaignStatusEnum.optional().describe('Initial status'),\n compensation: z.number().optional().describe('Compensation in cents'),\n compensationType: z.string().optional().describe('flat_fee/per_post/commission/product'),\n deliverables: JsonObject.optional().describe('Deliverables JSON'),\n contentDeadline: IsoDateTime.optional().describe('Content deadline'),\n startDate: IsoDateTime.optional().describe('Start date'),\n endDate: IsoDateTime.optional().describe('End date'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create_campaign', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencerCampaign: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_campaign')),\n {\n title: 'Update Influencer Campaign',\n description: 'Update an influencer campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer campaign ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: InfluencerCampaignStatusEnum.optional().describe('Updated status'),\n compensation: z.number().optional().describe('Updated compensation'),\n compensationType: z.string().optional().describe('Updated compensation type'),\n deliverables: JsonObject.optional().describe('Updated deliverables JSON'),\n contentDeadline: IsoDateTime.optional().describe('Updated content deadline'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update_campaign', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerCampaign: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete_campaign')),\n {\n title: 'Delete Influencer Campaign',\n description: 'Soft-delete an influencer campaign by ID.',\n inputSchema: { id: z.string().describe('Influencer campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencerCampaign: boolean;\n }>(ops.DELETE_INFLUENCER_CAMPAIGN, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencerCampaign, id });\n }),\n );\n\n // ── Influencer relationships ─────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get_relationship')),\n {\n title: 'Get Influencer Relationship',\n description: 'Fetch a single influencer relationship by ID.',\n inputSchema: { id: z.string().describe('Influencer relationship ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get_relationship', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerRelationship: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER_RELATIONSHIP, { id });\n if (!data.headshotmarketingInfluencerRelationship) {\n return errorResult(`Influencer relationship ${id} not found`);\n }\n return jsonResult(data.headshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list_relationships')),\n {\n title: 'List Influencer Relationships',\n description: 'List influencer relationships with optional influencer/status/text filters.',\n inputSchema: {\n influencerId: z.string().optional().describe('Filter by influencer ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ influencerId, status, search, limit, offset }) =>\n runTool(ctx, 'influencers_list_relationships', async () => {\n const filter = filterWithPaging({ influencerId, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerRelationships: Record<string, unknown>;\n }>(ops.LIST_INFLUENCER_RELATIONSHIPS, { filter });\n return jsonResult(data.headshotmarketingInfluencerRelationships);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create_relationship')),\n {\n title: 'Create Influencer Relationship',\n description: 'Create a new influencer relationship. influencerId is required.',\n inputSchema: {\n influencerId: z.string().describe('Influencer ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Initial status'),\n rating: z.number().int().optional().describe('Rating'),\n notes: z.string().optional().describe('Notes'),\n firstContactDate: IsoDateTime.optional().describe('First contact date'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create_relationship', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencerRelationship: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER_RELATIONSHIP, { input });\n return jsonResult(data.createHeadshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_relationship')),\n {\n title: 'Update Influencer Relationship',\n description:\n 'Update an influencer relationship. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer relationship ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Updated status'),\n rating: z.number().int().optional().describe('Updated rating'),\n notes: z.string().optional().describe('Updated notes'),\n lastInteractionDate: IsoDateTime.optional().describe('Updated last-interaction date'),\n totalCampaigns: z.number().int().optional().describe('Updated total campaigns'),\n totalCompensation: z.number().optional().describe('Updated total compensation'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update_relationship', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerRelationship: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_RELATIONSHIP, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete_relationship')),\n {\n title: 'Delete Influencer Relationship',\n description: 'Soft-delete an influencer relationship by ID.',\n inputSchema: { id: z.string().describe('Influencer relationship ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete_relationship', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencerRelationship: boolean;\n }>(ops.DELETE_INFLUENCER_RELATIONSHIP, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencerRelationship, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_relationship_status')),\n {\n title: 'Update Influencer Relationship Status',\n description: 'Update only the status of an influencer relationship.',\n inputSchema: {\n id: z.string().describe('Influencer relationship ID'),\n status: InfluencerRelationshipStatusEnum.describe('New status'),\n },\n },\n ({ id, status }) =>\n runTool(ctx, 'influencers_update_relationship_status', async () => {\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerRelationshipStatus: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_RELATIONSHIP_STATUS, { id, status });\n return jsonResult(data.updateHeadshotmarketingInfluencerRelationshipStatus);\n }),\n );\n}\n","/**\n * Headshotmarketing event tools — events, registrations, speakers.\n *\n * Surface (15):\n * events_{get,list,create,update,delete}\n * event_registrations_{get,list,create,update,register,check_in,cancel}\n * event_speakers_{get,list,create,update,delete}\n *\n * All list queries take a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n EventTypeEnum,\n EventStatusEnum,\n EventRegistrationStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerEventTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Events ────────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get')),\n {\n title: 'Get Event',\n description: 'Fetch a single marketing event (with speakers + registrations) by ID.',\n inputSchema: { id: z.string().describe('Event ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEvent: Record<string, unknown> | null;\n }>(ops.GET_EVENT, { id });\n if (!data.headshotmarketingEvent) return errorResult(`Event ${id} not found`);\n return jsonResult(data.headshotmarketingEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list')),\n {\n title: 'List Events',\n description: 'List marketing events with optional type/status/campaign/date/tags filters.',\n inputSchema: {\n type: EventTypeEnum.optional().describe('Filter by event type'),\n status: EventStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n startDateFrom: IsoDateTime.optional().describe('Filter: start date from'),\n startDateTo: IsoDateTime.optional().describe('Filter: start date to'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, campaignId, startDateFrom, startDateTo, tags, search, limit, offset }) =>\n runTool(ctx, 'events_list', async () => {\n const filter = definedInput({\n type,\n status,\n campaignId,\n startDateFrom,\n startDateTo,\n tags,\n search,\n });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEvents: Record<string, unknown>;\n }>(ops.LIST_EVENTS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEvents);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create')),\n {\n title: 'Create Event',\n description: 'Create a new marketing event. title, type, startDate and endDate are required.',\n inputSchema: {\n title: z.string().min(1).describe('Event title'),\n type: EventTypeEnum.describe('Event type'),\n startDate: IsoDateTime.describe('Start date/time'),\n endDate: IsoDateTime.describe('End date/time'),\n description: z.string().optional().describe('Description'),\n slug: z.string().optional().describe('URL slug'),\n timezone: z.string().optional().describe('Timezone'),\n location: z.string().optional().describe('Physical location'),\n virtualUrl: z.string().optional().describe('Virtual event URL'),\n maxAttendees: z.number().int().optional().describe('Max attendees'),\n coverImageUrl: z.string().optional().describe('Cover image URL'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'events_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEvent: Record<string, unknown>;\n }>(ops.CREATE_EVENT, { input });\n return jsonResult(data.headshotmarketingCreateEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update')),\n {\n title: 'Update Event',\n description: 'Update a marketing event. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event ID'),\n title: z.string().optional().describe('Updated title'),\n type: EventTypeEnum.optional().describe('Updated type'),\n status: EventStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n slug: z.string().optional().describe('Updated slug'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n timezone: z.string().optional().describe('Updated timezone'),\n location: z.string().optional().describe('Updated location'),\n virtualUrl: z.string().optional().describe('Updated virtual URL'),\n maxAttendees: z.number().int().optional().describe('Updated max attendees'),\n coverImageUrl: z.string().optional().describe('Updated cover image URL'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEvent: Record<string, unknown>;\n }>(ops.UPDATE_EVENT, { id, input });\n return jsonResult(data.headshotmarketingUpdateEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_delete')),\n {\n title: 'Delete Event',\n description: 'Soft-delete a marketing event by ID.',\n inputSchema: { id: z.string().describe('Event ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteEvent: boolean }>(\n ops.DELETE_EVENT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteEvent, id });\n }),\n );\n\n // ── Event registrations ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get_registration')),\n {\n title: 'Get Event Registration',\n description: 'Fetch a single event registration by ID.',\n inputSchema: { id: z.string().describe('Event registration ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get_registration', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventRegistration: Record<string, unknown> | null;\n }>(ops.GET_EVENT_REGISTRATION, { id });\n if (!data.headshotmarketingEventRegistration) {\n return errorResult(`Event registration ${id} not found`);\n }\n return jsonResult(data.headshotmarketingEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list_registrations')),\n {\n title: 'List Event Registrations',\n description: 'List event registrations with optional event/status/text filters.',\n inputSchema: {\n eventId: z.string().optional().describe('Filter by event ID'),\n status: EventRegistrationStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ eventId, status, search, limit, offset }) =>\n runTool(ctx, 'events_list_registrations', async () => {\n const filter = definedInput({ eventId, status, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventRegistrations: Record<string, unknown>;\n }>(ops.LIST_EVENT_REGISTRATIONS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEventRegistrations);\n }),\n );\n\n const registrationInputSchema = {\n eventId: z.string().describe('Event ID'),\n attendeeName: z.string().min(1).describe('Attendee name'),\n attendeeEmail: z.string().min(1).describe('Attendee email'),\n attendeePhone: z.string().optional().describe('Attendee phone'),\n attendeeCompany: z.string().optional().describe('Attendee company'),\n attendeeTitle: z.string().optional().describe('Attendee title'),\n notes: z.string().optional().describe('Notes'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create_registration')),\n {\n title: 'Create Event Registration',\n description: 'Create a new event registration.',\n inputSchema: registrationInputSchema,\n },\n (args) =>\n runTool(ctx, 'events_create_registration', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEventRegistration: Record<string, unknown>;\n }>(ops.CREATE_EVENT_REGISTRATION, { input });\n return jsonResult(data.headshotmarketingCreateEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_register')),\n {\n title: 'Register For Event',\n description: 'Public-facing registration for an event.',\n inputSchema: registrationInputSchema,\n },\n (args) =>\n runTool(ctx, 'events_register', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRegisterForEvent: Record<string, unknown>;\n }>(ops.REGISTER_FOR_EVENT, { input });\n return jsonResult(data.headshotmarketingRegisterForEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update_registration')),\n {\n title: 'Update Event Registration',\n description: 'Update an event registration. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event registration ID'),\n attendeeName: z.string().optional().describe('Updated attendee name'),\n attendeeEmail: z.string().optional().describe('Updated attendee email'),\n attendeePhone: z.string().optional().describe('Updated attendee phone'),\n attendeeCompany: z.string().optional().describe('Updated attendee company'),\n attendeeTitle: z.string().optional().describe('Updated attendee title'),\n notes: z.string().optional().describe('Updated notes'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update_registration', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEventRegistration: Record<string, unknown>;\n }>(ops.UPDATE_EVENT_REGISTRATION, { id, input });\n return jsonResult(data.headshotmarketingUpdateEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_check_in_attendee')),\n {\n title: 'Check In Attendee',\n description: 'Check in an attendee at an event.',\n inputSchema: { registrationId: z.string().describe('Event registration ID') },\n },\n ({ registrationId }) =>\n runTool(ctx, 'events_check_in_attendee', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCheckInAttendee: Record<string, unknown>;\n }>(ops.CHECK_IN_ATTENDEE, { registrationId });\n return jsonResult(data.headshotmarketingCheckInAttendee);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_cancel_registration')),\n {\n title: 'Cancel Registration',\n description: 'Cancel an event registration.',\n inputSchema: { registrationId: z.string().describe('Event registration ID') },\n },\n ({ registrationId }) =>\n runTool(ctx, 'events_cancel_registration', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCancelRegistration: Record<string, unknown>;\n }>(ops.CANCEL_REGISTRATION, { registrationId });\n return jsonResult(data.headshotmarketingCancelRegistration);\n }),\n );\n\n // ── Event speakers ────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get_speaker')),\n {\n title: 'Get Event Speaker',\n description: 'Fetch a single event speaker by ID.',\n inputSchema: { id: z.string().describe('Event speaker ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get_speaker', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventSpeaker: Record<string, unknown> | null;\n }>(ops.GET_EVENT_SPEAKER, { id });\n if (!data.headshotmarketingEventSpeaker)\n return errorResult(`Event speaker ${id} not found`);\n return jsonResult(data.headshotmarketingEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list_speakers')),\n {\n title: 'List Event Speakers',\n description: 'List event speakers with optional event/text filters.',\n inputSchema: {\n eventId: z.string().optional().describe('Filter by event ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ eventId, search, limit, offset }) =>\n runTool(ctx, 'events_list_speakers', async () => {\n const filter = definedInput({ eventId, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventSpeakers: Record<string, unknown>;\n }>(ops.LIST_EVENT_SPEAKERS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEventSpeakers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create_speaker')),\n {\n title: 'Create Event Speaker',\n description: 'Add a speaker to an event. eventId and name are required.',\n inputSchema: {\n eventId: z.string().describe('Event ID'),\n name: z.string().min(1).describe('Speaker name'),\n title: z.string().optional().describe('Speaker title'),\n company: z.string().optional().describe('Company'),\n bio: z.string().optional().describe('Bio'),\n email: z.string().optional().describe('Email'),\n linkedinUrl: z.string().optional().describe('LinkedIn URL'),\n twitterUrl: z.string().optional().describe('Twitter URL'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n topic: z.string().optional().describe('Talk topic'),\n sortOrder: z.number().int().optional().describe('Sort order'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'events_create_speaker', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEventSpeaker: Record<string, unknown>;\n }>(ops.CREATE_EVENT_SPEAKER, { input });\n return jsonResult(data.headshotmarketingCreateEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update_speaker')),\n {\n title: 'Update Event Speaker',\n description: 'Update an event speaker. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event speaker ID'),\n name: z.string().optional().describe('Updated name'),\n title: z.string().optional().describe('Updated title'),\n company: z.string().optional().describe('Updated company'),\n bio: z.string().optional().describe('Updated bio'),\n email: z.string().optional().describe('Updated email'),\n linkedinUrl: z.string().optional().describe('Updated LinkedIn URL'),\n twitterUrl: z.string().optional().describe('Updated Twitter URL'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n topic: z.string().optional().describe('Updated topic'),\n sortOrder: z.number().int().optional().describe('Updated sort order'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update_speaker', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEventSpeaker: Record<string, unknown>;\n }>(ops.UPDATE_EVENT_SPEAKER, { id, input });\n return jsonResult(data.headshotmarketingUpdateEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_delete_speaker')),\n {\n title: 'Delete Event Speaker',\n description: 'Soft-delete an event speaker by ID.',\n inputSchema: { id: z.string().describe('Event speaker ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_delete_speaker', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteEventSpeaker: boolean;\n }>(ops.DELETE_EVENT_SPEAKER, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteEventSpeaker, id });\n }),\n );\n}\n","/**\n * Headshotmarketing SEO tools — keywords, audits, overview.\n *\n * Surface (12):\n * seo_keywords_{get,list,create,update,delete,track}\n * seo_audits_{get,list,create,update,delete,run}\n * seo_overview\n *\n * Keyword + audit list queries take a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SEOKeywordStatusEnum, SEOAuditStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerSeoTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── SEO keywords ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_get_keyword')),\n {\n title: 'Get SEO Keyword',\n description: 'Fetch a single tracked SEO keyword by ID.',\n inputSchema: { id: z.string().describe('SEO keyword ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_get_keyword', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOKeyword: Record<string, unknown> | null;\n }>(ops.GET_SEO_KEYWORD, { id });\n if (!data.headshotmarketingSEOKeyword) return errorResult(`SEO keyword ${id} not found`);\n return jsonResult(data.headshotmarketingSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_list_keywords')),\n {\n title: 'List SEO Keywords',\n description: 'List tracked SEO keywords with optional status/rank/tags/text filters.',\n inputSchema: {\n status: SEOKeywordStatusEnum.optional().describe('Filter by tracking status'),\n minRank: z.number().int().optional().describe('Minimum current rank'),\n maxRank: z.number().int().optional().describe('Maximum current rank'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, minRank, maxRank, tags, search, limit, offset }) =>\n runTool(ctx, 'seo_list_keywords', async () => {\n const filter = definedInput({ status, minRank, maxRank, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOKeywords: Record<string, unknown>;\n }>(ops.LIST_SEO_KEYWORDS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingSEOKeywords);\n }),\n );\n\n const keywordInputSchema = {\n keyword: z.string().min(1).describe('Keyword phrase'),\n url: z.string().optional().describe('Target URL'),\n searchVolume: z.number().int().optional().describe('Monthly search volume'),\n difficulty: z.number().optional().describe('Difficulty score'),\n cpc: z.number().optional().describe('Cost-per-click'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_create_keyword')),\n {\n title: 'Create SEO Keyword',\n description: 'Create a new SEO keyword to track. keyword is required.',\n inputSchema: keywordInputSchema,\n },\n (args) =>\n runTool(ctx, 'seo_create_keyword', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateSEOKeyword: Record<string, unknown>;\n }>(ops.CREATE_SEO_KEYWORD, { input });\n return jsonResult(data.headshotmarketingCreateSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_track_keyword')),\n {\n title: 'Track SEO Keyword',\n description: 'Start tracking a keyword (alias for create with TRACKING status).',\n inputSchema: keywordInputSchema,\n },\n (args) =>\n runTool(ctx, 'seo_track_keyword', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingTrackKeyword: Record<string, unknown>;\n }>(ops.TRACK_KEYWORD, { input });\n return jsonResult(data.headshotmarketingTrackKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_update_keyword')),\n {\n title: 'Update SEO Keyword',\n description: 'Update an SEO keyword. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('SEO keyword ID'),\n keyword: z.string().optional().describe('Updated keyword phrase'),\n url: z.string().optional().describe('Updated target URL'),\n status: SEOKeywordStatusEnum.optional().describe('Updated status'),\n searchVolume: z.number().int().optional().describe('Updated search volume'),\n difficulty: z.number().optional().describe('Updated difficulty'),\n cpc: z.number().optional().describe('Updated CPC'),\n currentRank: z.number().int().optional().describe('Updated current rank'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'seo_update_keyword', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateSEOKeyword: Record<string, unknown>;\n }>(ops.UPDATE_SEO_KEYWORD, { id, input });\n return jsonResult(data.headshotmarketingUpdateSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_delete_keyword')),\n {\n title: 'Delete SEO Keyword',\n description: 'Soft-delete an SEO keyword by ID.',\n inputSchema: { id: z.string().describe('SEO keyword ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_delete_keyword', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteSEOKeyword: boolean;\n }>(ops.DELETE_SEO_KEYWORD, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteSEOKeyword, id });\n }),\n );\n\n // ── SEO audits ────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_get_audit')),\n {\n title: 'Get SEO Audit',\n description: 'Fetch a single SEO audit by ID.',\n inputSchema: { id: z.string().describe('SEO audit ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_get_audit', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOAudit: Record<string, unknown> | null;\n }>(ops.GET_SEO_AUDIT, { id });\n if (!data.headshotmarketingSEOAudit) return errorResult(`SEO audit ${id} not found`);\n return jsonResult(data.headshotmarketingSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_list_audits')),\n {\n title: 'List SEO Audits',\n description: 'List SEO audits with optional status/url/min-score/text filters.',\n inputSchema: {\n status: SEOAuditStatusEnum.optional().describe('Filter by status'),\n url: z.string().optional().describe('Filter by audited URL'),\n minScore: z.number().optional().describe('Minimum overall score'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, url, minScore, search, limit, offset }) =>\n runTool(ctx, 'seo_list_audits', async () => {\n const filter = definedInput({ status, url, minScore, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOAudits: Record<string, unknown>;\n }>(ops.LIST_SEO_AUDITS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingSEOAudits);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_create_audit')),\n {\n title: 'Create SEO Audit',\n description: 'Create a new SEO audit record for a URL. url is required.',\n inputSchema: {\n url: z.string().min(1).describe('URL to audit'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n ({ url, metadata }) =>\n runTool(ctx, 'seo_create_audit', async () => {\n const input = definedInput({ url, metadata });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateSEOAudit: Record<string, unknown>;\n }>(ops.CREATE_SEO_AUDIT, { input });\n return jsonResult(data.headshotmarketingCreateSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_update_audit')),\n {\n title: 'Update SEO Audit',\n description: 'Update an SEO audit. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('SEO audit ID'),\n url: z.string().optional().describe('Updated URL'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'seo_update_audit', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateSEOAudit: Record<string, unknown>;\n }>(ops.UPDATE_SEO_AUDIT, { id, input });\n return jsonResult(data.headshotmarketingUpdateSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_delete_audit')),\n {\n title: 'Delete SEO Audit',\n description: 'Soft-delete an SEO audit by ID.',\n inputSchema: { id: z.string().describe('SEO audit ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_delete_audit', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteSEOAudit: boolean }>(\n ops.DELETE_SEO_AUDIT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteSEOAudit, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_run_audit')),\n {\n title: 'Run SEO Audit',\n description: 'Run an SEO audit for a given URL (creates and executes an audit).',\n inputSchema: { url: z.string().min(1).describe('URL to audit') },\n },\n ({ url }) =>\n runTool(ctx, 'seo_run_audit', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRunSEOAudit: Record<string, unknown>;\n }>(ops.RUN_SEO_AUDIT, { url });\n return jsonResult(data.headshotmarketingRunSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_overview')),\n {\n title: 'SEO Overview',\n description:\n 'Aggregated SEO overview metrics: keyword/audit counts, avg scores, rank movement.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'seo_overview', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOOverview: Record<string, unknown>;\n }>(ops.SEO_OVERVIEW, {});\n return jsonResult(data.headshotmarketingSEOOverview);\n }),\n );\n}\n","/**\n * Headshotmarketing landing-page builder tools.\n *\n * Surface (12):\n * landing_pages_{get,get_by_slug,list,create,update,delete,publish,unpublish}\n * landing_page_sections_{add,update,remove,reorder}\n *\n * The list query takes a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { LandingPageStatusEnum, LandingPageSectionTypeEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerLandingPageTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Landing pages ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_get')),\n {\n title: 'Get Landing Page',\n description: 'Fetch a single landing page (with sections) by ID.',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPage: Record<string, unknown> | null;\n }>(ops.GET_LANDING_PAGE, { id });\n if (!data.headshotmarketingLandingPage) return errorResult(`Landing page ${id} not found`);\n return jsonResult(data.headshotmarketingLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_get_by_slug')),\n {\n title: 'Get Landing Page By Slug',\n description: 'Fetch a single landing page (with sections) by its slug.',\n inputSchema: { slug: z.string().describe('Landing page slug') },\n },\n ({ slug }) =>\n runTool(ctx, 'landing_pages_get_by_slug', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPageBySlug: Record<string, unknown> | null;\n }>(ops.GET_LANDING_PAGE_BY_SLUG, { slug });\n if (!data.headshotmarketingLandingPageBySlug) {\n return errorResult(`Landing page with slug '${slug}' not found`);\n }\n return jsonResult(data.headshotmarketingLandingPageBySlug);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_list')),\n {\n title: 'List Landing Pages',\n description: 'List landing pages with optional status/campaign/text filters.',\n inputSchema: {\n status: LandingPageStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, campaignId, search, limit, offset }) =>\n runTool(ctx, 'landing_pages_list', async () => {\n const filter = definedInput({ status, campaignId, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPages: Record<string, unknown>;\n }>(ops.LIST_LANDING_PAGES, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingLandingPages);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_create')),\n {\n title: 'Create Landing Page',\n description: 'Create a new landing page. title and slug are required.',\n inputSchema: {\n title: z.string().min(1).describe('Page title'),\n slug: z.string().min(1).describe('URL slug'),\n description: z.string().optional().describe('Description'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n templateId: z.string().optional().describe('Template ID'),\n seoTitle: z.string().optional().describe('SEO title'),\n seoDescription: z.string().optional().describe('SEO description'),\n ogImageUrl: z.string().optional().describe('Open Graph image URL'),\n faviconUrl: z.string().optional().describe('Favicon URL'),\n customCss: z.string().optional().describe('Custom CSS'),\n customJs: z.string().optional().describe('Custom JS'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'landing_pages_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateLandingPage: Record<string, unknown>;\n }>(ops.CREATE_LANDING_PAGE, { input });\n return jsonResult(data.headshotmarketingCreateLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_update')),\n {\n title: 'Update Landing Page',\n description: 'Update a landing page. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Landing page ID'),\n title: z.string().optional().describe('Updated title'),\n slug: z.string().optional().describe('Updated slug'),\n status: LandingPageStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n templateId: z.string().optional().describe('Updated template ID'),\n seoTitle: z.string().optional().describe('Updated SEO title'),\n seoDescription: z.string().optional().describe('Updated SEO description'),\n ogImageUrl: z.string().optional().describe('Updated OG image URL'),\n faviconUrl: z.string().optional().describe('Updated favicon URL'),\n customCss: z.string().optional().describe('Updated custom CSS'),\n customJs: z.string().optional().describe('Updated custom JS'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'landing_pages_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateLandingPage: Record<string, unknown>;\n }>(ops.UPDATE_LANDING_PAGE, { id, input });\n return jsonResult(data.headshotmarketingUpdateLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_delete')),\n {\n title: 'Delete Landing Page',\n description: 'Soft-delete a landing page by ID.',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteLandingPage: boolean;\n }>(ops.DELETE_LANDING_PAGE, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteLandingPage, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_publish')),\n {\n title: 'Publish Landing Page',\n description: 'Publish a landing page (sets status to PUBLISHED and records publishedAt).',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_publish', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPublishLandingPage: Record<string, unknown>;\n }>(ops.PUBLISH_LANDING_PAGE, { id });\n return jsonResult(data.headshotmarketingPublishLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_unpublish')),\n {\n title: 'Unpublish Landing Page',\n description: 'Unpublish a landing page (sets status back to DRAFT).',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_unpublish', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUnpublishLandingPage: Record<string, unknown>;\n }>(ops.UNPUBLISH_LANDING_PAGE, { id });\n return jsonResult(data.headshotmarketingUnpublishLandingPage);\n }),\n );\n\n // ── Landing-page sections ─────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_add_section')),\n {\n title: 'Add Landing Page Section',\n description: 'Add a section to a landing page. landingPageId and type are required.',\n inputSchema: {\n landingPageId: z.string().describe('Landing page ID'),\n type: LandingPageSectionTypeEnum.describe('Section type'),\n title: z.string().optional().describe('Section title'),\n subtitle: z.string().optional().describe('Section subtitle'),\n content: JsonObject.optional().describe('Section content JSON'),\n settings: JsonObject.optional().describe('Section settings JSON'),\n backgroundColor: z.string().optional().describe('Background color'),\n backgroundImageUrl: z.string().optional().describe('Background image URL'),\n isVisible: z.boolean().optional().describe('Whether the section is visible'),\n sortOrder: z.number().int().optional().describe('Sort order'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'landing_pages_add_section', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAddLandingPageSection: Record<string, unknown>;\n }>(ops.ADD_LANDING_PAGE_SECTION, { input });\n return jsonResult(data.headshotmarketingAddLandingPageSection);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_update_section')),\n {\n title: 'Update Landing Page Section',\n description: 'Update a landing-page section. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Section ID'),\n type: LandingPageSectionTypeEnum.optional().describe('Updated section type'),\n title: z.string().optional().describe('Updated title'),\n subtitle: z.string().optional().describe('Updated subtitle'),\n content: JsonObject.optional().describe('Updated content JSON'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n backgroundColor: z.string().optional().describe('Updated background color'),\n backgroundImageUrl: z.string().optional().describe('Updated background image URL'),\n isVisible: z.boolean().optional().describe('Updated visibility'),\n sortOrder: z.number().int().optional().describe('Updated sort order'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'landing_pages_update_section', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateLandingPageSection: Record<string, unknown>;\n }>(ops.UPDATE_LANDING_PAGE_SECTION, { id, input });\n return jsonResult(data.headshotmarketingUpdateLandingPageSection);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_remove_section')),\n {\n title: 'Remove Landing Page Section',\n description: 'Remove a section from a landing page by ID.',\n inputSchema: { id: z.string().describe('Section ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_remove_section', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRemoveLandingPageSection: boolean;\n }>(ops.REMOVE_LANDING_PAGE_SECTION, { id });\n return jsonResult({ removed: data.headshotmarketingRemoveLandingPageSection, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_reorder_sections')),\n {\n title: 'Reorder Landing Page Sections',\n description: 'Reorder sections within a landing page. Returns the updated landing page.',\n inputSchema: {\n landingPageId: z.string().describe('Landing page ID'),\n sectionIds: z\n .array(z.string())\n .describe('Ordered list of section IDs in the desired order'),\n },\n },\n ({ landingPageId, sectionIds }) =>\n runTool(ctx, 'landing_pages_reorder_sections', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReorderLandingPageSections: Record<string, unknown>;\n }>(ops.REORDER_LANDING_PAGE_SECTIONS, { input: { landingPageId, sectionIds } });\n return jsonResult(data.headshotmarketingReorderLandingPageSections);\n }),\n );\n}\n","/**\n * Headshotmarketing automation tools — workflows + executions.\n *\n * Surface (9):\n * workflows_{get,list,create,update,delete,trigger}\n * workflow_executions_{get,list,cancel}\n *\n * Both list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n WorkflowStatusEnum,\n WorkflowTriggerTypeEnum,\n WorkflowExecutionStatusEnum,\n JsonObject,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerWorkflowTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Workflows ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_get')),\n {\n title: 'Get Workflow',\n description: 'Fetch a single automation workflow by ID.',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflow: Record<string, unknown> | null;\n }>(ops.GET_WORKFLOW, { id });\n if (!data.headshotmarketingWorkflow) return errorResult(`Workflow ${id} not found`);\n return jsonResult(data.headshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list')),\n {\n title: 'List Workflows',\n description: 'List automation workflows with optional status/trigger/enabled/text filters.',\n inputSchema: {\n status: WorkflowStatusEnum.optional().describe('Filter by status'),\n triggerType: WorkflowTriggerTypeEnum.optional().describe('Filter by trigger type'),\n isEnabled: z.boolean().optional().describe('Filter by enabled flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, triggerType, isEnabled, search, limit, offset }) =>\n runTool(ctx, 'workflows_list', async () => {\n const filter = filterWithPaging({ status, triggerType, isEnabled, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflows: Record<string, unknown>;\n }>(ops.LIST_WORKFLOWS, { filter });\n return jsonResult(data.headshotmarketingWorkflows);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_create')),\n {\n title: 'Create Workflow',\n description: 'Create a new automation workflow. name, triggerType and steps are required.',\n inputSchema: {\n name: z.string().min(1).describe('Workflow name'),\n triggerType: WorkflowTriggerTypeEnum.describe('Trigger type'),\n steps: z.union([JsonObject, z.array(z.unknown())]).describe('Workflow steps JSON'),\n description: z.string().optional().describe('Description'),\n status: WorkflowStatusEnum.optional().describe('Initial status'),\n isEnabled: z.boolean().optional().describe('Whether the workflow is enabled'),\n triggerConfig: JsonObject.optional().describe('Trigger configuration JSON'),\n variables: JsonObject.optional().describe('Workflow variables JSON'),\n maxRetries: z.number().int().optional().describe('Max retries'),\n timeoutSeconds: z.number().int().optional().describe('Timeout in seconds'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'workflows_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.CREATE_WORKFLOW, { input });\n return jsonResult(data.createHeadshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_update')),\n {\n title: 'Update Workflow',\n description: 'Update a workflow. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Workflow ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: WorkflowStatusEnum.optional().describe('Updated status'),\n triggerType: WorkflowTriggerTypeEnum.optional().describe('Updated trigger type'),\n steps: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated steps JSON'),\n isEnabled: z.boolean().optional().describe('Updated enabled flag'),\n triggerConfig: JsonObject.optional().describe('Updated trigger config JSON'),\n variables: JsonObject.optional().describe('Updated variables JSON'),\n maxRetries: z.number().int().optional().describe('Updated max retries'),\n timeoutSeconds: z.number().int().optional().describe('Updated timeout seconds'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'workflows_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.UPDATE_WORKFLOW, { id, input });\n return jsonResult(data.updateHeadshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_delete')),\n {\n title: 'Delete Workflow',\n description: 'Soft-delete a workflow by ID.',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingWorkflow: boolean }>(\n ops.DELETE_WORKFLOW,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingWorkflow, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_trigger')),\n {\n title: 'Trigger Workflow',\n description: 'Trigger a workflow execution manually. Returns the execution record.',\n inputSchema: {\n workflowId: z.string().describe('Workflow ID to trigger'),\n inputData: JsonObject.optional().describe('Execution input data JSON'),\n },\n },\n ({ workflowId, inputData }) =>\n runTool(ctx, 'workflows_trigger', async () => {\n const input = definedInput({ workflowId, inputData });\n const data = await ctx.gql.workspace.request<{\n triggerHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.TRIGGER_WORKFLOW, { input });\n return jsonResult(data.triggerHeadshotmarketingWorkflow);\n }),\n );\n\n // ── Workflow executions ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_get_execution')),\n {\n title: 'Get Workflow Execution',\n description: 'Fetch a single workflow execution by ID.',\n inputSchema: { id: z.string().describe('Workflow execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_get_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflowExecution: Record<string, unknown> | null;\n }>(ops.GET_WORKFLOW_EXECUTION, { id });\n if (!data.headshotmarketingWorkflowExecution) {\n return errorResult(`Workflow execution ${id} not found`);\n }\n return jsonResult(data.headshotmarketingWorkflowExecution);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list_executions')),\n {\n title: 'List Workflow Executions',\n description: 'List workflow executions with optional workflow/status filters.',\n inputSchema: {\n workflowId: z.string().optional().describe('Filter by workflow ID'),\n status: WorkflowExecutionStatusEnum.optional().describe('Filter by status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ workflowId, status, limit, offset }) =>\n runTool(ctx, 'workflows_list_executions', async () => {\n const filter = filterWithPaging({ workflowId, status }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflowExecutions: Record<string, unknown>;\n }>(ops.LIST_WORKFLOW_EXECUTIONS, { filter });\n return jsonResult(data.headshotmarketingWorkflowExecutions);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_cancel_execution')),\n {\n title: 'Cancel Workflow Execution',\n description: 'Cancel a running workflow execution.',\n inputSchema: { id: z.string().describe('Workflow execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_cancel_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n cancelHeadshotmarketingWorkflowExecution: Record<string, unknown>;\n }>(ops.CANCEL_WORKFLOW_EXECUTION, { id });\n return jsonResult(data.cancelHeadshotmarketingWorkflowExecution);\n }),\n );\n}\n","/**\n * Headshotmarketing analytics tools.\n *\n * Surface (17):\n * dashboards_metrics, content_performance, dashboards_funnel_data, dashboards_time_series_data\n * campaigns_analytics, campaigns_record_analytics\n * dashboards_channel_performance, dashboards_record_channel_performance\n * dashboard_configs_{get,list,create,update,delete}\n * reports_{get,list,create,update,delete}\n *\n * dashboard_configs + reports list queries take a separate\n * `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n MetricTypeEnum,\n DateRangePresetEnum,\n ReportStatusEnum,\n ReportTypeEnum,\n DateRange,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Aggregate analytics ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_metrics')),\n {\n title: 'Dashboard Metrics',\n description: 'Aggregated dashboard KPIs (impressions, clicks, conversions, revenue, ROAS).',\n inputSchema: {\n dateRange: DateRange.optional().describe('Optional { start, end } date range'),\n },\n },\n ({ dateRange }) =>\n runTool(ctx, 'dashboards_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardMetrics: Record<string, unknown>;\n }>(ops.DASHBOARD_METRICS, { dateRange });\n return jsonResult(data.headshotmarketingDashboardMetrics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_performance')),\n {\n title: 'Content Performance',\n description:\n 'Aggregated content performance metrics (item/asset/AI-execution counts, scores).',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'content_performance', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentPerformance: Record<string, unknown>;\n }>(ops.CONTENT_PERFORMANCE, {});\n return jsonResult(data.headshotmarketingContentPerformance);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_funnel_data')),\n {\n title: 'Funnel Data',\n description: 'Get marketing funnel stage data (counts, values, conversion + drop-off rates).',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'dashboards_funnel_data', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingFunnelData: Array<Record<string, unknown>>;\n }>(ops.FUNNEL_DATA, {});\n return jsonResult(data.headshotmarketingFunnelData);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_time_series_data')),\n {\n title: 'Time Series Data',\n description: 'Get time-series data for a specific metric over a date range.',\n inputSchema: {\n metric: MetricTypeEnum.describe('The metric to chart'),\n dateRange: DateRange.describe('{ start, end } date range'),\n },\n },\n ({ metric, dateRange }) =>\n runTool(ctx, 'dashboards_time_series_data', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingTimeSeriesData: Record<string, unknown>;\n }>(ops.TIME_SERIES_DATA, { metric, dateRange });\n return jsonResult(data.headshotmarketingTimeSeriesData);\n }),\n );\n\n // ── Campaign analytics ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_analytics')),\n {\n title: 'Campaign Analytics',\n description: 'Get analytics rows for a specific campaign over an optional date range.',\n inputSchema: {\n campaignId: z.string().describe('Campaign ID'),\n dateRange: DateRange.optional().describe('Optional { start, end } date range'),\n },\n },\n ({ campaignId, dateRange }) =>\n runTool(ctx, 'campaigns_analytics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignAnalytics: Record<string, unknown>;\n }>(ops.CAMPAIGN_ANALYTICS, { campaignId, dateRange });\n return jsonResult(data.headshotmarketingCampaignAnalytics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_record_analytics')),\n {\n title: 'Record Campaign Analytics',\n description: 'Record a campaign analytics data point.',\n inputSchema: {\n campaignId: z.string().describe('Campaign ID'),\n date: IsoDateTime.describe('Analytics date'),\n impressions: z.number().int().describe('Impressions'),\n clicks: z.number().int().describe('Clicks'),\n conversions: z.number().int().describe('Conversions'),\n cost: z.number().describe('Cost'),\n revenue: z.number().describe('Revenue'),\n leads: z.number().int().optional().describe('Leads'),\n engagementRate: z.number().optional().describe('Engagement rate'),\n bounceRate: z.number().optional().describe('Bounce rate'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'campaigns_record_analytics', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRecordCampaignAnalytics: Record<string, unknown>;\n }>(ops.RECORD_CAMPAIGN_ANALYTICS, { input });\n return jsonResult(data.headshotmarketingRecordCampaignAnalytics);\n }),\n );\n\n // ── Channel performance ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_channel_performance')),\n {\n title: 'Channel Performance',\n description: 'Get channel performance data for a date range.',\n inputSchema: { dateRange: DateRange.describe('{ start, end } date range') },\n },\n ({ dateRange }) =>\n runTool(ctx, 'dashboards_channel_performance', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingChannelPerformance: Record<string, unknown>;\n }>(ops.CHANNEL_PERFORMANCE, { dateRange });\n return jsonResult(data.headshotmarketingChannelPerformance);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_record_channel_performance')),\n {\n title: 'Record Channel Performance',\n description: 'Record a channel performance data point.',\n inputSchema: {\n channel: z.string().describe('Channel name'),\n date: IsoDateTime.describe('Performance date'),\n impressions: z.number().int().describe('Impressions'),\n clicks: z.number().int().describe('Clicks'),\n conversions: z.number().int().describe('Conversions'),\n cost: z.number().describe('Cost'),\n revenue: z.number().describe('Revenue'),\n leads: z.number().int().optional().describe('Leads'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'dashboards_record_channel_performance', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRecordChannelPerformance: Record<string, unknown>;\n }>(ops.RECORD_CHANNEL_PERFORMANCE, { input });\n return jsonResult(data.headshotmarketingRecordChannelPerformance);\n }),\n );\n\n // ── Dashboard configs ─────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_get_config')),\n {\n title: 'Get Dashboard Config',\n description: 'Fetch a single dashboard configuration by ID.',\n inputSchema: { id: z.string().describe('Dashboard config ID') },\n },\n ({ id }) =>\n runTool(ctx, 'dashboards_get_config', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardConfig: Record<string, unknown> | null;\n }>(ops.GET_DASHBOARD_CONFIG, { id });\n if (!data.headshotmarketingDashboardConfig) {\n return errorResult(`Dashboard config ${id} not found`);\n }\n return jsonResult(data.headshotmarketingDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_list_configs')),\n {\n title: 'List Dashboard Configs',\n description: 'List dashboard configurations with optional default/text filters.',\n inputSchema: {\n isDefault: z.boolean().optional().describe('Filter by default flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isDefault, search, limit, offset }) =>\n runTool(ctx, 'dashboards_list_configs', async () => {\n const filter = definedInput({ isDefault, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardConfigs: Record<string, unknown>;\n }>(ops.LIST_DASHBOARD_CONFIGS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingDashboardConfigs);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_create_config')),\n {\n title: 'Create Dashboard Config',\n description: 'Create a new dashboard configuration. name, layout and widgets are required.',\n inputSchema: {\n name: z.string().min(1).describe('Config name'),\n layout: JsonObject.describe('Layout JSON'),\n widgets: z.union([JsonObject, z.array(z.unknown())]).describe('Widgets JSON'),\n description: z.string().optional().describe('Description'),\n filters: JsonObject.optional().describe('Default filters JSON'),\n dateRangePreset: DateRangePresetEnum.optional().describe('Default date-range preset'),\n isDefault: z.boolean().optional().describe('Whether this is the default dashboard'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'dashboards_create_config', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateDashboardConfig: Record<string, unknown>;\n }>(ops.CREATE_DASHBOARD_CONFIG, { input });\n return jsonResult(data.headshotmarketingCreateDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_update_config')),\n {\n title: 'Update Dashboard Config',\n description: 'Update a dashboard configuration. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Dashboard config ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n layout: JsonObject.optional().describe('Updated layout JSON'),\n widgets: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated widgets JSON'),\n filters: JsonObject.optional().describe('Updated filters JSON'),\n dateRangePreset: DateRangePresetEnum.optional().describe('Updated date-range preset'),\n isDefault: z.boolean().optional().describe('Updated default flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'dashboards_update_config', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateDashboardConfig: Record<string, unknown>;\n }>(ops.UPDATE_DASHBOARD_CONFIG, { id, input });\n return jsonResult(data.headshotmarketingUpdateDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_delete_config')),\n {\n title: 'Delete Dashboard Config',\n description: 'Soft-delete a dashboard configuration by ID.',\n inputSchema: { id: z.string().describe('Dashboard config ID') },\n },\n ({ id }) =>\n runTool(ctx, 'dashboards_delete_config', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteDashboardConfig: boolean;\n }>(ops.DELETE_DASHBOARD_CONFIG, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteDashboardConfig, id });\n }),\n );\n\n // ── Reports ─────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_get')),\n {\n title: 'Get Report',\n description: 'Fetch a single analytics report by ID.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n ({ id }) =>\n runTool(ctx, 'reports_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReport: Record<string, unknown> | null;\n }>(ops.GET_REPORT, { id });\n if (!data.headshotmarketingReport) return errorResult(`Report ${id} not found`);\n return jsonResult(data.headshotmarketingReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_list')),\n {\n title: 'List Reports',\n description: 'List analytics reports with optional type/status/text filters.',\n inputSchema: {\n type: ReportTypeEnum.optional().describe('Filter by report type'),\n status: ReportStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, search, limit, offset }) =>\n runTool(ctx, 'reports_list', async () => {\n const filter = definedInput({ type, status, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReports: Record<string, unknown>;\n }>(ops.LIST_REPORTS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingReports);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_create')),\n {\n title: 'Create Report',\n description: 'Create a new analytics report. name and type are required.',\n inputSchema: {\n name: z.string().min(1).describe('Report name'),\n type: ReportTypeEnum.describe('Report type'),\n description: z.string().optional().describe('Description'),\n configuration: JsonObject.optional().describe('Report configuration JSON'),\n dateRangeStart: IsoDateTime.optional().describe('Date range start'),\n dateRangeEnd: IsoDateTime.optional().describe('Date range end'),\n scheduleExpression: z.string().optional().describe('Cron/schedule expression'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'reports_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateReport: Record<string, unknown>;\n }>(ops.CREATE_REPORT, { input });\n return jsonResult(data.headshotmarketingCreateReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_update')),\n {\n title: 'Update Report',\n description: 'Update an analytics report. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Report ID'),\n name: z.string().optional().describe('Updated name'),\n type: ReportTypeEnum.optional().describe('Updated type'),\n status: ReportStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n dateRangeStart: IsoDateTime.optional().describe('Updated date range start'),\n dateRangeEnd: IsoDateTime.optional().describe('Updated date range end'),\n scheduleExpression: z.string().optional().describe('Updated schedule expression'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'reports_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateReport: Record<string, unknown>;\n }>(ops.UPDATE_REPORT, { id, input });\n return jsonResult(data.headshotmarketingUpdateReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_delete')),\n {\n title: 'Delete Report',\n description: 'Soft-delete an analytics report by ID.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n ({ id }) =>\n runTool(ctx, 'reports_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteReport: boolean }>(\n ops.DELETE_REPORT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteReport, id });\n }),\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { DASHBOARD_METRICS, SEO_OVERVIEW, LIST_CAMPAIGNS } from './operations.js';\n\n/**\n * Read-only Headshotmarketing MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerHeadshotmarketingResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const dashboardUri = track(mcpResourceUri(ctx.productName, 'dashboard'));\n const seoUri = track(mcpResourceUri(ctx.productName, 'seo'));\n const campaignsUri = track(mcpResourceUri(ctx.productName, 'campaigns'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'headshotmarketing-schema',\n schemaUri,\n {\n title: 'Headshotmarketing Domain Schema',\n description:\n 'Overview of the Headshotmarketing marketing-operations domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Headshotmarketing Domain (Overview)\n\nEnd-to-end marketing operations platform. All operations are workspace-scoped\n(WORKSPACE gateway); there is no public health probe (schema exposes only _empty).\n\n## Entity groups → tool prefixes\n- campaigns, campaign_templates (marketing campaigns + reusable templates)\n- contacts (+ contact_activities) (CRM contacts)\n- leads (+ deals_convert_lead) (CRM leads → deals)\n- deals, pipelines, pipeline_stages (sales pipeline)\n- content_items, assets, ai_tools, ai_tool_executions (content studio)\n- social_accounts, social_posts (social publishing) + social_metrics\n- ad_campaigns, ad_creatives, audiences (paid ads) + ads_metrics\n- influencers, influencer_campaigns, influencer_relationships\n- events, event_registrations, event_speakers\n- seo_keywords, seo_audits (+ seo_overview)\n- landing_pages, landing_page_sections (page builder)\n- workflows, workflow_executions (automation)\n- analytics: dashboards_metrics, content_performance, dashboards_funnel_data, dashboards_time_series_data,\n campaigns_analytics, dashboards_channel_performance, reports, dashboard_configs\n\n## Notable enums\n- CampaignType: AD, CONTENT, EMAIL, EVENT, INFLUENCER, MULTI_CHANNEL, SOCIAL\n- LeadStatus: NEW, CONTACTED, QUALIFIED, UNQUALIFIED, CONVERTED, LOST\n- DealStatus: OPEN, WON, LOST, STALE\n- InfluencerTier: NANO, MICRO, MID, MACRO, MEGA, CELEBRITY\n- SocialPlatform: FACEBOOK, INSTAGRAM, LINKEDIN, PINTEREST, TIKTOK, TWITTER, YOUTUBE\n- AdPlatform: FACEBOOK_ADS, GOOGLE_ADS, INSTAGRAM_ADS, LINKEDIN_ADS, TIKTOK_ADS, TWITTER_ADS\n- WorkflowTriggerType: MANUAL, SCHEDULE, EVENT, WEBHOOK, CONDITION\n\n## Naming note\nRoot fields are inconsistently prefixed: some are headshotmarketing<Verb><Entity>\n(e.g. headshotmarketingCreateContentItem) and others <verb>Headshotmarketing<Entity>\n(e.g. createHeadshotmarketingCampaign). The tools call each by its real name.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://dashboard — headline KPIs\n server.registerResource(\n 'headshotmarketing-dashboard',\n dashboardUri,\n {\n title: 'Headshotmarketing Dashboard Metrics',\n description:\n 'Live aggregated dashboard KPIs (impressions, clicks, conversions, revenue, ROAS).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${dashboardUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardMetrics: unknown;\n }>(DASHBOARD_METRICS, {});\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify(data.headshotmarketingDashboardMetrics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://seo — SEO overview\n server.registerResource(\n 'headshotmarketing-seo',\n seoUri,\n {\n title: 'Headshotmarketing SEO Overview',\n description: 'Aggregated SEO overview (keyword/audit counts, avg scores, rank movement).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${seoUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ headshotmarketingSEOOverview: unknown }>(\n SEO_OVERVIEW,\n {},\n );\n return {\n contents: [\n {\n uri: seoUri,\n text: JSON.stringify(data.headshotmarketingSEOOverview, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: seoUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://campaigns — campaign directory\n server.registerResource(\n 'headshotmarketing-campaigns',\n campaignsUri,\n {\n title: 'Headshotmarketing Campaign Directory',\n description: 'The first 50 marketing campaigns in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${campaignsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ headshotmarketingCampaigns: unknown }>(\n LIST_CAMPAIGNS,\n { filter: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: campaignsUri,\n text: JSON.stringify(data.headshotmarketingCampaigns, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: campaignsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Headshotmarketing MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerHeadshotmarketingPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const launchName = track(mcpPromptName(p, 'campaign-launch'));\n const pipelineName = track(mcpPromptName(p, 'pipeline-ops'));\n\n // <product>-campaign-launch — stand up and launch a multi-channel campaign\n server.registerPrompt(\n launchName,\n {\n title: 'Campaign Launch',\n description:\n 'Guide for launching a Headshotmarketing campaign end to end: create the campaign, attach audiences/ad creatives/social posts/content, then activate and watch KPIs.',\n argsSchema: {\n name: z.string().optional().describe('Campaign name'),\n type: z.string().optional().describe('Campaign type/channel'),\n },\n },\n ({ name, type }) => {\n ctx.logger.debug(`Prompt ${launchName} called`, { name, type });\n const nameNote = name\n ? `Use the campaign name \"${name}\".`\n : 'Ask the user for the campaign name.';\n const typeNote = type ? `Use type ${type}.` : 'Help the user pick a CampaignType.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me launch a new Headshotmarketing campaign.\n\n1. **Create Campaign**: Use ${p}_campaigns_create. ${nameNote} ${typeNote} Set a budget and start/end dates.\n2. **Audience**: Use ${p}_audiences_create (or ${p}_audiences_list) to define/choose the target audience.\n3. **Channels** (as relevant to the type):\n - Paid: ${p}_ad_campaigns_create + ${p}_ad_creatives_create.\n - Social: ${p}_social_posts_create then ${p}_social_posts_schedule.\n - Content: ${p}_content_items_create (optionally generate copy with ${p}_ai_tools_execute).\n - Influencer: ${p}_influencers_discover then ${p}_influencer_campaigns_create.\n - Event: ${p}_events_create + ${p}_event_speakers_create.\n4. **Landing page** (optional): ${p}_landing_pages_create + ${p}_landing_page_sections_add, then ${p}_landing_pages_publish.\n5. **Activate**: ${p}_campaigns_update with status=ACTIVE.\n6. **Measure**: ${p}_dashboard_metrics and ${p}_campaign_analytics for the new campaignId.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-pipeline-ops — daily CRM/pipeline operations\n server.registerPrompt(\n pipelineName,\n {\n title: 'Pipeline Operations',\n description:\n 'Daily CRM + sales-pipeline workflow: triage new leads, convert qualified ones to deals, advance deals through stages, and review the funnel.',\n argsSchema: {\n pipelineId: z.string().optional().describe('Pipeline ID to operate'),\n },\n },\n ({ pipelineId }) => {\n ctx.logger.debug(`Prompt ${pipelineName} called`, { pipelineId });\n const pipelineNote = pipelineId\n ? `Operate pipeline \"${pipelineId}\".`\n : `First list pipelines with ${p}_pipelines_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Headshotmarketing pipeline operations. ${pipelineNote}\n\n1. **New leads**: Use ${p}_leads_list filtered by status=NEW. Qualify with ${p}_leads_update (status=QUALIFIED).\n2. **Convert**: For qualified leads use ${p}_leads_convert (provide pipelineId, stageId, dealTitle) to create deals.\n3. **Advance deals**: Use ${p}_deals_list for the pipeline; move forward with ${p}_deals_move (stageId) and close with ${p}_deals_update (status=WON/LOST).\n4. **Overview**: Use ${p}_pipelines_overview for per-stage counts/values and ${p}_funnel_data for the marketing funnel.\n5. **Follow-ups**: Log activities via ${p}_contact_activities_list to see recent contact interactions.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Headshotmarketing module — domain module for the future-products ecosystem program.\n *\n * Covers every collection of wspace-headshotmarketing-svc grouped into\n * per-entity sub-APIs: campaigns, contacts, leads, deals/pipelines,\n * content (content items/assets/AI tools), social, paid ads/audiences,\n * influencers, events, SEO, landing-page builder, workflows, and analytics.\n * Mirrors the kadaikodi / crewfoundry modules' structure (tools/<group>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`). All operations run against the\n * WORKSPACE gateway. The schema exposes only `_empty` at the roots (no public\n * health probe), so this module registers NO health tool.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerCampaignTools } from './tools/campaigns.js';\nimport { registerContactTools } from './tools/contacts.js';\nimport { registerLeadTools } from './tools/leads.js';\nimport { registerDealTools } from './tools/deals.js';\nimport { registerContentTools } from './tools/content.js';\nimport { registerSocialTools } from './tools/social.js';\nimport { registerAdTools } from './tools/ads.js';\nimport { registerInfluencerTools } from './tools/influencers.js';\nimport { registerEventTools } from './tools/events.js';\nimport { registerSeoTools } from './tools/seo.js';\nimport { registerLandingPageTools } from './tools/landing_pages.js';\nimport { registerWorkflowTools } from './tools/workflows.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerHeadshotmarketingResources } from './resources.js';\nimport { registerHeadshotmarketingPrompts } from './prompts.js';\n\nconst headshotmarketingModule: McpModule = {\n id: 'headshotmarketing',\n version: '0.0.1',\n displayName: 'Headshotmarketing',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerCampaignTools(server, ctx, trackTool);\n registerContactTools(server, ctx, trackTool);\n registerLeadTools(server, ctx, trackTool);\n registerDealTools(server, ctx, trackTool);\n registerContentTools(server, ctx, trackTool);\n registerSocialTools(server, ctx, trackTool);\n registerAdTools(server, ctx, trackTool);\n registerInfluencerTools(server, ctx, trackTool);\n registerEventTools(server, ctx, trackTool);\n registerSeoTools(server, ctx, trackTool);\n registerLandingPageTools(server, ctx, trackTool);\n registerWorkflowTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n\n registerHeadshotmarketingResources(server, ctx, trackResource);\n registerHeadshotmarketingPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default headshotmarketingModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/headshotmarketing/operations.ts","../../../src/modules/headshotmarketing/tools/shared.ts","../../../src/modules/headshotmarketing/tools/campaigns.ts","../../../src/modules/headshotmarketing/tools/helpers.ts","../../../src/modules/headshotmarketing/tools/contacts.ts","../../../src/modules/headshotmarketing/tools/leads.ts","../../../src/modules/headshotmarketing/tools/deals.ts","../../../src/modules/headshotmarketing/tools/content.ts","../../../src/modules/headshotmarketing/tools/social.ts","../../../src/modules/headshotmarketing/tools/ads.ts","../../../src/modules/headshotmarketing/tools/influencers.ts","../../../src/modules/headshotmarketing/tools/events.ts","../../../src/modules/headshotmarketing/tools/seo.ts","../../../src/modules/headshotmarketing/tools/landing_pages.ts","../../../src/modules/headshotmarketing/tools/workflows.ts","../../../src/modules/headshotmarketing/tools/analytics.ts","../../../src/modules/headshotmarketing/resources.ts","../../../src/modules/headshotmarketing/prompts.ts","../../../src/modules/headshotmarketing/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n\n/**\n * Name-based hint heuristics for MCP `annotations` (readOnlyHint /\n * destructiveHint). Used by tool-governance.ts to auto-fill annotations for\n * the fleet of product modules that call `server.registerTool` directly\n * (bypassing the `registerTool()` core helper) and so never set them\n * explicitly today (BOFF-3903). Deliberately conservative — matched against\n * whole `_`-delimited segments so e.g. `timeentries_delete` and\n * `pomodoro_delete_goal` match, but a hypothetical `undeletable_check`\n * would not.\n *\n * A module can always override the inference by passing an explicit\n * `annotations` object to `registerTool()` / `server.registerTool()`.\n */\nconst DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;\nconst READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;\n\n/** True when a tool name looks destructive (irreversibly deletes data) by naming convention. */\nexport function inferDestructiveHint(toolName: string): boolean {\n return DESTRUCTIVE_NAME_SEGMENT.test(toolName);\n}\n\n/**\n * True when a tool name looks read-only by naming convention. Never true for\n * a name that also looks destructive (a tool can't be both).\n */\nexport function inferReadOnlyHint(toolName: string): boolean {\n return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\nimport type { ToolAnnotations } from './tool-governance.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n /**\n * Explicit MCP annotations (readOnlyHint / destructiveHint / ...). Optional\n * — when omitted, `wrapServerWithToolGovernance` (applied centrally in\n * `createMcpServer`) infers them from the tool name. Set this to override\n * the inference for a tool whose name doesn't match the naming convention.\n */\n annotations?: ToolAnnotations;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n ...(metadata.annotations ? { annotations: metadata.annotations } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Centralized GraphQL operations for the Headshotmarketing MCP module.\n *\n * Headshotmarketing is the end-to-end marketing operations platform. Backend\n * subgraph: ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Headshotmarketing inputs do NOT carry a\n * workspaceId (the optional `workspaceId` filter fields are left unset).\n *\n * Every root field is called by its EXACT schema name. Note the inconsistent\n * server prefixing: some operations are `headshotmarketing<Verb><Entity>`\n * (e.g. headshotmarketingCreateContentItem) while others are\n * `<verb>Headshotmarketing<Entity>` (e.g. createHeadshotmarketingCampaign) —\n * both forms appear verbatim below.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (scalar selections; access/refresh tokens deliberately omitted)\n// ---------------------------------------------------------------------------\n\nexport const CAMPAIGN_FIELDS = `\n id name description type status budget spent goals tags startDate endDate\n metadata createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const CAMPAIGN_TEMPLATE_FIELDS = `\n id name description type configuration isActive tags metadata\n createdBy workspaceId createdAt updatedAt\n`;\n\nexport const CONTACT_FIELDS = `\n id firstName lastName email phone company jobTitle avatarUrl address\n socialProfiles customFields status tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const CONTACT_ACTIVITY_FIELDS = `\n id contactId type title description metadata createdBy createdAt\n`;\n\nexport const LEAD_FIELDS = `\n id title description status source score estimatedValue contactId campaignId\n ownerId customFields tags metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const DEAL_FIELDS = `\n id title description status value probability pipelineId stageId contactId\n leadId ownerId expectedCloseDate closedAt customFields tags metadata\n createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const PIPELINE_STAGE_FIELDS = `\n id pipelineId name description order color defaultProbability isActive\n metadata createdAt updatedAt\n`;\n\nexport const PIPELINE_FIELDS = `\n id name description isActive isDefault metadata createdBy workspaceId\n createdAt updatedAt\n stages { ${PIPELINE_STAGE_FIELDS} }\n`;\n\nexport const PIPELINE_OVERVIEW_FIELDS = `\n pipelineId pipelineName totalDeals totalValue stages\n`;\n\nexport const CONTENT_ITEM_FIELDS = `\n id title type status body summary slug tags authorId campaignId\n scheduledAt publishedAt metadata workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id name type url thumbnailUrl mimeType sizeBytes width height altText\n folderId tags metadata uploadedBy workspaceId createdAt updatedAt\n`;\n\nexport const AI_TOOL_FIELDS = `\n id name description category provider model isEnabled configuration\n usageCount metadata workspaceId createdAt updatedAt\n`;\n\nexport const AI_TOOL_EXECUTION_FIELDS = `\n id toolId status input output cost durationMs tokensUsed errorMessage\n executedBy metadata workspaceId createdAt updatedAt\n`;\n\nexport const SOCIAL_ACCOUNT_FIELDS = `\n id platform accountName platformAccountId profileUrl avatarUrl followerCount\n status tokenExpiresAt metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const SOCIAL_POST_FIELDS = `\n id socialAccountId campaignId content mediaUrls status scheduledAt publishedAt\n platformPostId postUrl metrics errorMessage tags metadata createdBy updatedBy\n workspaceId createdAt updatedAt\n`;\n\nexport const AD_CAMPAIGN_FIELDS = `\n id name description platform status campaignId audienceId totalBudget\n dailyBudget spent bidStrategy startDate endDate metrics metadata\n createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const AD_CREATIVE_FIELDS = `\n id adCampaignId name type status headline body callToAction destinationUrl\n mediaUrls metrics metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const AUDIENCE_FIELDS = `\n id name description estimatedSize isActive targetingCriteria tags metadata\n createdBy workspaceId createdAt updatedAt\n`;\n\nexport const INFLUENCER_FIELDS = `\n id name bio email phone location tier totalFollowers engagementRate niches\n platforms audienceDemographics avatarUrl tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const INFLUENCER_CAMPAIGN_FIELDS = `\n id name description influencerId campaignId status compensation compensationType\n deliverables contentDeadline startDate endDate metrics metadata createdBy\n updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const INFLUENCER_RELATIONSHIP_FIELDS = `\n id influencerId status rating notes firstContactDate lastInteractionDate\n totalCampaigns totalCompensation tags metadata createdBy workspaceId\n createdAt updatedAt\n`;\n\nexport const EVENT_FIELDS = `\n id title description type status slug startDate endDate timezone location\n virtualUrl maxAttendees registrationCount coverImageUrl campaignId tags\n metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const EVENT_REGISTRATION_FIELDS = `\n id eventId attendeeName attendeeEmail attendeePhone attendeeCompany\n attendeeTitle status checkedInAt cancelledAt notes registeredBy metadata\n workspaceId createdAt updatedAt\n`;\n\nexport const EVENT_SPEAKER_FIELDS = `\n id eventId name title company bio email linkedinUrl twitterUrl avatarUrl\n topic sortOrder metadata workspaceId createdAt updatedAt\n`;\n\nexport const SEO_KEYWORD_FIELDS = `\n id keyword url status searchVolume difficulty cpc currentRank previousRank\n bestRank lastCheckedAt tags metadata workspaceId createdAt updatedAt\n`;\n\nexport const SEO_AUDIT_FIELDS = `\n id url status pageTitle metaDescription canonicalUrl overallScore seoScore\n performanceScore accessibilityScore bestPracticesScore totalIssues\n criticalIssues warningIssues findings runBy completedAt metadata workspaceId\n createdAt updatedAt\n`;\n\nexport const LANDING_PAGE_SECTION_FIELDS = `\n id landingPageId type title subtitle content settings backgroundColor\n backgroundImageUrl isVisible sortOrder metadata createdAt updatedAt\n`;\n\nexport const LANDING_PAGE_FIELDS = `\n id title slug description status campaignId templateId seoTitle seoDescription\n ogImageUrl faviconUrl customCss customJs publishedUrl publishedAt viewCount\n conversionCount metadata createdBy workspaceId createdAt updatedAt\n sections { ${LANDING_PAGE_SECTION_FIELDS} }\n`;\n\nexport const WORKFLOW_FIELDS = `\n id name description status triggerType triggerConfig steps variables\n isEnabled maxRetries timeoutSeconds executionCount lastExecutedAt tags\n metadata createdBy updatedBy workspaceId createdAt updatedAt\n`;\n\nexport const WORKFLOW_EXECUTION_FIELDS = `\n id workflowId status currentStep totalSteps stepLog inputData outputData\n errorMessage errorDetails retryCount durationMs startedAt completedAt\n triggeredBy metadata workspaceId createdAt updatedAt\n`;\n\nexport const CAMPAIGN_ANALYTICS_FIELDS = `\n id campaignId date impressions clicks conversions leads cost revenue ctr\n cpc roas engagementRate bounceRate metadata workspaceId createdAt updatedAt\n`;\n\nexport const CHANNEL_PERFORMANCE_FIELDS = `\n id channel date impressions clicks conversions leads cost revenue ctr cpc\n cpm roas metadata workspaceId createdAt updatedAt\n`;\n\nexport const DASHBOARD_CONFIG_FIELDS = `\n id name description layout widgets filters dateRangePreset isDefault\n metadata createdBy workspaceId createdAt updatedAt\n`;\n\nexport const REPORT_FIELDS = `\n id name description type status configuration data dateRangeStart dateRangeEnd\n scheduleExpression generatedAt generatedBy metadata workspaceId\n createdAt updatedAt\n`;\n\n// ===========================================================================\n// Campaigns + templates\n// ===========================================================================\n\nexport const GET_CAMPAIGN = `\n query HmGetCampaign($id: ID!) {\n headshotmarketingCampaign(id: $id) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_CAMPAIGNS = `\n query HmListCampaigns($filter: HeadshotmarketingCampaignFilterInput) {\n headshotmarketingCampaigns(filter: $filter) {\n total hasMore items { ${CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CAMPAIGN = `\n mutation HmCreateCampaign($input: CreateHeadshotmarketingCampaignInput!) {\n createHeadshotmarketingCampaign(input: $input) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_CAMPAIGN = `\n mutation HmUpdateCampaign($id: ID!, $input: UpdateHeadshotmarketingCampaignInput!) {\n updateHeadshotmarketingCampaign(id: $id, input: $input) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_CAMPAIGN = `\n mutation HmDeleteCampaign($id: ID!) {\n deleteHeadshotmarketingCampaign(id: $id)\n }\n`;\n\nexport const DUPLICATE_CAMPAIGN = `\n mutation HmDuplicateCampaign($id: ID!) {\n duplicateHeadshotmarketingCampaign(id: $id) { ${CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const GET_CAMPAIGN_TEMPLATE = `\n query HmGetCampaignTemplate($id: ID!) {\n headshotmarketingCampaignTemplate(id: $id) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const LIST_CAMPAIGN_TEMPLATES = `\n query HmListCampaignTemplates($filter: HeadshotmarketingCampaignTemplateFilterInput) {\n headshotmarketingCampaignTemplates(filter: $filter) {\n total hasMore items { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CAMPAIGN_TEMPLATE = `\n mutation HmCreateCampaignTemplate($input: CreateHeadshotmarketingCampaignTemplateInput!) {\n createHeadshotmarketingCampaignTemplate(input: $input) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const UPDATE_CAMPAIGN_TEMPLATE = `\n mutation HmUpdateCampaignTemplate($id: ID!, $input: UpdateHeadshotmarketingCampaignTemplateInput!) {\n updateHeadshotmarketingCampaignTemplate(id: $id, input: $input) { ${CAMPAIGN_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const DELETE_CAMPAIGN_TEMPLATE = `\n mutation HmDeleteCampaignTemplate($id: ID!) {\n deleteHeadshotmarketingCampaignTemplate(id: $id)\n }\n`;\n\n// ===========================================================================\n// Contacts\n// ===========================================================================\n\nexport const GET_CONTACT = `\n query HmGetContact($id: ID!) {\n headshotmarketingContact(id: $id) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const LIST_CONTACTS = `\n query HmListContacts($filter: HeadshotmarketingContactFilterInput) {\n headshotmarketingContacts(filter: $filter) {\n total hasMore items { ${CONTACT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_CONTACT_ACTIVITIES = `\n query HmContactActivities($contactId: ID!, $limit: Int, $offset: Int) {\n headshotmarketingContactActivities(contactId: $contactId, limit: $limit, offset: $offset) {\n ${CONTACT_ACTIVITY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_CONTACT = `\n mutation HmCreateContact($input: CreateHeadshotmarketingContactInput!) {\n createHeadshotmarketingContact(input: $input) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONTACT = `\n mutation HmUpdateContact($id: ID!, $input: UpdateHeadshotmarketingContactInput!) {\n updateHeadshotmarketingContact(id: $id, input: $input) { ${CONTACT_FIELDS} }\n }\n`;\n\nexport const DELETE_CONTACT = `\n mutation HmDeleteContact($id: ID!) {\n deleteHeadshotmarketingContact(id: $id)\n }\n`;\n\n// ===========================================================================\n// Leads\n// ===========================================================================\n\nexport const GET_LEAD = `\n query HmGetLead($id: ID!) {\n headshotmarketingLead(id: $id) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const LIST_LEADS = `\n query HmListLeads($filter: HeadshotmarketingLeadFilterInput) {\n headshotmarketingLeads(filter: $filter) {\n total hasMore items { ${LEAD_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_LEAD = `\n mutation HmCreateLead($input: CreateHeadshotmarketingLeadInput!) {\n createHeadshotmarketingLead(input: $input) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const UPDATE_LEAD = `\n mutation HmUpdateLead($id: ID!, $input: UpdateHeadshotmarketingLeadInput!) {\n updateHeadshotmarketingLead(id: $id, input: $input) { ${LEAD_FIELDS} }\n }\n`;\n\nexport const DELETE_LEAD = `\n mutation HmDeleteLead($id: ID!) {\n deleteHeadshotmarketingLead(id: $id)\n }\n`;\n\nexport const CONVERT_LEAD = `\n mutation HmConvertLead($leadId: ID!, $pipelineId: ID!, $stageId: ID!, $dealTitle: String!) {\n convertHeadshotmarketingLead(\n leadId: $leadId\n pipelineId: $pipelineId\n stageId: $stageId\n dealTitle: $dealTitle\n ) { ${DEAL_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Deals + pipelines\n// ===========================================================================\n\nexport const GET_DEAL = `\n query HmGetDeal($id: ID!) {\n headshotmarketingDeal(id: $id) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const LIST_DEALS = `\n query HmListDeals($filter: HeadshotmarketingDealFilterInput) {\n headshotmarketingDeals(filter: $filter) {\n total hasMore items { ${DEAL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_DEAL = `\n mutation HmCreateDeal($input: CreateHeadshotmarketingDealInput!) {\n createHeadshotmarketingDeal(input: $input) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const UPDATE_DEAL = `\n mutation HmUpdateDeal($id: ID!, $input: UpdateHeadshotmarketingDealInput!) {\n updateHeadshotmarketingDeal(id: $id, input: $input) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const DELETE_DEAL = `\n mutation HmDeleteDeal($id: ID!) {\n deleteHeadshotmarketingDeal(id: $id)\n }\n`;\n\nexport const MOVE_DEAL = `\n mutation HmMoveDeal($id: ID!, $stageId: ID!) {\n moveHeadshotmarketingDeal(id: $id, stageId: $stageId) { ${DEAL_FIELDS} }\n }\n`;\n\nexport const GET_PIPELINE = `\n query HmGetPipeline($id: ID!) {\n headshotmarketingPipeline(id: $id) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const LIST_PIPELINES = `\n query HmListPipelines($filter: HeadshotmarketingPipelineFilterInput) {\n headshotmarketingPipelines(filter: $filter) {\n total hasMore items { ${PIPELINE_FIELDS} }\n }\n }\n`;\n\nexport const GET_PIPELINE_OVERVIEW = `\n query HmPipelineOverview($pipelineId: ID!) {\n headshotmarketingPipelineOverview(pipelineId: $pipelineId) { ${PIPELINE_OVERVIEW_FIELDS} }\n }\n`;\n\nexport const CREATE_PIPELINE = `\n mutation HmCreatePipeline($input: CreateHeadshotmarketingPipelineInput!) {\n createHeadshotmarketingPipeline(input: $input) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const UPDATE_PIPELINE = `\n mutation HmUpdatePipeline($id: ID!, $input: UpdateHeadshotmarketingPipelineInput!) {\n updateHeadshotmarketingPipeline(id: $id, input: $input) { ${PIPELINE_FIELDS} }\n }\n`;\n\nexport const DELETE_PIPELINE = `\n mutation HmDeletePipeline($id: ID!) {\n deleteHeadshotmarketingPipeline(id: $id)\n }\n`;\n\nexport const CREATE_PIPELINE_STAGE = `\n mutation HmCreatePipelineStage($input: CreateHeadshotmarketingPipelineStageInput!) {\n createHeadshotmarketingPipelineStage(input: $input) { ${PIPELINE_STAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_PIPELINE_STAGE = `\n mutation HmUpdatePipelineStage($id: ID!, $input: UpdateHeadshotmarketingPipelineStageInput!) {\n updateHeadshotmarketingPipelineStage(id: $id, input: $input) { ${PIPELINE_STAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_PIPELINE_STAGE = `\n mutation HmDeletePipelineStage($id: ID!) {\n deleteHeadshotmarketingPipelineStage(id: $id)\n }\n`;\n\n// ===========================================================================\n// Content: content items, assets, AI tools\n// ===========================================================================\n\nexport const GET_CONTENT_ITEM = `\n query HmGetContentItem($id: ID!) {\n headshotmarketingContentItem(id: $id) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const LIST_CONTENT_ITEMS = `\n query HmListContentItems($filter: HeadshotmarketingContentItemFilterInput, $pagination: PaginationInput) {\n headshotmarketingContentItems(filter: $filter, pagination: $pagination) {\n total hasMore items { ${CONTENT_ITEM_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_CONTENT_ITEM = `\n mutation HmCreateContentItem($input: HeadshotmarketingCreateContentItemInput!) {\n headshotmarketingCreateContentItem(input: $input) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const UPDATE_CONTENT_ITEM = `\n mutation HmUpdateContentItem($id: ID!, $input: HeadshotmarketingUpdateContentItemInput!) {\n headshotmarketingUpdateContentItem(id: $id, input: $input) { ${CONTENT_ITEM_FIELDS} }\n }\n`;\n\nexport const DELETE_CONTENT_ITEM = `\n mutation HmDeleteContentItem($id: ID!) {\n headshotmarketingDeleteContentItem(id: $id)\n }\n`;\n\nexport const GET_ASSET = `\n query HmGetAsset($id: ID!) {\n headshotmarketingAsset(id: $id) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const LIST_ASSETS = `\n query HmListAssets($filter: HeadshotmarketingAssetFilterInput, $pagination: PaginationInput) {\n headshotmarketingAssets(filter: $filter, pagination: $pagination) {\n total hasMore items { ${ASSET_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_ASSET = `\n mutation HmCreateAsset($input: HeadshotmarketingCreateAssetInput!) {\n headshotmarketingCreateAsset(input: $input) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const UPDATE_ASSET = `\n mutation HmUpdateAsset($id: ID!, $input: HeadshotmarketingUpdateAssetInput!) {\n headshotmarketingUpdateAsset(id: $id, input: $input) { ${ASSET_FIELDS} }\n }\n`;\n\nexport const DELETE_ASSET = `\n mutation HmDeleteAsset($id: ID!) {\n headshotmarketingDeleteAsset(id: $id)\n }\n`;\n\nexport const GET_AI_TOOL = `\n query HmGetAITool($id: ID!) {\n headshotmarketingAITool(id: $id) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const LIST_AI_TOOLS = `\n query HmListAITools($filter: HeadshotmarketingAIToolFilterInput, $pagination: PaginationInput) {\n headshotmarketingAITools(filter: $filter, pagination: $pagination) {\n total hasMore items { ${AI_TOOL_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AI_TOOL = `\n mutation HmCreateAITool($input: HeadshotmarketingCreateAIToolInput!) {\n headshotmarketingCreateAITool(input: $input) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const UPDATE_AI_TOOL = `\n mutation HmUpdateAITool($id: ID!, $input: HeadshotmarketingUpdateAIToolInput!) {\n headshotmarketingUpdateAITool(id: $id, input: $input) { ${AI_TOOL_FIELDS} }\n }\n`;\n\nexport const DELETE_AI_TOOL = `\n mutation HmDeleteAITool($id: ID!) {\n headshotmarketingDeleteAITool(id: $id)\n }\n`;\n\nexport const EXECUTE_AI_TOOL = `\n mutation HmExecuteAITool($input: HeadshotmarketingExecuteAIToolInput!) {\n headshotmarketingExecuteAITool(input: $input) { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n`;\n\nexport const GET_AI_TOOL_EXECUTION = `\n query HmGetAIToolExecution($id: ID!) {\n headshotmarketingAIToolExecution(id: $id) { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_AI_TOOL_EXECUTIONS = `\n query HmListAIToolExecutions($filter: HeadshotmarketingAIToolExecutionFilterInput, $pagination: PaginationInput) {\n headshotmarketingAIToolExecutions(filter: $filter, pagination: $pagination) {\n total hasMore items { ${AI_TOOL_EXECUTION_FIELDS} }\n }\n }\n`;\n\n// ===========================================================================\n// Social accounts + posts\n// ===========================================================================\n\nexport const GET_SOCIAL_ACCOUNT = `\n query HmGetSocialAccount($id: ID!) {\n headshotmarketingSocialAccount(id: $id) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const LIST_SOCIAL_ACCOUNTS = `\n query HmListSocialAccounts($filter: HeadshotmarketingSocialAccountFilterInput) {\n headshotmarketingSocialAccounts(filter: $filter) {\n total hasMore items { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n }\n`;\n\nexport const SOCIAL_METRICS = `\n query HmSocialMetrics {\n headshotmarketingSocialMetrics {\n totalAccounts totalPosts publishedPosts scheduledPosts totalFollowers totalEngagement\n }\n }\n`;\n\nexport const CREATE_SOCIAL_ACCOUNT = `\n mutation HmCreateSocialAccount($input: CreateHeadshotmarketingSocialAccountInput!) {\n createHeadshotmarketingSocialAccount(input: $input) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOCIAL_ACCOUNT = `\n mutation HmUpdateSocialAccount($id: ID!, $input: UpdateHeadshotmarketingSocialAccountInput!) {\n updateHeadshotmarketingSocialAccount(id: $id, input: $input) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const DELETE_SOCIAL_ACCOUNT = `\n mutation HmDeleteSocialAccount($id: ID!) {\n deleteHeadshotmarketingSocialAccount(id: $id)\n }\n`;\n\nexport const DISCONNECT_SOCIAL_ACCOUNT = `\n mutation HmDisconnectSocialAccount($id: ID!) {\n disconnectHeadshotmarketingSocialAccount(id: $id) { ${SOCIAL_ACCOUNT_FIELDS} }\n }\n`;\n\nexport const GET_SOCIAL_POST = `\n query HmGetSocialPost($id: ID!) {\n headshotmarketingSocialPost(id: $id) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const LIST_SOCIAL_POSTS = `\n query HmListSocialPosts($filter: HeadshotmarketingSocialPostFilterInput) {\n headshotmarketingSocialPosts(filter: $filter) {\n total hasMore items { ${SOCIAL_POST_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SOCIAL_POST = `\n mutation HmCreateSocialPost($input: CreateHeadshotmarketingSocialPostInput!) {\n createHeadshotmarketingSocialPost(input: $input) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOCIAL_POST = `\n mutation HmUpdateSocialPost($id: ID!, $input: UpdateHeadshotmarketingSocialPostInput!) {\n updateHeadshotmarketingSocialPost(id: $id, input: $input) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const DELETE_SOCIAL_POST = `\n mutation HmDeleteSocialPost($id: ID!) {\n deleteHeadshotmarketingSocialPost(id: $id)\n }\n`;\n\nexport const PUBLISH_SOCIAL_POST = `\n mutation HmPublishSocialPost($id: ID!) {\n publishHeadshotmarketingSocialPost(id: $id) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\nexport const SCHEDULE_SOCIAL_POST = `\n mutation HmScheduleSocialPost($id: ID!, $scheduledAt: DateTime!) {\n scheduleHeadshotmarketingSocialPost(id: $id, scheduledAt: $scheduledAt) { ${SOCIAL_POST_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Paid ads: ad campaigns, ad creatives, audiences\n// ===========================================================================\n\nexport const GET_AD_CAMPAIGN = `\n query HmGetAdCampaign($id: ID!) {\n headshotmarketingAdCampaign(id: $id) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_AD_CAMPAIGNS = `\n query HmListAdCampaigns($filter: HeadshotmarketingAdCampaignFilterInput) {\n headshotmarketingAdCampaigns(filter: $filter) {\n total hasMore items { ${AD_CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const AD_METRICS = `\n query HmAdMetrics {\n headshotmarketingAdMetrics {\n totalAdCampaigns activeAdCampaigns totalCreatives totalImpressions totalClicks totalSpent\n }\n }\n`;\n\nexport const CREATE_AD_CAMPAIGN = `\n mutation HmCreateAdCampaign($input: CreateHeadshotmarketingAdCampaignInput!) {\n createHeadshotmarketingAdCampaign(input: $input) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_AD_CAMPAIGN = `\n mutation HmUpdateAdCampaign($id: ID!, $input: UpdateHeadshotmarketingAdCampaignInput!) {\n updateHeadshotmarketingAdCampaign(id: $id, input: $input) { ${AD_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_AD_CAMPAIGN = `\n mutation HmDeleteAdCampaign($id: ID!) {\n deleteHeadshotmarketingAdCampaign(id: $id)\n }\n`;\n\nexport const GET_AD_CREATIVE = `\n query HmGetAdCreative($id: ID!) {\n headshotmarketingAdCreative(id: $id) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const LIST_AD_CREATIVES = `\n query HmListAdCreatives($filter: HeadshotmarketingAdCreativeFilterInput) {\n headshotmarketingAdCreatives(filter: $filter) {\n total hasMore items { ${AD_CREATIVE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AD_CREATIVE = `\n mutation HmCreateAdCreative($input: CreateHeadshotmarketingAdCreativeInput!) {\n createHeadshotmarketingAdCreative(input: $input) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const UPDATE_AD_CREATIVE = `\n mutation HmUpdateAdCreative($id: ID!, $input: UpdateHeadshotmarketingAdCreativeInput!) {\n updateHeadshotmarketingAdCreative(id: $id, input: $input) { ${AD_CREATIVE_FIELDS} }\n }\n`;\n\nexport const DELETE_AD_CREATIVE = `\n mutation HmDeleteAdCreative($id: ID!) {\n deleteHeadshotmarketingAdCreative(id: $id)\n }\n`;\n\nexport const GET_AUDIENCE = `\n query HmGetAudience($id: ID!) {\n headshotmarketingAudience(id: $id) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const LIST_AUDIENCES = `\n query HmListAudiences($filter: HeadshotmarketingAudienceFilterInput) {\n headshotmarketingAudiences(filter: $filter) {\n total hasMore items { ${AUDIENCE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_AUDIENCE = `\n mutation HmCreateAudience($input: CreateHeadshotmarketingAudienceInput!) {\n createHeadshotmarketingAudience(input: $input) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_AUDIENCE = `\n mutation HmUpdateAudience($id: ID!, $input: UpdateHeadshotmarketingAudienceInput!) {\n updateHeadshotmarketingAudience(id: $id, input: $input) { ${AUDIENCE_FIELDS} }\n }\n`;\n\nexport const DELETE_AUDIENCE = `\n mutation HmDeleteAudience($id: ID!) {\n deleteHeadshotmarketingAudience(id: $id)\n }\n`;\n\n// ===========================================================================\n// Influencers, influencer campaigns, relationships\n// ===========================================================================\n\nexport const GET_INFLUENCER = `\n query HmGetInfluencer($id: ID!) {\n headshotmarketingInfluencer(id: $id) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCERS = `\n query HmListInfluencers($filter: HeadshotmarketingInfluencerFilterInput) {\n headshotmarketingInfluencers(filter: $filter) {\n total hasMore items { ${INFLUENCER_FIELDS} }\n }\n }\n`;\n\nexport const DISCOVER_INFLUENCERS = `\n query HmDiscoverInfluencers($filter: HeadshotmarketingInfluencerFilterInput) {\n headshotmarketingDiscoverInfluencers(filter: $filter) {\n total hasMore items { ${INFLUENCER_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER = `\n mutation HmCreateInfluencer($input: CreateHeadshotmarketingInfluencerInput!) {\n createHeadshotmarketingInfluencer(input: $input) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER = `\n mutation HmUpdateInfluencer($id: ID!, $input: UpdateHeadshotmarketingInfluencerInput!) {\n updateHeadshotmarketingInfluencer(id: $id, input: $input) { ${INFLUENCER_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER = `\n mutation HmDeleteInfluencer($id: ID!) {\n deleteHeadshotmarketingInfluencer(id: $id)\n }\n`;\n\nexport const GET_INFLUENCER_CAMPAIGN = `\n query HmGetInfluencerCampaign($id: ID!) {\n headshotmarketingInfluencerCampaign(id: $id) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCER_CAMPAIGNS = `\n query HmListInfluencerCampaigns($filter: HeadshotmarketingInfluencerCampaignFilterInput) {\n headshotmarketingInfluencerCampaigns(filter: $filter) {\n total hasMore items { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER_CAMPAIGN = `\n mutation HmCreateInfluencerCampaign($input: CreateHeadshotmarketingInfluencerCampaignInput!) {\n createHeadshotmarketingInfluencerCampaign(input: $input) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER_CAMPAIGN = `\n mutation HmUpdateInfluencerCampaign($id: ID!, $input: UpdateHeadshotmarketingInfluencerCampaignInput!) {\n updateHeadshotmarketingInfluencerCampaign(id: $id, input: $input) { ${INFLUENCER_CAMPAIGN_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER_CAMPAIGN = `\n mutation HmDeleteInfluencerCampaign($id: ID!) {\n deleteHeadshotmarketingInfluencerCampaign(id: $id)\n }\n`;\n\nexport const GET_INFLUENCER_RELATIONSHIP = `\n query HmGetInfluencerRelationship($id: ID!) {\n headshotmarketingInfluencerRelationship(id: $id) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const LIST_INFLUENCER_RELATIONSHIPS = `\n query HmListInfluencerRelationships($filter: HeadshotmarketingInfluencerRelationshipFilterInput) {\n headshotmarketingInfluencerRelationships(filter: $filter) {\n total hasMore items { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_INFLUENCER_RELATIONSHIP = `\n mutation HmCreateInfluencerRelationship($input: CreateHeadshotmarketingInfluencerRelationshipInput!) {\n createHeadshotmarketingInfluencerRelationship(input: $input) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const UPDATE_INFLUENCER_RELATIONSHIP = `\n mutation HmUpdateInfluencerRelationship($id: ID!, $input: UpdateHeadshotmarketingInfluencerRelationshipInput!) {\n updateHeadshotmarketingInfluencerRelationship(id: $id, input: $input) { ${INFLUENCER_RELATIONSHIP_FIELDS} }\n }\n`;\n\nexport const DELETE_INFLUENCER_RELATIONSHIP = `\n mutation HmDeleteInfluencerRelationship($id: ID!) {\n deleteHeadshotmarketingInfluencerRelationship(id: $id)\n }\n`;\n\nexport const UPDATE_INFLUENCER_RELATIONSHIP_STATUS = `\n mutation HmUpdateInfluencerRelationshipStatus($id: ID!, $status: HeadshotmarketingInfluencerRelationshipStatus!) {\n updateHeadshotmarketingInfluencerRelationshipStatus(id: $id, status: $status) {\n ${INFLUENCER_RELATIONSHIP_FIELDS}\n }\n }\n`;\n\n// ===========================================================================\n// Events, registrations, speakers\n// ===========================================================================\n\nexport const GET_EVENT = `\n query HmGetEvent($id: ID!) {\n headshotmarketingEvent(id: $id) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const LIST_EVENTS = `\n query HmListEvents($filter: HeadshotmarketingEventFilterInput, $pagination: PaginationInput) {\n headshotmarketingEvents(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT = `\n mutation HmCreateEvent($input: HeadshotmarketingCreateEventInput!) {\n headshotmarketingCreateEvent(input: $input) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT = `\n mutation HmUpdateEvent($id: ID!, $input: HeadshotmarketingUpdateEventInput!) {\n headshotmarketingUpdateEvent(id: $id, input: $input) { ${EVENT_FIELDS} }\n }\n`;\n\nexport const DELETE_EVENT = `\n mutation HmDeleteEvent($id: ID!) {\n headshotmarketingDeleteEvent(id: $id)\n }\n`;\n\nexport const GET_EVENT_REGISTRATION = `\n query HmGetEventRegistration($id: ID!) {\n headshotmarketingEventRegistration(id: $id) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const LIST_EVENT_REGISTRATIONS = `\n query HmListEventRegistrations($filter: HeadshotmarketingEventRegistrationFilterInput, $pagination: PaginationInput) {\n headshotmarketingEventRegistrations(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_REGISTRATION_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT_REGISTRATION = `\n mutation HmCreateEventRegistration($input: HeadshotmarketingCreateEventRegistrationInput!) {\n headshotmarketingCreateEventRegistration(input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT_REGISTRATION = `\n mutation HmUpdateEventRegistration($id: ID!, $input: HeadshotmarketingUpdateEventRegistrationInput!) {\n headshotmarketingUpdateEventRegistration(id: $id, input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const REGISTER_FOR_EVENT = `\n mutation HmRegisterForEvent($input: HeadshotmarketingCreateEventRegistrationInput!) {\n headshotmarketingRegisterForEvent(input: $input) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const CHECK_IN_ATTENDEE = `\n mutation HmCheckInAttendee($registrationId: ID!) {\n headshotmarketingCheckInAttendee(registrationId: $registrationId) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const CANCEL_REGISTRATION = `\n mutation HmCancelRegistration($registrationId: ID!) {\n headshotmarketingCancelRegistration(registrationId: $registrationId) { ${EVENT_REGISTRATION_FIELDS} }\n }\n`;\n\nexport const GET_EVENT_SPEAKER = `\n query HmGetEventSpeaker($id: ID!) {\n headshotmarketingEventSpeaker(id: $id) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const LIST_EVENT_SPEAKERS = `\n query HmListEventSpeakers($filter: HeadshotmarketingEventSpeakerFilterInput, $pagination: PaginationInput) {\n headshotmarketingEventSpeakers(filter: $filter, pagination: $pagination) {\n total hasMore items { ${EVENT_SPEAKER_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_EVENT_SPEAKER = `\n mutation HmCreateEventSpeaker($input: HeadshotmarketingCreateEventSpeakerInput!) {\n headshotmarketingCreateEventSpeaker(input: $input) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const UPDATE_EVENT_SPEAKER = `\n mutation HmUpdateEventSpeaker($id: ID!, $input: HeadshotmarketingUpdateEventSpeakerInput!) {\n headshotmarketingUpdateEventSpeaker(id: $id, input: $input) { ${EVENT_SPEAKER_FIELDS} }\n }\n`;\n\nexport const DELETE_EVENT_SPEAKER = `\n mutation HmDeleteEventSpeaker($id: ID!) {\n headshotmarketingDeleteEventSpeaker(id: $id)\n }\n`;\n\n// ===========================================================================\n// SEO keywords + audits\n// ===========================================================================\n\nexport const GET_SEO_KEYWORD = `\n query HmGetSEOKeyword($id: ID!) {\n headshotmarketingSEOKeyword(id: $id) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const LIST_SEO_KEYWORDS = `\n query HmListSEOKeywords($filter: HeadshotmarketingSEOKeywordFilterInput, $pagination: PaginationInput) {\n headshotmarketingSEOKeywords(filter: $filter, pagination: $pagination) {\n total hasMore items { ${SEO_KEYWORD_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SEO_KEYWORD = `\n mutation HmCreateSEOKeyword($input: HeadshotmarketingCreateSEOKeywordInput!) {\n headshotmarketingCreateSEOKeyword(input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const UPDATE_SEO_KEYWORD = `\n mutation HmUpdateSEOKeyword($id: ID!, $input: HeadshotmarketingUpdateSEOKeywordInput!) {\n headshotmarketingUpdateSEOKeyword(id: $id, input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const DELETE_SEO_KEYWORD = `\n mutation HmDeleteSEOKeyword($id: ID!) {\n headshotmarketingDeleteSEOKeyword(id: $id)\n }\n`;\n\nexport const TRACK_KEYWORD = `\n mutation HmTrackKeyword($input: HeadshotmarketingCreateSEOKeywordInput!) {\n headshotmarketingTrackKeyword(input: $input) { ${SEO_KEYWORD_FIELDS} }\n }\n`;\n\nexport const GET_SEO_AUDIT = `\n query HmGetSEOAudit($id: ID!) {\n headshotmarketingSEOAudit(id: $id) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const LIST_SEO_AUDITS = `\n query HmListSEOAudits($filter: HeadshotmarketingSEOAuditFilterInput, $pagination: PaginationInput) {\n headshotmarketingSEOAudits(filter: $filter, pagination: $pagination) {\n total hasMore items { ${SEO_AUDIT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_SEO_AUDIT = `\n mutation HmCreateSEOAudit($input: HeadshotmarketingCreateSEOAuditInput!) {\n headshotmarketingCreateSEOAudit(input: $input) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const UPDATE_SEO_AUDIT = `\n mutation HmUpdateSEOAudit($id: ID!, $input: HeadshotmarketingUpdateSEOAuditInput!) {\n headshotmarketingUpdateSEOAudit(id: $id, input: $input) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const DELETE_SEO_AUDIT = `\n mutation HmDeleteSEOAudit($id: ID!) {\n headshotmarketingDeleteSEOAudit(id: $id)\n }\n`;\n\nexport const RUN_SEO_AUDIT = `\n mutation HmRunSEOAudit($url: String!) {\n headshotmarketingRunSEOAudit(url: $url) { ${SEO_AUDIT_FIELDS} }\n }\n`;\n\nexport const SEO_OVERVIEW = `\n query HmSEOOverview {\n headshotmarketingSEOOverview {\n totalKeywords totalAudits avgSEOScore avgPerformanceScore avgRank\n keywordsImproved keywordsDeclined keywordsUnchanged topKeywords\n }\n }\n`;\n\n// ===========================================================================\n// Landing pages + sections (builder)\n// ===========================================================================\n\nexport const GET_LANDING_PAGE = `\n query HmGetLandingPage($id: ID!) {\n headshotmarketingLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const GET_LANDING_PAGE_BY_SLUG = `\n query HmGetLandingPageBySlug($slug: String!) {\n headshotmarketingLandingPageBySlug(slug: $slug) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const LIST_LANDING_PAGES = `\n query HmListLandingPages($filter: HeadshotmarketingLandingPageFilterInput, $pagination: PaginationInput) {\n headshotmarketingLandingPages(filter: $filter, pagination: $pagination) {\n total hasMore items { ${LANDING_PAGE_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_LANDING_PAGE = `\n mutation HmCreateLandingPage($input: HeadshotmarketingCreateLandingPageInput!) {\n headshotmarketingCreateLandingPage(input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_LANDING_PAGE = `\n mutation HmUpdateLandingPage($id: ID!, $input: HeadshotmarketingUpdateLandingPageInput!) {\n headshotmarketingUpdateLandingPage(id: $id, input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_LANDING_PAGE = `\n mutation HmDeleteLandingPage($id: ID!) {\n headshotmarketingDeleteLandingPage(id: $id)\n }\n`;\n\nexport const PUBLISH_LANDING_PAGE = `\n mutation HmPublishLandingPage($id: ID!) {\n headshotmarketingPublishLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const UNPUBLISH_LANDING_PAGE = `\n mutation HmUnpublishLandingPage($id: ID!) {\n headshotmarketingUnpublishLandingPage(id: $id) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\nexport const ADD_LANDING_PAGE_SECTION = `\n mutation HmAddLandingPageSection($input: HeadshotmarketingAddLandingPageSectionInput!) {\n headshotmarketingAddLandingPageSection(input: $input) { ${LANDING_PAGE_SECTION_FIELDS} }\n }\n`;\n\nexport const UPDATE_LANDING_PAGE_SECTION = `\n mutation HmUpdateLandingPageSection($id: ID!, $input: HeadshotmarketingUpdateLandingPageSectionInput!) {\n headshotmarketingUpdateLandingPageSection(id: $id, input: $input) { ${LANDING_PAGE_SECTION_FIELDS} }\n }\n`;\n\nexport const REMOVE_LANDING_PAGE_SECTION = `\n mutation HmRemoveLandingPageSection($id: ID!) {\n headshotmarketingRemoveLandingPageSection(id: $id)\n }\n`;\n\nexport const REORDER_LANDING_PAGE_SECTIONS = `\n mutation HmReorderLandingPageSections($input: HeadshotmarketingReorderSectionsInput!) {\n headshotmarketingReorderLandingPageSections(input: $input) { ${LANDING_PAGE_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Workflows + executions\n// ===========================================================================\n\nexport const GET_WORKFLOW = `\n query HmGetWorkflow($id: ID!) {\n headshotmarketingWorkflow(id: $id) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const LIST_WORKFLOWS = `\n query HmListWorkflows($filter: HeadshotmarketingWorkflowFilterInput) {\n headshotmarketingWorkflows(filter: $filter) {\n total hasMore items { ${WORKFLOW_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_WORKFLOW = `\n mutation HmCreateWorkflow($input: CreateHeadshotmarketingWorkflowInput!) {\n createHeadshotmarketingWorkflow(input: $input) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const UPDATE_WORKFLOW = `\n mutation HmUpdateWorkflow($id: ID!, $input: UpdateHeadshotmarketingWorkflowInput!) {\n updateHeadshotmarketingWorkflow(id: $id, input: $input) { ${WORKFLOW_FIELDS} }\n }\n`;\n\nexport const DELETE_WORKFLOW = `\n mutation HmDeleteWorkflow($id: ID!) {\n deleteHeadshotmarketingWorkflow(id: $id)\n }\n`;\n\nexport const TRIGGER_WORKFLOW = `\n mutation HmTriggerWorkflow($input: TriggerHeadshotmarketingWorkflowInput!) {\n triggerHeadshotmarketingWorkflow(input: $input) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\nexport const GET_WORKFLOW_EXECUTION = `\n query HmGetWorkflowExecution($id: ID!) {\n headshotmarketingWorkflowExecution(id: $id) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_WORKFLOW_EXECUTIONS = `\n query HmListWorkflowExecutions($filter: HeadshotmarketingWorkflowExecutionFilterInput) {\n headshotmarketingWorkflowExecutions(filter: $filter) {\n total hasMore items { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n }\n`;\n\nexport const CANCEL_WORKFLOW_EXECUTION = `\n mutation HmCancelWorkflowExecution($id: ID!) {\n cancelHeadshotmarketingWorkflowExecution(id: $id) { ${WORKFLOW_EXECUTION_FIELDS} }\n }\n`;\n\n// ===========================================================================\n// Analytics: dashboard, campaign analytics, channel performance, funnel,\n// time series, content performance, reports, dashboard configs\n// ===========================================================================\n\nexport const DASHBOARD_METRICS = `\n query HmDashboardMetrics($dateRange: HeadshotmarketingDateRangeInput) {\n headshotmarketingDashboardMetrics(dateRange: $dateRange) {\n totalCampaigns activeCampaigns totalImpressions totalClicks totalConversions\n totalLeads totalRevenue totalCost overallCTR overallCPC overallROAS\n topCampaignId topChannel periodStart periodEnd\n }\n }\n`;\n\nexport const CONTENT_PERFORMANCE = `\n query HmContentPerformance {\n headshotmarketingContentPerformance {\n totalItems publishedItems draftItems totalAssets totalAIExecutions\n avgContentScore topPerformingTypes { type count }\n }\n }\n`;\n\nexport const FUNNEL_DATA = `\n query HmFunnelData {\n headshotmarketingFunnelData {\n name count value conversionRate dropOffRate\n }\n }\n`;\n\nexport const TIME_SERIES_DATA = `\n query HmTimeSeriesData($dateRange: HeadshotmarketingDateRangeInput!, $metric: HeadshotmarketingMetricType!) {\n headshotmarketingTimeSeriesData(dateRange: $dateRange, metric: $metric) {\n metric total average min max dataPoints\n }\n }\n`;\n\nexport const CAMPAIGN_ANALYTICS = `\n query HmCampaignAnalytics($campaignId: ID!, $dateRange: HeadshotmarketingDateRangeInput) {\n headshotmarketingCampaignAnalytics(campaignId: $campaignId, dateRange: $dateRange) {\n total hasMore items { ${CAMPAIGN_ANALYTICS_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_CAMPAIGN_ANALYTICS = `\n mutation HmRecordCampaignAnalytics($input: HeadshotmarketingRecordCampaignAnalyticsInput!) {\n headshotmarketingRecordCampaignAnalytics(input: $input) { ${CAMPAIGN_ANALYTICS_FIELDS} }\n }\n`;\n\nexport const CHANNEL_PERFORMANCE = `\n query HmChannelPerformance($dateRange: HeadshotmarketingDateRangeInput!) {\n headshotmarketingChannelPerformance(dateRange: $dateRange) {\n total hasMore items { ${CHANNEL_PERFORMANCE_FIELDS} }\n }\n }\n`;\n\nexport const RECORD_CHANNEL_PERFORMANCE = `\n mutation HmRecordChannelPerformance($input: HeadshotmarketingRecordChannelPerformanceInput!) {\n headshotmarketingRecordChannelPerformance(input: $input) { ${CHANNEL_PERFORMANCE_FIELDS} }\n }\n`;\n\nexport const GET_DASHBOARD_CONFIG = `\n query HmGetDashboardConfig($id: ID!) {\n headshotmarketingDashboardConfig(id: $id) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const LIST_DASHBOARD_CONFIGS = `\n query HmListDashboardConfigs($filter: HeadshotmarketingDashboardConfigFilterInput, $pagination: PaginationInput) {\n headshotmarketingDashboardConfigs(filter: $filter, pagination: $pagination) {\n total hasMore items { ${DASHBOARD_CONFIG_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_DASHBOARD_CONFIG = `\n mutation HmCreateDashboardConfig($input: HeadshotmarketingCreateDashboardConfigInput!) {\n headshotmarketingCreateDashboardConfig(input: $input) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const UPDATE_DASHBOARD_CONFIG = `\n mutation HmUpdateDashboardConfig($id: ID!, $input: HeadshotmarketingUpdateDashboardConfigInput!) {\n headshotmarketingUpdateDashboardConfig(id: $id, input: $input) { ${DASHBOARD_CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_DASHBOARD_CONFIG = `\n mutation HmDeleteDashboardConfig($id: ID!) {\n headshotmarketingDeleteDashboardConfig(id: $id)\n }\n`;\n\nexport const GET_REPORT = `\n query HmGetReport($id: ID!) {\n headshotmarketingReport(id: $id) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const LIST_REPORTS = `\n query HmListReports($filter: HeadshotmarketingReportFilterInput, $pagination: PaginationInput) {\n headshotmarketingReports(filter: $filter, pagination: $pagination) {\n total hasMore items { ${REPORT_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_REPORT = `\n mutation HmCreateReport($input: HeadshotmarketingCreateReportInput!) {\n headshotmarketingCreateReport(input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const UPDATE_REPORT = `\n mutation HmUpdateReport($id: ID!, $input: HeadshotmarketingUpdateReportInput!) {\n headshotmarketingUpdateReport(id: $id, input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const DELETE_REPORT = `\n mutation HmDeleteReport($id: ID!) {\n headshotmarketingDeleteReport(id: $id)\n }\n`;\n","/**\n * Shared zod schemas for the Headshotmarketing tool surface.\n *\n * Headshotmarketing is the end-to-end marketing operations platform\n * (campaigns, CRM contacts/leads/deals, content + assets + AI tools, social,\n * paid ads + audiences, influencers, events, SEO, landing-page builder,\n * workflows, and analytics). Backend subgraph:\n * ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`).\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. JSON scalar inputs (metadata,\n * goals, configuration, targetingCriteria, etc.) are modelled as permissive\n * object records — the backend accepts arbitrary JSON, but a record shape gives\n * the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\n// ── AI tools ────────────────────────────────────────────────────────────────\n\nexport const AIToolCategoryEnum = z\n .enum([\n 'CONTENT_GENERATION',\n 'COPYWRITING',\n 'IMAGE_GENERATION',\n 'OTHER',\n 'SEO_OPTIMIZATION',\n 'SUMMARIZATION',\n 'TRANSLATION',\n 'VIDEO_GENERATION',\n ])\n .describe('Category of an AI marketing tool');\n\nexport const AIToolExecutionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Status of an AI tool execution');\n\n// ── Assets / content ─────────────────────────────────────────────────────────\n\nexport const AssetTypeEnum = z\n .enum(['AUDIO', 'DOCUMENT', 'FONT', 'ICON', 'IMAGE', 'OTHER', 'TEMPLATE', 'VIDEO'])\n .describe('Type of a digital asset');\n\nexport const ContentItemStatusEnum = z\n .enum(['APPROVED', 'ARCHIVED', 'DRAFT', 'IN_REVIEW', 'PUBLISHED'])\n .describe('Lifecycle status of a content item');\n\nexport const ContentItemTypeEnum = z\n .enum([\n 'AD_COPY',\n 'BLOG_POST',\n 'CASE_STUDY',\n 'EMAIL',\n 'INFOGRAPHIC',\n 'LANDING_PAGE',\n 'OTHER',\n 'SOCIAL_POST',\n 'VIDEO_SCRIPT',\n 'WHITEPAPER',\n ])\n .describe('Type of a content item');\n\n// ── Campaigns ─────────────────────────────────────────────────────────────────\n\nexport const CampaignStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'COMPLETED', 'DRAFT', 'PAUSED', 'SCHEDULED'])\n .describe('Lifecycle status of a marketing campaign');\n\nexport const CampaignTypeEnum = z\n .enum(['AD', 'CONTENT', 'EMAIL', 'EVENT', 'INFLUENCER', 'MULTI_CHANNEL', 'SOCIAL'])\n .describe('Type / channel of a marketing campaign');\n\n// ── Paid ads ──────────────────────────────────────────────────────────────────\n\nexport const AdCampaignStatusEnum = z\n .enum(['ACTIVE', 'COMPLETED', 'DRAFT', 'PAUSED', 'PENDING_REVIEW', 'REJECTED'])\n .describe('Status of a paid ad campaign');\n\nexport const AdCreativeStatusEnum = z\n .enum(['ACTIVE', 'APPROVED', 'DRAFT', 'PAUSED', 'PENDING_REVIEW', 'REJECTED'])\n .describe('Status of an ad creative');\n\nexport const AdCreativeTypeEnum = z\n .enum(['CAROUSEL', 'IMAGE', 'RESPONSIVE', 'TEXT', 'VIDEO'])\n .describe('Type of an ad creative asset');\n\nexport const AdPlatformEnum = z\n .enum([\n 'FACEBOOK_ADS',\n 'GOOGLE_ADS',\n 'INSTAGRAM_ADS',\n 'LINKEDIN_ADS',\n 'TIKTOK_ADS',\n 'TWITTER_ADS',\n ])\n .describe('External ad platform');\n\n// ── CRM ───────────────────────────────────────────────────────────────────────\n\nexport const ContactStatusEnum = z\n .enum(['ACTIVE', 'BOUNCED', 'INACTIVE', 'UNSUBSCRIBED'])\n .describe('Status of a CRM contact');\n\nexport const LeadSourceEnum = z\n .enum([\n 'AD_CAMPAIGN',\n 'COLD_OUTREACH',\n 'EMAIL',\n 'EVENT',\n 'OTHER',\n 'REFERRAL',\n 'SOCIAL_MEDIA',\n 'WEBSITE',\n ])\n .describe('Acquisition source of a lead');\n\nexport const LeadStatusEnum = z\n .enum(['CONTACTED', 'CONVERTED', 'LOST', 'NEW', 'QUALIFIED', 'UNQUALIFIED'])\n .describe('Status of a lead');\n\nexport const DealStatusEnum = z\n .enum(['LOST', 'OPEN', 'STALE', 'WON'])\n .describe('Status of a sales deal');\n\n// ── Influencers ───────────────────────────────────────────────────────────────\n\nexport const InfluencerTierEnum = z\n .enum(['CELEBRITY', 'MACRO', 'MEGA', 'MICRO', 'MID', 'NANO'])\n .describe('Influencer tier based on follower count');\n\nexport const InfluencerCampaignStatusEnum = z\n .enum([\n 'ACCEPTED',\n 'APPROVED',\n 'CANCELLED',\n 'COMPLETED',\n 'CONTENT_SUBMITTED',\n 'IN_PROGRESS',\n 'NEGOTIATING',\n 'PROPOSED',\n 'PUBLISHED',\n ])\n .describe('Status of an influencer campaign');\n\nexport const InfluencerRelationshipStatusEnum = z\n .enum(['ACTIVE', 'ENDED', 'NEGOTIATING', 'OUTREACH', 'PAUSED', 'PROSPECT'])\n .describe('Status of an influencer relationship');\n\n// ── Social ────────────────────────────────────────────────────────────────────\n\nexport const SocialPlatformEnum = z\n .enum(['FACEBOOK', 'INSTAGRAM', 'LINKEDIN', 'PINTEREST', 'TIKTOK', 'TWITTER', 'YOUTUBE'])\n .describe('Social media platform');\n\nexport const SocialAccountStatusEnum = z\n .enum(['CONNECTED', 'DISCONNECTED', 'ERROR', 'EXPIRED'])\n .describe('Connection status of a social account');\n\nexport const SocialPostStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'FAILED', 'PUBLISHED', 'PUBLISHING', 'SCHEDULED'])\n .describe('Status of a social media post');\n\n// ── Events ────────────────────────────────────────────────────────────────────\n\nexport const EventTypeEnum = z\n .enum([\n 'CONFERENCE',\n 'MEETUP',\n 'NETWORKING',\n 'OTHER',\n 'PRODUCT_LAUNCH',\n 'TRADESHOW',\n 'WEBINAR',\n 'WORKSHOP',\n ])\n .describe('Type of a marketing event');\n\nexport const EventStatusEnum = z\n .enum([\n 'CANCELLED',\n 'COMPLETED',\n 'DRAFT',\n 'IN_PROGRESS',\n 'PUBLISHED',\n 'REGISTRATION_CLOSED',\n 'REGISTRATION_OPEN',\n ])\n .describe('Status of a marketing event');\n\nexport const EventRegistrationStatusEnum = z\n .enum(['CANCELLED', 'CHECKED_IN', 'CONFIRMED', 'NO_SHOW', 'REGISTERED', 'WAITLISTED'])\n .describe('Status of an event registration');\n\n// ── SEO ───────────────────────────────────────────────────────────────────────\n\nexport const SEOAuditStatusEnum = z\n .enum(['COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Status of an SEO audit');\n\nexport const SEOKeywordStatusEnum = z\n .enum(['ARCHIVED', 'PAUSED', 'TRACKING'])\n .describe('Tracking status of an SEO keyword');\n\n// ── Landing-page builder ──────────────────────────────────────────────────────\n\nexport const LandingPageStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Status of a landing page');\n\nexport const LandingPageSectionTypeEnum = z\n .enum([\n 'CTA',\n 'CUSTOM',\n 'FAQ',\n 'FEATURES',\n 'FOOTER',\n 'FORM',\n 'GALLERY',\n 'HERO',\n 'PRICING',\n 'STATS',\n 'TEAM',\n 'TESTIMONIALS',\n 'TEXT',\n 'VIDEO',\n ])\n .describe('Type of a landing-page section');\n\n// ── Workflows ─────────────────────────────────────────────────────────────────\n\nexport const WorkflowStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Status of a workflow');\n\nexport const WorkflowTriggerTypeEnum = z\n .enum(['CONDITION', 'EVENT', 'MANUAL', 'SCHEDULE', 'WEBHOOK'])\n .describe('Trigger type of a workflow');\n\nexport const WorkflowExecutionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'FAILED', 'PENDING', 'RUNNING', 'TIMED_OUT'])\n .describe('Status of a workflow execution');\n\n// ── Analytics ─────────────────────────────────────────────────────────────────\n\nexport const DateRangePresetEnum = z\n .enum([\n 'CUSTOM',\n 'LAST_7_DAYS',\n 'LAST_30_DAYS',\n 'LAST_90_DAYS',\n 'LAST_MONTH',\n 'THIS_MONTH',\n 'THIS_QUARTER',\n 'THIS_YEAR',\n 'TODAY',\n 'YESTERDAY',\n ])\n .describe('Preset date range for analytics');\n\nexport const MetricTypeEnum = z\n .enum([\n 'BOUNCE_RATE',\n 'CLICKS',\n 'CONVERSIONS',\n 'COST',\n 'CPC',\n 'CPM',\n 'CTR',\n 'ENGAGEMENT_RATE',\n 'IMPRESSIONS',\n 'LEADS',\n 'PAGE_VIEWS',\n 'REVENUE',\n 'ROAS',\n 'SESSIONS',\n ])\n .describe('A time-series analytics metric');\n\nexport const ReportStatusEnum = z\n .enum(['ARCHIVED', 'COMPLETED', 'DRAFT', 'FAILED', 'GENERATING'])\n .describe('Status of an analytics report');\n\nexport const ReportTypeEnum = z\n .enum([\n 'AUDIENCE_INSIGHTS',\n 'CAMPAIGN_PERFORMANCE',\n 'CHANNEL_ANALYSIS',\n 'CONTENT_PERFORMANCE',\n 'CUSTOM',\n 'FUNNEL_ANALYSIS',\n 'ROI_SUMMARY',\n ])\n .describe('Type of an analytics report');\n\n// ── Scalars ───────────────────────────────────────────────────────────────────\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** ISO-8601 date-time string for `DateTime` scalar inputs. */\nexport const IsoDateTime = z.string().describe('ISO-8601 date-time string');\n\n/** A `{ start, end }` date-range input (HeadshotmarketingDateRangeInput). */\nexport const DateRange = z\n .object({ start: IsoDateTime, end: IsoDateTime })\n .describe('Date range { start, end } as ISO-8601 strings');\n","/**\n * Headshotmarketing campaign tools — marketing campaigns + reusable templates.\n *\n * Surface (11): campaigns_{get,list,create,update,delete,duplicate},\n * campaign_templates_{get,list,create,update,delete}.\n *\n * Campaign writes map to the `<verb>HeadshotmarketingCampaign[Template]`\n * mutations; reads map to the `headshotmarketingCampaign[Template](s)` queries.\n * Both inconsistent prefixings are called by their REAL names in operations.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CampaignStatusEnum, CampaignTypeEnum, JsonObject, IsoDateTime } from './shared.js';\n\nexport function registerCampaignTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_get')),\n {\n title: 'Get Campaign',\n description: 'Fetch a single marketing campaign by ID.',\n inputSchema: { id: z.string().describe('Campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaign: Record<string, unknown> | null;\n }>(ops.GET_CAMPAIGN, { id });\n if (!data.headshotmarketingCampaign) return errorResult(`Campaign ${id} not found`);\n return jsonResult(data.headshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_get failed', { error: String(error) });\n return errorResult(\n `Failed to get campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_list')),\n {\n title: 'List Campaigns',\n description:\n 'List marketing campaigns in the bound workspace with optional status/type/text filters and pagination.',\n inputSchema: {\n status: CampaignStatusEnum.optional().describe('Filter by status'),\n type: CampaignTypeEnum.optional().describe('Filter by campaign type/channel'),\n search: z.string().optional().describe('Free-text search across name/description'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ status, type, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (status !== undefined) filter.status = status;\n if (type !== undefined) filter.type = type;\n if (search !== undefined) filter.search = search;\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaigns: Record<string, unknown>;\n }>(ops.LIST_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingCampaigns);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_list failed', { error: String(error) });\n return errorResult(\n `Failed to list campaigns: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_create')),\n {\n title: 'Create Campaign',\n description: 'Create a new marketing campaign.',\n inputSchema: {\n name: z.string().min(1).describe('Campaign name'),\n type: CampaignTypeEnum.describe('Campaign type/channel'),\n description: z.string().optional().describe('Campaign description'),\n status: CampaignStatusEnum.optional().describe('Initial status (default DRAFT)'),\n budget: z.number().optional().describe('Budget in cents'),\n startDate: IsoDateTime.optional().describe('Start date (ISO-8601)'),\n endDate: IsoDateTime.optional().describe('End date (ISO-8601)'),\n goals: JsonObject.optional().describe('Goals/KPIs JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n async ({\n name,\n type,\n description,\n status,\n budget,\n startDate,\n endDate,\n goals,\n tags,\n metadata,\n }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (budget !== undefined) input.budget = budget;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (goals !== undefined) input.goals = goals;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.CREATE_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_create failed', { error: String(error) });\n return errorResult(\n `Failed to create campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_update')),\n {\n title: 'Update Campaign',\n description: 'Update a campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Campaign ID'),\n name: z.string().optional().describe('Updated name'),\n type: CampaignTypeEnum.optional().describe('Updated type'),\n description: z.string().optional().describe('Updated description'),\n status: CampaignStatusEnum.optional().describe('Updated status'),\n budget: z.number().optional().describe('Updated budget in cents'),\n spent: z.number().optional().describe('Updated spent amount in cents'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n goals: JsonObject.optional().describe('Updated goals JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n async ({\n id,\n name,\n type,\n description,\n status,\n budget,\n spent,\n startDate,\n endDate,\n goals,\n tags,\n metadata,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (budget !== undefined) input.budget = budget;\n if (spent !== undefined) input.spent = spent;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (goals !== undefined) input.goals = goals;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.UPDATE_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_update failed', { error: String(error) });\n return errorResult(\n `Failed to update campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_delete')),\n {\n title: 'Delete Campaign',\n description: 'Soft-delete a campaign by ID.',\n inputSchema: { id: z.string().describe('Campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingCampaign: boolean }>(\n ops.DELETE_CAMPAIGN,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingCampaign, id });\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_duplicate')),\n {\n title: 'Duplicate Campaign',\n description: 'Duplicate an existing campaign, returning the new copy.',\n inputSchema: { id: z.string().describe('Source campaign ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n duplicateHeadshotmarketingCampaign: Record<string, unknown>;\n }>(ops.DUPLICATE_CAMPAIGN, { id });\n return jsonResult(data.duplicateHeadshotmarketingCampaign);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_duplicate failed', { error: String(error) });\n return errorResult(\n `Failed to duplicate campaign: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Campaign templates ──────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_get_template')),\n {\n title: 'Get Campaign Template',\n description: 'Fetch a single campaign template by ID.',\n inputSchema: { id: z.string().describe('Campaign template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignTemplate: Record<string, unknown> | null;\n }>(ops.GET_CAMPAIGN_TEMPLATE, { id });\n if (!data.headshotmarketingCampaignTemplate) {\n return errorResult(`Campaign template ${id} not found`);\n }\n return jsonResult(data.headshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_get_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to get campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_list_templates')),\n {\n title: 'List Campaign Templates',\n description: 'List reusable campaign templates with optional type/active/text filters.',\n inputSchema: {\n type: CampaignTypeEnum.optional().describe('Filter by default campaign type'),\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ type, isActive, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (type !== undefined) filter.type = type;\n if (isActive !== undefined) filter.isActive = isActive;\n if (search !== undefined) filter.search = search;\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignTemplates: Record<string, unknown>;\n }>(ops.LIST_CAMPAIGN_TEMPLATES, { filter });\n return jsonResult(data.headshotmarketingCampaignTemplates);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_list_templates failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list campaign templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_create_template')),\n {\n title: 'Create Campaign Template',\n description: 'Create a reusable campaign template.',\n inputSchema: {\n name: z.string().min(1).describe('Template name'),\n type: CampaignTypeEnum.describe('Default campaign type'),\n description: z.string().optional().describe('Template description'),\n configuration: JsonObject.optional().describe('Template configuration/defaults JSON'),\n isActive: z.boolean().optional().describe('Whether the template is active'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n async ({ name, type, description, configuration, isActive, tags, metadata }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (description !== undefined) input.description = description;\n if (configuration !== undefined) input.configuration = configuration;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingCampaignTemplate: Record<string, unknown>;\n }>(ops.CREATE_CAMPAIGN_TEMPLATE, { input });\n return jsonResult(data.createHeadshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_create_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_update_template')),\n {\n title: 'Update Campaign Template',\n description: 'Update a campaign template. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Campaign template ID'),\n name: z.string().optional().describe('Updated name'),\n type: CampaignTypeEnum.optional().describe('Updated default type'),\n description: z.string().optional().describe('Updated description'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n async ({ id, name, type, description, configuration, isActive, tags, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (configuration !== undefined) input.configuration = configuration;\n if (isActive !== undefined) input.isActive = isActive;\n if (tags !== undefined) input.tags = tags;\n if (metadata !== undefined) input.metadata = metadata;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingCampaignTemplate: Record<string, unknown>;\n }>(ops.UPDATE_CAMPAIGN_TEMPLATE, { id, input });\n return jsonResult(data.updateHeadshotmarketingCampaignTemplate);\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_update_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to update campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_delete_template')),\n {\n title: 'Delete Campaign Template',\n description: 'Soft-delete a campaign template by ID.',\n inputSchema: { id: z.string().describe('Campaign template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingCampaignTemplate: boolean;\n }>(ops.DELETE_CAMPAIGN_TEMPLATE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingCampaignTemplate, id });\n } catch (error) {\n ctx.logger.error('headshotmarketing campaigns_delete_template failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to delete campaign template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Internal helpers shared by the Headshotmarketing tool files.\n *\n * These keep the per-tool registration explicit (literal product-prefixed\n * names via mcpToolName, typed inputSchema, jsonResult/errorResult) while\n * factoring out the repetitive try/catch + structured-logging + input-pruning\n * boilerplate. No `any`, no `ts-ignore`, no `eslint-disable`.\n */\n\nimport { errorResult, type McpContext } from '../../../core/index.js';\nimport type { ToolResult } from '../../../core/index.js';\n\n/**\n * Run a tool body, mapping any thrown error to a uniform error ToolResult and\n * logging it under the module-prefixed label. `label` is the short tool suffix\n * (e.g. 'contacts_get').\n */\nexport async function runTool(\n ctx: McpContext,\n label: string,\n run: () => Promise<ToolResult>,\n): Promise<ToolResult> {\n try {\n return await run();\n } catch (error) {\n ctx.logger.error(`headshotmarketing ${label} failed`, { error: String(error) });\n return errorResult(\n `Failed (${label}): ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/** Copy only the defined (non-undefined) entries into a fresh object. */\nexport function definedInput(obj: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) out[key] = value;\n }\n return out;\n}\n\n/** Build a {limit, offset}-bearing filter object (style: limit/offset live in the filter). */\nexport function filterWithPaging(\n fields: Record<string, unknown>,\n limit?: number,\n offset?: number,\n): Record<string, unknown> {\n return { ...definedInput(fields), limit: limit ?? 50, offset: offset ?? 0 };\n}\n\n/** Build a PaginationInput object (style: separate `pagination` arg). */\nexport function pagination(limit?: number, offset?: number): Record<string, unknown> {\n return { limit: limit ?? 50, offset: offset ?? 0 };\n}\n","/**\n * Headshotmarketing CRM contact tools.\n *\n * Surface (6): contacts_{get,list,create,update,delete}, contacts_activities.\n * Reads map to headshotmarketingContact(s)/headshotmarketingContactActivities;\n * writes map to the create/update/deleteHeadshotmarketingContact mutations.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ContactStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerContactTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_get')),\n {\n title: 'Get Contact',\n description: 'Fetch a single CRM contact by ID.',\n inputSchema: { id: z.string().describe('Contact ID') },\n },\n ({ id }) =>\n runTool(ctx, 'contacts_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContact: Record<string, unknown> | null;\n }>(ops.GET_CONTACT, { id });\n if (!data.headshotmarketingContact) return errorResult(`Contact ${id} not found`);\n return jsonResult(data.headshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_list')),\n {\n title: 'List Contacts',\n description:\n 'List CRM contacts with optional status/company/tags/text filters and pagination.',\n inputSchema: {\n status: ContactStatusEnum.optional().describe('Filter by status'),\n company: z.string().optional().describe('Filter by company'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, company, tags, search, limit, offset }) =>\n runTool(ctx, 'contacts_list', async () => {\n const filter = filterWithPaging({ status, company, tags, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContacts: Record<string, unknown>;\n }>(ops.LIST_CONTACTS, { filter });\n return jsonResult(data.headshotmarketingContacts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_activities')),\n {\n title: 'List Contact Activities',\n description: 'List the activity/interaction history for a contact.',\n inputSchema: {\n contactId: z.string().describe('Contact ID'),\n limit: z.number().int().optional().describe('Page size'),\n offset: z.number().int().optional().describe('Pagination offset'),\n },\n },\n ({ contactId, limit, offset }) =>\n runTool(ctx, 'contacts_activities', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContactActivities: Array<Record<string, unknown>>;\n }>(ops.LIST_CONTACT_ACTIVITIES, { contactId, limit, offset });\n return jsonResult(data.headshotmarketingContactActivities);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_create')),\n {\n title: 'Create Contact',\n description: 'Create a new CRM contact. firstName and lastName are required.',\n inputSchema: {\n firstName: z.string().min(1).describe('First name'),\n lastName: z.string().min(1).describe('Last name'),\n email: z.string().optional().describe('Email address'),\n phone: z.string().optional().describe('Phone number'),\n company: z.string().optional().describe('Company/organization'),\n jobTitle: z.string().optional().describe('Job title'),\n avatarUrl: z.string().optional().describe('Avatar image URL'),\n address: JsonObject.optional().describe('Address JSON'),\n socialProfiles: JsonObject.optional().describe('Social profiles JSON'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n status: ContactStatusEnum.optional().describe('Initial status'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'contacts_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingContact: Record<string, unknown>;\n }>(ops.CREATE_CONTACT, { input });\n return jsonResult(data.createHeadshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_update')),\n {\n title: 'Update Contact',\n description: 'Update a contact. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Contact ID'),\n firstName: z.string().optional().describe('Updated first name'),\n lastName: z.string().optional().describe('Updated last name'),\n email: z.string().optional().describe('Updated email'),\n phone: z.string().optional().describe('Updated phone'),\n company: z.string().optional().describe('Updated company'),\n jobTitle: z.string().optional().describe('Updated job title'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n address: JsonObject.optional().describe('Updated address JSON'),\n socialProfiles: JsonObject.optional().describe('Updated social profiles JSON'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n status: ContactStatusEnum.optional().describe('Updated status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'contacts_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingContact: Record<string, unknown>;\n }>(ops.UPDATE_CONTACT, { id, input });\n return jsonResult(data.updateHeadshotmarketingContact);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'contacts_delete')),\n {\n title: 'Delete Contact',\n description: 'Soft-delete a contact by ID.',\n inputSchema: { id: z.string().describe('Contact ID') },\n },\n ({ id }) =>\n runTool(ctx, 'contacts_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingContact: boolean }>(\n ops.DELETE_CONTACT,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingContact, id });\n }),\n );\n}\n","/**\n * Headshotmarketing lead tools.\n *\n * Surface (6): leads_{get,list,create,update,delete}, deals_convert_lead.\n * deals_convert_lead maps to convertHeadshotmarketingLead (lead → deal).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { LeadSourceEnum, LeadStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerLeadTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_get')),\n {\n title: 'Get Lead',\n description: 'Fetch a single lead by ID.',\n inputSchema: { id: z.string().describe('Lead ID') },\n },\n ({ id }) =>\n runTool(ctx, 'leads_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLead: Record<string, unknown> | null;\n }>(ops.GET_LEAD, { id });\n if (!data.headshotmarketingLead) return errorResult(`Lead ${id} not found`);\n return jsonResult(data.headshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_list')),\n {\n title: 'List Leads',\n description: 'List leads with optional status/source/owner/text filters and pagination.',\n inputSchema: {\n status: LeadStatusEnum.optional().describe('Filter by status'),\n source: LeadSourceEnum.optional().describe('Filter by acquisition source'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, source, ownerId, search, limit, offset }) =>\n runTool(ctx, 'leads_list', async () => {\n const filter = filterWithPaging({ status, source, ownerId, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLeads: Record<string, unknown>;\n }>(ops.LIST_LEADS, { filter });\n return jsonResult(data.headshotmarketingLeads);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_create')),\n {\n title: 'Create Lead',\n description: 'Create a new lead. title is required.',\n inputSchema: {\n title: z.string().min(1).describe('Lead title'),\n description: z.string().optional().describe('Description'),\n status: LeadStatusEnum.optional().describe('Initial status'),\n source: LeadSourceEnum.optional().describe('Acquisition source'),\n score: z.number().int().optional().describe('Lead score'),\n estimatedValue: z.number().optional().describe('Estimated value in cents'),\n contactId: z.string().optional().describe('Associated contact ID'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'leads_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.CREATE_LEAD, { input });\n return jsonResult(data.createHeadshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_update')),\n {\n title: 'Update Lead',\n description: 'Update a lead. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Lead ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: LeadStatusEnum.optional().describe('Updated status'),\n source: LeadSourceEnum.optional().describe('Updated source'),\n score: z.number().int().optional().describe('Updated score'),\n estimatedValue: z.number().optional().describe('Updated estimated value'),\n contactId: z.string().optional().describe('Updated contact ID'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n ownerId: z.string().optional().describe('Updated owner ID'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'leads_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.UPDATE_LEAD, { id, input });\n return jsonResult(data.updateHeadshotmarketingLead);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'leads_delete')),\n {\n title: 'Delete Lead',\n description: 'Soft-delete a lead by ID.',\n inputSchema: { id: z.string().describe('Lead ID') },\n },\n ({ id }) =>\n runTool(ctx, 'leads_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingLead: boolean }>(\n ops.DELETE_LEAD,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingLead, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_convert_lead')),\n {\n title: 'Convert Lead to Deal',\n description:\n 'Convert a lead into a new deal, placing it on a pipeline stage. Returns the created deal.',\n inputSchema: {\n leadId: z.string().describe('Lead ID to convert'),\n pipelineId: z.string().describe('Target pipeline ID'),\n stageId: z.string().describe('Target pipeline stage ID'),\n dealTitle: z.string().min(1).describe('Title for the new deal'),\n },\n },\n ({ leadId, pipelineId, stageId, dealTitle }) =>\n runTool(ctx, 'deals_convert_lead', async () => {\n const data = await ctx.gql.workspace.request<{\n convertHeadshotmarketingLead: Record<string, unknown>;\n }>(ops.CONVERT_LEAD, { leadId, pipelineId, stageId, dealTitle });\n return jsonResult(data.convertHeadshotmarketingLead);\n }),\n );\n}\n","/**\n * Headshotmarketing deal + pipeline tools.\n *\n * Surface (14): deals_{get,list,create,update,delete,move};\n * pipelines_{get,list,create,update,delete,overview};\n * pipeline_stages_{create,update,delete}.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { DealStatusEnum, JsonObject, IsoDateTime } from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerDealTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Deals ───────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_get')),\n {\n title: 'Get Deal',\n description: 'Fetch a single deal by ID.',\n inputSchema: { id: z.string().describe('Deal ID') },\n },\n ({ id }) =>\n runTool(ctx, 'deals_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeal: Record<string, unknown> | null;\n }>(ops.GET_DEAL, { id });\n if (!data.headshotmarketingDeal) return errorResult(`Deal ${id} not found`);\n return jsonResult(data.headshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_list')),\n {\n title: 'List Deals',\n description:\n 'List deals with optional pipeline/stage/owner/status/text filters and pagination.',\n inputSchema: {\n pipelineId: z.string().optional().describe('Filter by pipeline ID'),\n stageId: z.string().optional().describe('Filter by stage ID'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n status: DealStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ pipelineId, stageId, ownerId, status, search, limit, offset }) =>\n runTool(ctx, 'deals_list', async () => {\n const filter = filterWithPaging(\n { pipelineId, stageId, ownerId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeals: Record<string, unknown>;\n }>(ops.LIST_DEALS, { filter });\n return jsonResult(data.headshotmarketingDeals);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_create')),\n {\n title: 'Create Deal',\n description:\n 'Create a new deal on a pipeline stage. title, pipelineId and stageId are required.',\n inputSchema: {\n title: z.string().min(1).describe('Deal title'),\n pipelineId: z.string().describe('Pipeline ID'),\n stageId: z.string().describe('Pipeline stage ID'),\n description: z.string().optional().describe('Description'),\n value: z.number().optional().describe('Deal value in cents'),\n probability: z.number().int().optional().describe('Win probability 0-100'),\n status: DealStatusEnum.optional().describe('Initial status'),\n contactId: z.string().optional().describe('Associated contact ID'),\n leadId: z.string().optional().describe('Source lead ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n expectedCloseDate: IsoDateTime.optional().describe('Expected close date'),\n customFields: JsonObject.optional().describe('Custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'deals_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.CREATE_DEAL, { input });\n return jsonResult(data.createHeadshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_update')),\n {\n title: 'Update Deal',\n description: 'Update a deal. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Deal ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n value: z.number().optional().describe('Updated value in cents'),\n probability: z.number().int().optional().describe('Updated probability 0-100'),\n status: DealStatusEnum.optional().describe('Updated status'),\n pipelineId: z.string().optional().describe('Updated pipeline ID'),\n stageId: z.string().optional().describe('Updated stage ID'),\n contactId: z.string().optional().describe('Updated contact ID'),\n ownerId: z.string().optional().describe('Updated owner ID'),\n expectedCloseDate: IsoDateTime.optional().describe('Updated expected close date'),\n closedAt: IsoDateTime.optional().describe('Actual close date'),\n customFields: JsonObject.optional().describe('Updated custom fields JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'deals_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.UPDATE_DEAL, { id, input });\n return jsonResult(data.updateHeadshotmarketingDeal);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_delete')),\n {\n title: 'Delete Deal',\n description: 'Soft-delete a deal by ID.',\n inputSchema: { id: z.string().describe('Deal ID') },\n },\n ({ id }) =>\n runTool(ctx, 'deals_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingDeal: boolean }>(\n ops.DELETE_DEAL,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingDeal, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'deals_move')),\n {\n title: 'Move Deal',\n description: 'Move a deal to a different pipeline stage.',\n inputSchema: {\n id: z.string().describe('Deal ID'),\n stageId: z.string().describe('Target pipeline stage ID'),\n },\n },\n ({ id, stageId }) =>\n runTool(ctx, 'deals_move', async () => {\n const data = await ctx.gql.workspace.request<{\n moveHeadshotmarketingDeal: Record<string, unknown>;\n }>(ops.MOVE_DEAL, { id, stageId });\n return jsonResult(data.moveHeadshotmarketingDeal);\n }),\n );\n\n // ── Pipelines ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_get')),\n {\n title: 'Get Pipeline',\n description: 'Fetch a single pipeline (with its stages) by ID.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipeline: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE, { id });\n if (!data.headshotmarketingPipeline) return errorResult(`Pipeline ${id} not found`);\n return jsonResult(data.headshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_list')),\n {\n title: 'List Pipelines',\n description: 'List pipelines with optional active/text filters and pagination.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isActive, search, limit, offset }) =>\n runTool(ctx, 'pipelines_list', async () => {\n const filter = filterWithPaging({ isActive, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipelines: Record<string, unknown>;\n }>(ops.LIST_PIPELINES, { filter });\n return jsonResult(data.headshotmarketingPipelines);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_overview')),\n {\n title: 'Pipeline Overview',\n description: 'Get a pipeline overview with deal counts and values per stage.',\n inputSchema: { pipelineId: z.string().describe('Pipeline ID') },\n },\n ({ pipelineId }) =>\n runTool(ctx, 'pipelines_overview', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPipelineOverview: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE_OVERVIEW, { pipelineId });\n if (!data.headshotmarketingPipelineOverview) {\n return errorResult(`Pipeline ${pipelineId} not found`);\n }\n return jsonResult(data.headshotmarketingPipelineOverview);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create')),\n {\n title: 'Create Pipeline',\n description: 'Create a new sales pipeline.',\n inputSchema: {\n name: z.string().min(1).describe('Pipeline name'),\n description: z.string().optional().describe('Description'),\n isActive: z.boolean().optional().describe('Whether the pipeline is active'),\n isDefault: z.boolean().optional().describe('Whether this is the default pipeline'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'pipelines_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingPipeline: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE, { input });\n return jsonResult(data.createHeadshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update')),\n {\n title: 'Update Pipeline',\n description: 'Update a pipeline. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n isDefault: z.boolean().optional().describe('Updated default flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'pipelines_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingPipeline: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE, { id, input });\n return jsonResult(data.updateHeadshotmarketingPipeline);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_delete')),\n {\n title: 'Delete Pipeline',\n description: 'Soft-delete a pipeline by ID.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingPipeline: boolean }>(\n ops.DELETE_PIPELINE,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingPipeline, id });\n }),\n );\n\n // ── Pipeline stages ───────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create_stage')),\n {\n title: 'Create Pipeline Stage',\n description: 'Add a stage to a pipeline. pipelineId, name and order are required.',\n inputSchema: {\n pipelineId: z.string().describe('Pipeline ID'),\n name: z.string().min(1).describe('Stage name'),\n order: z.number().int().describe('Sort order of the stage'),\n description: z.string().optional().describe('Description'),\n color: z.string().optional().describe('Display color'),\n defaultProbability: z.number().int().optional().describe('Default win probability 0-100'),\n isActive: z.boolean().optional().describe('Whether the stage is active'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'pipelines_create_stage', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingPipelineStage: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE_STAGE, { input });\n return jsonResult(data.createHeadshotmarketingPipelineStage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update_stage')),\n {\n title: 'Update Pipeline Stage',\n description: 'Update a pipeline stage. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline stage ID'),\n name: z.string().optional().describe('Updated name'),\n order: z.number().int().optional().describe('Updated sort order'),\n description: z.string().optional().describe('Updated description'),\n color: z.string().optional().describe('Updated color'),\n defaultProbability: z.number().int().optional().describe('Updated default probability'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'pipelines_update_stage', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingPipelineStage: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE_STAGE, { id, input });\n return jsonResult(data.updateHeadshotmarketingPipelineStage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_delete_stage')),\n {\n title: 'Delete Pipeline Stage',\n description: 'Soft-delete a pipeline stage by ID.',\n inputSchema: { id: z.string().describe('Pipeline stage ID') },\n },\n ({ id }) =>\n runTool(ctx, 'pipelines_delete_stage', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingPipelineStage: boolean;\n }>(ops.DELETE_PIPELINE_STAGE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingPipelineStage, id });\n }),\n );\n}\n","/**\n * Headshotmarketing content tools — content items, digital assets, AI tools.\n *\n * Surface (17):\n * content_items_{get,list,create,update,delete}\n * assets_{get,list,create,update,delete}\n * ai_tools_{get,list,create,update,delete,execute}\n * ai_tool_executions_{get,list}\n *\n * All these list queries take a separate `pagination: PaginationInput` arg\n * (their filter inputs do NOT carry limit/offset).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ContentItemStatusEnum,\n ContentItemTypeEnum,\n AssetTypeEnum,\n AIToolCategoryEnum,\n AIToolExecutionStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerContentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Content items ─────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_get')),\n {\n title: 'Get Content Item',\n description: 'Fetch a single content item by ID.',\n inputSchema: { id: z.string().describe('Content item ID') },\n },\n ({ id }) =>\n runTool(ctx, 'content_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentItem: Record<string, unknown> | null;\n }>(ops.GET_CONTENT_ITEM, { id });\n if (!data.headshotmarketingContentItem) return errorResult(`Content item ${id} not found`);\n return jsonResult(data.headshotmarketingContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_list')),\n {\n title: 'List Content Items',\n description: 'List content items with optional type/status/author/campaign/tags filters.',\n inputSchema: {\n type: ContentItemTypeEnum.optional().describe('Filter by content type'),\n status: ContentItemStatusEnum.optional().describe('Filter by status'),\n authorId: z.string().optional().describe('Filter by author ID'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, authorId, campaignId, tags, search, limit, offset }) =>\n runTool(ctx, 'content_list', async () => {\n const filter = definedInput({ type, status, authorId, campaignId, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentItems: Record<string, unknown>;\n }>(ops.LIST_CONTENT_ITEMS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingContentItems);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_create')),\n {\n title: 'Create Content Item',\n description: 'Create a new content item (blog post, social copy, email, etc.).',\n inputSchema: {\n title: z.string().min(1).describe('Content title'),\n type: ContentItemTypeEnum.describe('Content type'),\n body: z.string().optional().describe('Content body'),\n summary: z.string().optional().describe('Summary'),\n slug: z.string().optional().describe('URL slug'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n scheduledAt: IsoDateTime.optional().describe('Scheduled publish time'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'content_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateContentItem: Record<string, unknown>;\n }>(ops.CREATE_CONTENT_ITEM, { input });\n return jsonResult(data.headshotmarketingCreateContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_update')),\n {\n title: 'Update Content Item',\n description: 'Update a content item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Content item ID'),\n title: z.string().optional().describe('Updated title'),\n type: ContentItemTypeEnum.optional().describe('Updated type'),\n status: ContentItemStatusEnum.optional().describe('Updated status'),\n body: z.string().optional().describe('Updated body'),\n summary: z.string().optional().describe('Updated summary'),\n slug: z.string().optional().describe('Updated slug'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n scheduledAt: IsoDateTime.optional().describe('Updated scheduled time'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'content_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateContentItem: Record<string, unknown>;\n }>(ops.UPDATE_CONTENT_ITEM, { id, input });\n return jsonResult(data.headshotmarketingUpdateContentItem);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_delete')),\n {\n title: 'Delete Content Item',\n description: 'Soft-delete a content item by ID.',\n inputSchema: { id: z.string().describe('Content item ID') },\n },\n ({ id }) =>\n runTool(ctx, 'content_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteContentItem: boolean;\n }>(ops.DELETE_CONTENT_ITEM, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteContentItem, id });\n }),\n );\n\n // ── Assets ──────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_get')),\n {\n title: 'Get Asset',\n description: 'Fetch a single digital asset by ID.',\n inputSchema: { id: z.string().describe('Asset ID') },\n },\n ({ id }) =>\n runTool(ctx, 'assets_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAsset: Record<string, unknown> | null;\n }>(ops.GET_ASSET, { id });\n if (!data.headshotmarketingAsset) return errorResult(`Asset ${id} not found`);\n return jsonResult(data.headshotmarketingAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_list')),\n {\n title: 'List Assets',\n description: 'List digital assets with optional type/folder/tags/text filters.',\n inputSchema: {\n type: AssetTypeEnum.optional().describe('Filter by asset type'),\n folderId: z.string().optional().describe('Filter by folder ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, folderId, tags, search, limit, offset }) =>\n runTool(ctx, 'assets_list', async () => {\n const filter = definedInput({ type, folderId, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAssets: Record<string, unknown>;\n }>(ops.LIST_ASSETS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAssets);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_create')),\n {\n title: 'Create Asset',\n description: 'Register a new digital asset. name, type and url are required.',\n inputSchema: {\n name: z.string().min(1).describe('Asset name'),\n type: AssetTypeEnum.describe('Asset type'),\n url: z.string().min(1).describe('Asset URL'),\n thumbnailUrl: z.string().optional().describe('Thumbnail URL'),\n mimeType: z.string().optional().describe('MIME type'),\n sizeBytes: z.number().int().optional().describe('Size in bytes'),\n width: z.number().int().optional().describe('Width (px)'),\n height: z.number().int().optional().describe('Height (px)'),\n altText: z.string().optional().describe('Alt text'),\n folderId: z.string().optional().describe('Folder ID'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'assets_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateAsset: Record<string, unknown>;\n }>(ops.CREATE_ASSET, { input });\n return jsonResult(data.headshotmarketingCreateAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_update')),\n {\n title: 'Update Asset',\n description: 'Update an asset. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Asset ID'),\n name: z.string().optional().describe('Updated name'),\n type: AssetTypeEnum.optional().describe('Updated type'),\n url: z.string().optional().describe('Updated URL'),\n thumbnailUrl: z.string().optional().describe('Updated thumbnail URL'),\n altText: z.string().optional().describe('Updated alt text'),\n folderId: z.string().optional().describe('Updated folder ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'assets_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateAsset: Record<string, unknown>;\n }>(ops.UPDATE_ASSET, { id, input });\n return jsonResult(data.headshotmarketingUpdateAsset);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_delete')),\n {\n title: 'Delete Asset',\n description: 'Soft-delete an asset by ID.',\n inputSchema: { id: z.string().describe('Asset ID') },\n },\n ({ id }) =>\n runTool(ctx, 'assets_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteAsset: boolean }>(\n ops.DELETE_ASSET,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteAsset, id });\n }),\n );\n\n // ── AI tools + executions ───────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_get')),\n {\n title: 'Get AI Tool',\n description: 'Fetch a single AI tool by ID.',\n inputSchema: { id: z.string().describe('AI tool ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAITool: Record<string, unknown> | null;\n }>(ops.GET_AI_TOOL, { id });\n if (!data.headshotmarketingAITool) return errorResult(`AI tool ${id} not found`);\n return jsonResult(data.headshotmarketingAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_list')),\n {\n title: 'List AI Tools',\n description: 'List AI marketing tools with optional category/provider/enabled/text filters.',\n inputSchema: {\n category: AIToolCategoryEnum.optional().describe('Filter by category'),\n provider: z.string().optional().describe('Filter by provider'),\n isEnabled: z.boolean().optional().describe('Filter by enabled flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ category, provider, isEnabled, search, limit, offset }) =>\n runTool(ctx, 'ai_tools_list', async () => {\n const filter = definedInput({ category, provider, isEnabled, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAITools: Record<string, unknown>;\n }>(ops.LIST_AI_TOOLS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAITools);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_create')),\n {\n title: 'Create AI Tool',\n description: 'Register a new AI marketing tool. name, category and provider are required.',\n inputSchema: {\n name: z.string().min(1).describe('Tool name'),\n category: AIToolCategoryEnum.describe('Tool category'),\n provider: z.string().min(1).describe('Provider (e.g. \"openai\", \"anthropic\")'),\n description: z.string().optional().describe('Description'),\n model: z.string().optional().describe('Model identifier'),\n isEnabled: z.boolean().optional().describe('Whether the tool is enabled'),\n configuration: JsonObject.optional().describe('Tool configuration JSON'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ai_tools_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateAITool: Record<string, unknown>;\n }>(ops.CREATE_AI_TOOL, { input });\n return jsonResult(data.headshotmarketingCreateAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_update')),\n {\n title: 'Update AI Tool',\n description: 'Update an AI tool. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('AI tool ID'),\n name: z.string().optional().describe('Updated name'),\n category: AIToolCategoryEnum.optional().describe('Updated category'),\n provider: z.string().optional().describe('Updated provider'),\n description: z.string().optional().describe('Updated description'),\n model: z.string().optional().describe('Updated model'),\n isEnabled: z.boolean().optional().describe('Updated enabled flag'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ai_tools_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateAITool: Record<string, unknown>;\n }>(ops.UPDATE_AI_TOOL, { id, input });\n return jsonResult(data.headshotmarketingUpdateAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_delete')),\n {\n title: 'Delete AI Tool',\n description: 'Soft-delete an AI tool by ID.',\n inputSchema: { id: z.string().describe('AI tool ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteAITool: boolean }>(\n ops.DELETE_AI_TOOL,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteAITool, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_execute')),\n {\n title: 'Execute AI Tool',\n description: 'Execute an AI tool and return the execution record.',\n inputSchema: {\n toolId: z.string().describe('AI tool ID to execute'),\n input: JsonObject.describe('Execution input payload JSON'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n ({ toolId, input, metadata }) =>\n runTool(ctx, 'ai_tools_execute', async () => {\n const payload = definedInput({ toolId, input, metadata });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingExecuteAITool: Record<string, unknown>;\n }>(ops.EXECUTE_AI_TOOL, { input: payload });\n return jsonResult(data.headshotmarketingExecuteAITool);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_get_execution')),\n {\n title: 'Get AI Tool Execution',\n description: 'Fetch a single AI tool execution record by ID.',\n inputSchema: { id: z.string().describe('AI tool execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ai_tools_get_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAIToolExecution: Record<string, unknown> | null;\n }>(ops.GET_AI_TOOL_EXECUTION, { id });\n if (!data.headshotmarketingAIToolExecution) {\n return errorResult(`AI tool execution ${id} not found`);\n }\n return jsonResult(data.headshotmarketingAIToolExecution);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_tools_list_executions')),\n {\n title: 'List AI Tool Executions',\n description: 'List AI tool execution records with optional tool/status/executor filters.',\n inputSchema: {\n toolId: z.string().optional().describe('Filter by tool ID'),\n status: AIToolExecutionStatusEnum.optional().describe('Filter by status'),\n executedBy: z.string().optional().describe('Filter by executor user ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ toolId, status, executedBy, limit, offset }) =>\n runTool(ctx, 'ai_tools_list_executions', async () => {\n const filter = definedInput({ toolId, status, executedBy });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAIToolExecutions: Record<string, unknown>;\n }>(ops.LIST_AI_TOOL_EXECUTIONS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingAIToolExecutions);\n }),\n );\n}\n","/**\n * Headshotmarketing social media tools — accounts + posts.\n *\n * Surface (14):\n * social_accounts_{get,list,create,update,delete,disconnect}\n * social_metrics\n * social_posts_{get,list,create,update,delete,publish,schedule}\n *\n * Both list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n SocialPlatformEnum,\n SocialAccountStatusEnum,\n SocialPostStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerSocialTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Social accounts ───────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_get_account')),\n {\n title: 'Get Social Account',\n description: 'Fetch a single connected social account by ID.',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_get_account', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialAccount: Record<string, unknown> | null;\n }>(ops.GET_SOCIAL_ACCOUNT, { id });\n if (!data.headshotmarketingSocialAccount)\n return errorResult(`Social account ${id} not found`);\n return jsonResult(data.headshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_list_accounts')),\n {\n title: 'List Social Accounts',\n description: 'List connected social accounts with optional platform/status/text filters.',\n inputSchema: {\n platform: SocialPlatformEnum.optional().describe('Filter by platform'),\n status: SocialAccountStatusEnum.optional().describe('Filter by connection status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ platform, status, search, limit, offset }) =>\n runTool(ctx, 'social_list_accounts', async () => {\n const filter = filterWithPaging({ platform, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialAccounts: Record<string, unknown>;\n }>(ops.LIST_SOCIAL_ACCOUNTS, { filter });\n return jsonResult(data.headshotmarketingSocialAccounts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_create_account')),\n {\n title: 'Connect Social Account',\n description:\n 'Connect a new social media account. platform, accountName and platformAccountId are required.',\n inputSchema: {\n platform: SocialPlatformEnum.describe('Social platform'),\n accountName: z.string().min(1).describe('Account display name'),\n platformAccountId: z.string().min(1).describe('Platform-side account ID'),\n accessToken: z.string().optional().describe('OAuth access token'),\n refreshToken: z.string().optional().describe('OAuth refresh token'),\n tokenExpiresAt: IsoDateTime.optional().describe('Token expiry'),\n profileUrl: z.string().optional().describe('Profile URL'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n followerCount: z.number().int().optional().describe('Follower count'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'social_create_account', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.CREATE_SOCIAL_ACCOUNT, { input });\n return jsonResult(data.createHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_update_account')),\n {\n title: 'Update Social Account',\n description: 'Update a social account. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Social account ID'),\n accountName: z.string().optional().describe('Updated account name'),\n accessToken: z.string().optional().describe('Updated access token'),\n refreshToken: z.string().optional().describe('Updated refresh token'),\n tokenExpiresAt: IsoDateTime.optional().describe('Updated token expiry'),\n profileUrl: z.string().optional().describe('Updated profile URL'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n followerCount: z.number().int().optional().describe('Updated follower count'),\n status: SocialAccountStatusEnum.optional().describe('Updated status'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'social_update_account', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.UPDATE_SOCIAL_ACCOUNT, { id, input });\n return jsonResult(data.updateHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_delete_account')),\n {\n title: 'Delete Social Account',\n description: 'Soft-delete a social account by ID.',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_delete_account', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingSocialAccount: boolean;\n }>(ops.DELETE_SOCIAL_ACCOUNT, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingSocialAccount, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_disconnect_account')),\n {\n title: 'Disconnect Social Account',\n description: 'Disconnect a social account (revoke tokens and mark disconnected).',\n inputSchema: { id: z.string().describe('Social account ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_disconnect_account', async () => {\n const data = await ctx.gql.workspace.request<{\n disconnectHeadshotmarketingSocialAccount: Record<string, unknown>;\n }>(ops.DISCONNECT_SOCIAL_ACCOUNT, { id });\n return jsonResult(data.disconnectHeadshotmarketingSocialAccount);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_metrics')),\n {\n title: 'Social Metrics',\n description:\n 'Aggregated social media metrics: account/post counts, followers, and engagement.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'social_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialMetrics: Record<string, unknown>;\n }>(ops.SOCIAL_METRICS, {});\n return jsonResult(data.headshotmarketingSocialMetrics);\n }),\n );\n\n // ── Social posts ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_get_post')),\n {\n title: 'Get Social Post',\n description: 'Fetch a single social media post by ID.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_get_post', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialPost: Record<string, unknown> | null;\n }>(ops.GET_SOCIAL_POST, { id });\n if (!data.headshotmarketingSocialPost) return errorResult(`Social post ${id} not found`);\n return jsonResult(data.headshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_list_posts')),\n {\n title: 'List Social Posts',\n description: 'List social posts with optional account/campaign/status/text filters.',\n inputSchema: {\n socialAccountId: z.string().optional().describe('Filter by social account ID'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n status: SocialPostStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ socialAccountId, campaignId, status, search, limit, offset }) =>\n runTool(ctx, 'social_list_posts', async () => {\n const filter = filterWithPaging(\n { socialAccountId, campaignId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSocialPosts: Record<string, unknown>;\n }>(ops.LIST_SOCIAL_POSTS, { filter });\n return jsonResult(data.headshotmarketingSocialPosts);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_create_post')),\n {\n title: 'Create Social Post',\n description: 'Create a new social media post. socialAccountId and content are required.',\n inputSchema: {\n socialAccountId: z.string().describe('Target social account ID'),\n content: z.string().min(1).describe('Post content'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n mediaUrls: z.array(z.string()).optional().describe('Media asset URLs'),\n scheduledAt: IsoDateTime.optional().describe('Scheduled publish time'),\n status: SocialPostStatusEnum.optional().describe('Initial status'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'social_create_post', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.CREATE_SOCIAL_POST, { input });\n return jsonResult(data.createHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_update_post')),\n {\n title: 'Update Social Post',\n description: 'Update a social post. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Social post ID'),\n content: z.string().optional().describe('Updated content'),\n mediaUrls: z.array(z.string()).optional().describe('Updated media URLs'),\n scheduledAt: IsoDateTime.optional().describe('Updated scheduled time'),\n status: SocialPostStatusEnum.optional().describe('Updated status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'social_update_post', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.UPDATE_SOCIAL_POST, { id, input });\n return jsonResult(data.updateHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_delete_post')),\n {\n title: 'Delete Social Post',\n description: 'Soft-delete a social post by ID.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_delete_post', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingSocialPost: boolean;\n }>(ops.DELETE_SOCIAL_POST, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingSocialPost, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_publish_post')),\n {\n title: 'Publish Social Post',\n description: 'Publish a social media post immediately.',\n inputSchema: { id: z.string().describe('Social post ID') },\n },\n ({ id }) =>\n runTool(ctx, 'social_publish_post', async () => {\n const data = await ctx.gql.workspace.request<{\n publishHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.PUBLISH_SOCIAL_POST, { id });\n return jsonResult(data.publishHeadshotmarketingSocialPost);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'social_schedule_post')),\n {\n title: 'Schedule Social Post',\n description: 'Schedule a social media post for future publishing.',\n inputSchema: {\n id: z.string().describe('Social post ID'),\n scheduledAt: IsoDateTime.describe('Publish time (ISO-8601)'),\n },\n },\n ({ id, scheduledAt }) =>\n runTool(ctx, 'social_schedule_post', async () => {\n const data = await ctx.gql.workspace.request<{\n scheduleHeadshotmarketingSocialPost: Record<string, unknown>;\n }>(ops.SCHEDULE_SOCIAL_POST, { id, scheduledAt });\n return jsonResult(data.scheduleHeadshotmarketingSocialPost);\n }),\n );\n}\n","/**\n * Headshotmarketing paid-ads tools — ad campaigns, ad creatives, audiences.\n *\n * Surface (15):\n * ad_campaigns_{get,list,create,update,delete}\n * ads_metrics\n * ad_creatives_{get,list,create,update,delete}\n * audiences_{get,list,create,update,delete}\n *\n * All list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n AdPlatformEnum,\n AdCampaignStatusEnum,\n AdCreativeStatusEnum,\n AdCreativeTypeEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerAdTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Ad campaigns ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_get_campaign')),\n {\n title: 'Get Ad Campaign',\n description: 'Fetch a single paid ad campaign by ID.',\n inputSchema: { id: z.string().describe('Ad campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_get_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCampaign: Record<string, unknown> | null;\n }>(ops.GET_AD_CAMPAIGN, { id });\n if (!data.headshotmarketingAdCampaign) return errorResult(`Ad campaign ${id} not found`);\n return jsonResult(data.headshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_list_campaigns')),\n {\n title: 'List Ad Campaigns',\n description: 'List paid ad campaigns with optional platform/status/campaign/text filters.',\n inputSchema: {\n platform: AdPlatformEnum.optional().describe('Filter by ad platform'),\n status: AdCampaignStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by linked marketing campaign ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ platform, status, campaignId, search, limit, offset }) =>\n runTool(ctx, 'ads_list_campaigns', async () => {\n const filter = filterWithPaging({ platform, status, campaignId, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCampaigns: Record<string, unknown>;\n }>(ops.LIST_AD_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingAdCampaigns);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_metrics')),\n {\n title: 'Ad Metrics',\n description:\n 'Aggregated ad performance metrics: campaign/creative counts, impressions, clicks, spend.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'ads_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdMetrics: Record<string, unknown>;\n }>(ops.AD_METRICS, {});\n return jsonResult(data.headshotmarketingAdMetrics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_create_campaign')),\n {\n title: 'Create Ad Campaign',\n description: 'Create a new paid ad campaign. name and platform are required.',\n inputSchema: {\n name: z.string().min(1).describe('Ad campaign name'),\n platform: AdPlatformEnum.describe('Ad platform'),\n description: z.string().optional().describe('Description'),\n status: AdCampaignStatusEnum.optional().describe('Initial status'),\n campaignId: z.string().optional().describe('Linked marketing campaign ID'),\n audienceId: z.string().optional().describe('Target audience ID'),\n totalBudget: z.number().optional().describe('Total budget in cents'),\n dailyBudget: z.number().optional().describe('Daily budget in cents'),\n bidStrategy: z.string().optional().describe('Bid strategy (CPC, CPM, CPA, ...)'),\n startDate: IsoDateTime.optional().describe('Start date'),\n endDate: IsoDateTime.optional().describe('End date'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ads_create_campaign', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAdCampaign: Record<string, unknown>;\n }>(ops.CREATE_AD_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_update_campaign')),\n {\n title: 'Update Ad Campaign',\n description: 'Update an ad campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Ad campaign ID'),\n name: z.string().optional().describe('Updated name'),\n platform: AdPlatformEnum.optional().describe('Updated platform'),\n description: z.string().optional().describe('Updated description'),\n status: AdCampaignStatusEnum.optional().describe('Updated status'),\n audienceId: z.string().optional().describe('Updated audience ID'),\n totalBudget: z.number().optional().describe('Updated total budget'),\n dailyBudget: z.number().optional().describe('Updated daily budget'),\n spent: z.number().optional().describe('Updated spent amount'),\n bidStrategy: z.string().optional().describe('Updated bid strategy'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ads_update_campaign', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAdCampaign: Record<string, unknown>;\n }>(ops.UPDATE_AD_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingAdCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_delete_campaign')),\n {\n title: 'Delete Ad Campaign',\n description: 'Soft-delete an ad campaign by ID.',\n inputSchema: { id: z.string().describe('Ad campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_delete_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingAdCampaign: boolean;\n }>(ops.DELETE_AD_CAMPAIGN, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingAdCampaign, id });\n }),\n );\n\n // ── Ad creatives ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_get_creative')),\n {\n title: 'Get Ad Creative',\n description: 'Fetch a single ad creative by ID.',\n inputSchema: { id: z.string().describe('Ad creative ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_get_creative', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCreative: Record<string, unknown> | null;\n }>(ops.GET_AD_CREATIVE, { id });\n if (!data.headshotmarketingAdCreative) return errorResult(`Ad creative ${id} not found`);\n return jsonResult(data.headshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_list_creatives')),\n {\n title: 'List Ad Creatives',\n description: 'List ad creatives with optional campaign/type/status/text filters.',\n inputSchema: {\n adCampaignId: z.string().optional().describe('Filter by ad campaign ID'),\n type: AdCreativeTypeEnum.optional().describe('Filter by creative type'),\n status: AdCreativeStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ adCampaignId, type, status, search, limit, offset }) =>\n runTool(ctx, 'ads_list_creatives', async () => {\n const filter = filterWithPaging({ adCampaignId, type, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAdCreatives: Record<string, unknown>;\n }>(ops.LIST_AD_CREATIVES, { filter });\n return jsonResult(data.headshotmarketingAdCreatives);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_create_creative')),\n {\n title: 'Create Ad Creative',\n description: 'Create a new ad creative asset. name and type are required.',\n inputSchema: {\n name: z.string().min(1).describe('Creative name'),\n type: AdCreativeTypeEnum.describe('Creative type'),\n adCampaignId: z.string().optional().describe('Associated ad campaign ID'),\n headline: z.string().optional().describe('Headline text'),\n body: z.string().optional().describe('Body/description text'),\n callToAction: z.string().optional().describe('Call-to-action text'),\n destinationUrl: z.string().optional().describe('Destination URL'),\n mediaUrls: z.array(z.string()).optional().describe('Media asset URLs'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'ads_create_creative', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAdCreative: Record<string, unknown>;\n }>(ops.CREATE_AD_CREATIVE, { input });\n return jsonResult(data.createHeadshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_update_creative')),\n {\n title: 'Update Ad Creative',\n description: 'Update an ad creative. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Ad creative ID'),\n name: z.string().optional().describe('Updated name'),\n type: AdCreativeTypeEnum.optional().describe('Updated type'),\n status: AdCreativeStatusEnum.optional().describe('Updated status'),\n headline: z.string().optional().describe('Updated headline'),\n body: z.string().optional().describe('Updated body'),\n callToAction: z.string().optional().describe('Updated call-to-action'),\n destinationUrl: z.string().optional().describe('Updated destination URL'),\n mediaUrls: z.array(z.string()).optional().describe('Updated media URLs'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'ads_update_creative', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAdCreative: Record<string, unknown>;\n }>(ops.UPDATE_AD_CREATIVE, { id, input });\n return jsonResult(data.updateHeadshotmarketingAdCreative);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ads_delete_creative')),\n {\n title: 'Delete Ad Creative',\n description: 'Soft-delete an ad creative by ID.',\n inputSchema: { id: z.string().describe('Ad creative ID') },\n },\n ({ id }) =>\n runTool(ctx, 'ads_delete_creative', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingAdCreative: boolean;\n }>(ops.DELETE_AD_CREATIVE, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingAdCreative, id });\n }),\n );\n\n // ── Audiences ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_get')),\n {\n title: 'Get Audience',\n description: 'Fetch a single target audience by ID.',\n inputSchema: { id: z.string().describe('Audience ID') },\n },\n ({ id }) =>\n runTool(ctx, 'audiences_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAudience: Record<string, unknown> | null;\n }>(ops.GET_AUDIENCE, { id });\n if (!data.headshotmarketingAudience) return errorResult(`Audience ${id} not found`);\n return jsonResult(data.headshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_list')),\n {\n title: 'List Audiences',\n description: 'List target audiences with optional active/text filters.',\n inputSchema: {\n isActive: z.boolean().optional().describe('Filter by active flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isActive, search, limit, offset }) =>\n runTool(ctx, 'audiences_list', async () => {\n const filter = filterWithPaging({ isActive, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAudiences: Record<string, unknown>;\n }>(ops.LIST_AUDIENCES, { filter });\n return jsonResult(data.headshotmarketingAudiences);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_create')),\n {\n title: 'Create Audience',\n description: 'Create a new target audience definition. name is required.',\n inputSchema: {\n name: z.string().min(1).describe('Audience name'),\n description: z.string().optional().describe('Description'),\n estimatedSize: z.number().int().optional().describe('Estimated audience size'),\n isActive: z.boolean().optional().describe('Whether the audience is active'),\n targetingCriteria: JsonObject.optional().describe('Targeting criteria JSON'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'audiences_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingAudience: Record<string, unknown>;\n }>(ops.CREATE_AUDIENCE, { input });\n return jsonResult(data.createHeadshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_update')),\n {\n title: 'Update Audience',\n description: 'Update an audience. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Audience ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n estimatedSize: z.number().int().optional().describe('Updated estimated size'),\n isActive: z.boolean().optional().describe('Updated active flag'),\n targetingCriteria: JsonObject.optional().describe('Updated targeting criteria JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'audiences_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingAudience: Record<string, unknown>;\n }>(ops.UPDATE_AUDIENCE, { id, input });\n return jsonResult(data.updateHeadshotmarketingAudience);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audiences_delete')),\n {\n title: 'Delete Audience',\n description: 'Soft-delete an audience by ID.',\n inputSchema: { id: z.string().describe('Audience ID') },\n },\n ({ id }) =>\n runTool(ctx, 'audiences_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingAudience: boolean }>(\n ops.DELETE_AUDIENCE,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingAudience, id });\n }),\n );\n}\n","/**\n * Headshotmarketing influencer tools — influencers, influencer campaigns,\n * relationships.\n *\n * Surface (15):\n * influencers_{get,list,create,update,delete,discover}\n * influencer_campaigns_{get,list,create,update,delete}\n * influencer_relationships_{get,list,create,update,delete,update_status}\n *\n * All list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n InfluencerTierEnum,\n InfluencerCampaignStatusEnum,\n InfluencerRelationshipStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerInfluencerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Influencers ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get')),\n {\n title: 'Get Influencer',\n description: 'Fetch a single influencer profile by ID.',\n inputSchema: { id: z.string().describe('Influencer ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencer: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER, { id });\n if (!data.headshotmarketingInfluencer) return errorResult(`Influencer ${id} not found`);\n return jsonResult(data.headshotmarketingInfluencer);\n }),\n );\n\n const influencerFilterSchema = {\n tier: InfluencerTierEnum.optional().describe('Filter by tier'),\n location: z.string().optional().describe('Filter by location'),\n niches: z.array(z.string()).optional().describe('Filter by content niches'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list')),\n {\n title: 'List Influencers',\n description: 'List influencer profiles with optional tier/location/niche/text filters.',\n inputSchema: influencerFilterSchema,\n },\n ({ tier, location, niches, search, limit, offset }) =>\n runTool(ctx, 'influencers_list', async () => {\n const filter = filterWithPaging({ tier, location, niches, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencers: Record<string, unknown>;\n }>(ops.LIST_INFLUENCERS, { filter });\n return jsonResult(data.headshotmarketingInfluencers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_discover')),\n {\n title: 'Discover Influencers',\n description: 'Discover influencers with advanced tier/location/niche/text search filters.',\n inputSchema: influencerFilterSchema,\n },\n ({ tier, location, niches, search, limit, offset }) =>\n runTool(ctx, 'influencers_discover', async () => {\n const filter = filterWithPaging({ tier, location, niches, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDiscoverInfluencers: Record<string, unknown>;\n }>(ops.DISCOVER_INFLUENCERS, { filter });\n return jsonResult(data.headshotmarketingDiscoverInfluencers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create')),\n {\n title: 'Create Influencer',\n description: 'Create a new influencer profile. name and tier are required.',\n inputSchema: {\n name: z.string().min(1).describe('Influencer display name'),\n tier: InfluencerTierEnum.describe('Influencer tier'),\n bio: z.string().optional().describe('Bio'),\n email: z.string().optional().describe('Email'),\n phone: z.string().optional().describe('Phone'),\n location: z.string().optional().describe('Location/region'),\n totalFollowers: z.number().int().optional().describe('Total follower count'),\n engagementRate: z.number().optional().describe('Average engagement rate'),\n niches: z.array(z.string()).optional().describe('Content niches'),\n platforms: JsonObject.optional().describe('Platforms + handles JSON'),\n audienceDemographics: JsonObject.optional().describe('Audience demographics JSON'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencer: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER, { input });\n return jsonResult(data.createHeadshotmarketingInfluencer);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update')),\n {\n title: 'Update Influencer',\n description: 'Update an influencer. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer ID'),\n name: z.string().optional().describe('Updated name'),\n tier: InfluencerTierEnum.optional().describe('Updated tier'),\n bio: z.string().optional().describe('Updated bio'),\n email: z.string().optional().describe('Updated email'),\n phone: z.string().optional().describe('Updated phone'),\n location: z.string().optional().describe('Updated location'),\n totalFollowers: z.number().int().optional().describe('Updated follower count'),\n engagementRate: z.number().optional().describe('Updated engagement rate'),\n niches: z.array(z.string()).optional().describe('Updated niches'),\n platforms: JsonObject.optional().describe('Updated platforms JSON'),\n audienceDemographics: JsonObject.optional().describe('Updated demographics JSON'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencer: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencer);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete')),\n {\n title: 'Delete Influencer',\n description: 'Soft-delete an influencer profile by ID.',\n inputSchema: { id: z.string().describe('Influencer ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencer: boolean;\n }>(ops.DELETE_INFLUENCER, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencer, id });\n }),\n );\n\n // ── Influencer campaigns ──────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get_campaign')),\n {\n title: 'Get Influencer Campaign',\n description: 'Fetch a single influencer campaign by ID.',\n inputSchema: { id: z.string().describe('Influencer campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerCampaign: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER_CAMPAIGN, { id });\n if (!data.headshotmarketingInfluencerCampaign) {\n return errorResult(`Influencer campaign ${id} not found`);\n }\n return jsonResult(data.headshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list_campaigns')),\n {\n title: 'List Influencer Campaigns',\n description:\n 'List influencer campaigns with optional influencer/campaign/status/text filters.',\n inputSchema: {\n influencerId: z.string().optional().describe('Filter by influencer ID'),\n campaignId: z.string().optional().describe('Filter by marketing campaign ID'),\n status: InfluencerCampaignStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ influencerId, campaignId, status, search, limit, offset }) =>\n runTool(ctx, 'influencers_list_campaigns', async () => {\n const filter = filterWithPaging(\n { influencerId, campaignId, status, search },\n limit,\n offset,\n );\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerCampaigns: Record<string, unknown>;\n }>(ops.LIST_INFLUENCER_CAMPAIGNS, { filter });\n return jsonResult(data.headshotmarketingInfluencerCampaigns);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create_campaign')),\n {\n title: 'Create Influencer Campaign',\n description: 'Create a new influencer campaign. name and influencerId are required.',\n inputSchema: {\n name: z.string().min(1).describe('Campaign name'),\n influencerId: z.string().describe('Influencer ID'),\n campaignId: z.string().optional().describe('Linked marketing campaign ID'),\n description: z.string().optional().describe('Description'),\n status: InfluencerCampaignStatusEnum.optional().describe('Initial status'),\n compensation: z.number().optional().describe('Compensation in cents'),\n compensationType: z.string().optional().describe('flat_fee/per_post/commission/product'),\n deliverables: JsonObject.optional().describe('Deliverables JSON'),\n contentDeadline: IsoDateTime.optional().describe('Content deadline'),\n startDate: IsoDateTime.optional().describe('Start date'),\n endDate: IsoDateTime.optional().describe('End date'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create_campaign', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencerCampaign: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER_CAMPAIGN, { input });\n return jsonResult(data.createHeadshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_campaign')),\n {\n title: 'Update Influencer Campaign',\n description: 'Update an influencer campaign. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer campaign ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: InfluencerCampaignStatusEnum.optional().describe('Updated status'),\n compensation: z.number().optional().describe('Updated compensation'),\n compensationType: z.string().optional().describe('Updated compensation type'),\n deliverables: JsonObject.optional().describe('Updated deliverables JSON'),\n contentDeadline: IsoDateTime.optional().describe('Updated content deadline'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n metrics: JsonObject.optional().describe('Updated metrics JSON'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update_campaign', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerCampaign: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_CAMPAIGN, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencerCampaign);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete_campaign')),\n {\n title: 'Delete Influencer Campaign',\n description: 'Soft-delete an influencer campaign by ID.',\n inputSchema: { id: z.string().describe('Influencer campaign ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete_campaign', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencerCampaign: boolean;\n }>(ops.DELETE_INFLUENCER_CAMPAIGN, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencerCampaign, id });\n }),\n );\n\n // ── Influencer relationships ─────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_get_relationship')),\n {\n title: 'Get Influencer Relationship',\n description: 'Fetch a single influencer relationship by ID.',\n inputSchema: { id: z.string().describe('Influencer relationship ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_get_relationship', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerRelationship: Record<string, unknown> | null;\n }>(ops.GET_INFLUENCER_RELATIONSHIP, { id });\n if (!data.headshotmarketingInfluencerRelationship) {\n return errorResult(`Influencer relationship ${id} not found`);\n }\n return jsonResult(data.headshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_list_relationships')),\n {\n title: 'List Influencer Relationships',\n description: 'List influencer relationships with optional influencer/status/text filters.',\n inputSchema: {\n influencerId: z.string().optional().describe('Filter by influencer ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ influencerId, status, search, limit, offset }) =>\n runTool(ctx, 'influencers_list_relationships', async () => {\n const filter = filterWithPaging({ influencerId, status, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingInfluencerRelationships: Record<string, unknown>;\n }>(ops.LIST_INFLUENCER_RELATIONSHIPS, { filter });\n return jsonResult(data.headshotmarketingInfluencerRelationships);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_create_relationship')),\n {\n title: 'Create Influencer Relationship',\n description: 'Create a new influencer relationship. influencerId is required.',\n inputSchema: {\n influencerId: z.string().describe('Influencer ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Initial status'),\n rating: z.number().int().optional().describe('Rating'),\n notes: z.string().optional().describe('Notes'),\n firstContactDate: IsoDateTime.optional().describe('First contact date'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'influencers_create_relationship', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingInfluencerRelationship: Record<string, unknown>;\n }>(ops.CREATE_INFLUENCER_RELATIONSHIP, { input });\n return jsonResult(data.createHeadshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_relationship')),\n {\n title: 'Update Influencer Relationship',\n description:\n 'Update an influencer relationship. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Influencer relationship ID'),\n status: InfluencerRelationshipStatusEnum.optional().describe('Updated status'),\n rating: z.number().int().optional().describe('Updated rating'),\n notes: z.string().optional().describe('Updated notes'),\n lastInteractionDate: IsoDateTime.optional().describe('Updated last-interaction date'),\n totalCampaigns: z.number().int().optional().describe('Updated total campaigns'),\n totalCompensation: z.number().optional().describe('Updated total compensation'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'influencers_update_relationship', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerRelationship: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_RELATIONSHIP, { id, input });\n return jsonResult(data.updateHeadshotmarketingInfluencerRelationship);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_delete_relationship')),\n {\n title: 'Delete Influencer Relationship',\n description: 'Soft-delete an influencer relationship by ID.',\n inputSchema: { id: z.string().describe('Influencer relationship ID') },\n },\n ({ id }) =>\n runTool(ctx, 'influencers_delete_relationship', async () => {\n const data = await ctx.gql.workspace.request<{\n deleteHeadshotmarketingInfluencerRelationship: boolean;\n }>(ops.DELETE_INFLUENCER_RELATIONSHIP, { id });\n return jsonResult({ deleted: data.deleteHeadshotmarketingInfluencerRelationship, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'influencers_update_relationship_status')),\n {\n title: 'Update Influencer Relationship Status',\n description: 'Update only the status of an influencer relationship.',\n inputSchema: {\n id: z.string().describe('Influencer relationship ID'),\n status: InfluencerRelationshipStatusEnum.describe('New status'),\n },\n },\n ({ id, status }) =>\n runTool(ctx, 'influencers_update_relationship_status', async () => {\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingInfluencerRelationshipStatus: Record<string, unknown>;\n }>(ops.UPDATE_INFLUENCER_RELATIONSHIP_STATUS, { id, status });\n return jsonResult(data.updateHeadshotmarketingInfluencerRelationshipStatus);\n }),\n );\n}\n","/**\n * Headshotmarketing event tools — events, registrations, speakers.\n *\n * Surface (15):\n * events_{get,list,create,update,delete}\n * event_registrations_{get,list,create,update,register,check_in,cancel}\n * event_speakers_{get,list,create,update,delete}\n *\n * All list queries take a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n EventTypeEnum,\n EventStatusEnum,\n EventRegistrationStatusEnum,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerEventTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Events ────────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get')),\n {\n title: 'Get Event',\n description: 'Fetch a single marketing event (with speakers + registrations) by ID.',\n inputSchema: { id: z.string().describe('Event ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEvent: Record<string, unknown> | null;\n }>(ops.GET_EVENT, { id });\n if (!data.headshotmarketingEvent) return errorResult(`Event ${id} not found`);\n return jsonResult(data.headshotmarketingEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list')),\n {\n title: 'List Events',\n description: 'List marketing events with optional type/status/campaign/date/tags filters.',\n inputSchema: {\n type: EventTypeEnum.optional().describe('Filter by event type'),\n status: EventStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n startDateFrom: IsoDateTime.optional().describe('Filter: start date from'),\n startDateTo: IsoDateTime.optional().describe('Filter: start date to'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, campaignId, startDateFrom, startDateTo, tags, search, limit, offset }) =>\n runTool(ctx, 'events_list', async () => {\n const filter = definedInput({\n type,\n status,\n campaignId,\n startDateFrom,\n startDateTo,\n tags,\n search,\n });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEvents: Record<string, unknown>;\n }>(ops.LIST_EVENTS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEvents);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create')),\n {\n title: 'Create Event',\n description: 'Create a new marketing event. title, type, startDate and endDate are required.',\n inputSchema: {\n title: z.string().min(1).describe('Event title'),\n type: EventTypeEnum.describe('Event type'),\n startDate: IsoDateTime.describe('Start date/time'),\n endDate: IsoDateTime.describe('End date/time'),\n description: z.string().optional().describe('Description'),\n slug: z.string().optional().describe('URL slug'),\n timezone: z.string().optional().describe('Timezone'),\n location: z.string().optional().describe('Physical location'),\n virtualUrl: z.string().optional().describe('Virtual event URL'),\n maxAttendees: z.number().int().optional().describe('Max attendees'),\n coverImageUrl: z.string().optional().describe('Cover image URL'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'events_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEvent: Record<string, unknown>;\n }>(ops.CREATE_EVENT, { input });\n return jsonResult(data.headshotmarketingCreateEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update')),\n {\n title: 'Update Event',\n description: 'Update a marketing event. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event ID'),\n title: z.string().optional().describe('Updated title'),\n type: EventTypeEnum.optional().describe('Updated type'),\n status: EventStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n slug: z.string().optional().describe('Updated slug'),\n startDate: IsoDateTime.optional().describe('Updated start date'),\n endDate: IsoDateTime.optional().describe('Updated end date'),\n timezone: z.string().optional().describe('Updated timezone'),\n location: z.string().optional().describe('Updated location'),\n virtualUrl: z.string().optional().describe('Updated virtual URL'),\n maxAttendees: z.number().int().optional().describe('Updated max attendees'),\n coverImageUrl: z.string().optional().describe('Updated cover image URL'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEvent: Record<string, unknown>;\n }>(ops.UPDATE_EVENT, { id, input });\n return jsonResult(data.headshotmarketingUpdateEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_delete')),\n {\n title: 'Delete Event',\n description: 'Soft-delete a marketing event by ID.',\n inputSchema: { id: z.string().describe('Event ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteEvent: boolean }>(\n ops.DELETE_EVENT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteEvent, id });\n }),\n );\n\n // ── Event registrations ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get_registration')),\n {\n title: 'Get Event Registration',\n description: 'Fetch a single event registration by ID.',\n inputSchema: { id: z.string().describe('Event registration ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get_registration', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventRegistration: Record<string, unknown> | null;\n }>(ops.GET_EVENT_REGISTRATION, { id });\n if (!data.headshotmarketingEventRegistration) {\n return errorResult(`Event registration ${id} not found`);\n }\n return jsonResult(data.headshotmarketingEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list_registrations')),\n {\n title: 'List Event Registrations',\n description: 'List event registrations with optional event/status/text filters.',\n inputSchema: {\n eventId: z.string().optional().describe('Filter by event ID'),\n status: EventRegistrationStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ eventId, status, search, limit, offset }) =>\n runTool(ctx, 'events_list_registrations', async () => {\n const filter = definedInput({ eventId, status, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventRegistrations: Record<string, unknown>;\n }>(ops.LIST_EVENT_REGISTRATIONS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEventRegistrations);\n }),\n );\n\n const registrationInputSchema = {\n eventId: z.string().describe('Event ID'),\n attendeeName: z.string().min(1).describe('Attendee name'),\n attendeeEmail: z.string().min(1).describe('Attendee email'),\n attendeePhone: z.string().optional().describe('Attendee phone'),\n attendeeCompany: z.string().optional().describe('Attendee company'),\n attendeeTitle: z.string().optional().describe('Attendee title'),\n notes: z.string().optional().describe('Notes'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create_registration')),\n {\n title: 'Create Event Registration',\n description: 'Create a new event registration.',\n inputSchema: registrationInputSchema,\n },\n (args) =>\n runTool(ctx, 'events_create_registration', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEventRegistration: Record<string, unknown>;\n }>(ops.CREATE_EVENT_REGISTRATION, { input });\n return jsonResult(data.headshotmarketingCreateEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_register')),\n {\n title: 'Register For Event',\n description: 'Public-facing registration for an event.',\n inputSchema: registrationInputSchema,\n },\n (args) =>\n runTool(ctx, 'events_register', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRegisterForEvent: Record<string, unknown>;\n }>(ops.REGISTER_FOR_EVENT, { input });\n return jsonResult(data.headshotmarketingRegisterForEvent);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update_registration')),\n {\n title: 'Update Event Registration',\n description: 'Update an event registration. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event registration ID'),\n attendeeName: z.string().optional().describe('Updated attendee name'),\n attendeeEmail: z.string().optional().describe('Updated attendee email'),\n attendeePhone: z.string().optional().describe('Updated attendee phone'),\n attendeeCompany: z.string().optional().describe('Updated attendee company'),\n attendeeTitle: z.string().optional().describe('Updated attendee title'),\n notes: z.string().optional().describe('Updated notes'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update_registration', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEventRegistration: Record<string, unknown>;\n }>(ops.UPDATE_EVENT_REGISTRATION, { id, input });\n return jsonResult(data.headshotmarketingUpdateEventRegistration);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_check_in_attendee')),\n {\n title: 'Check In Attendee',\n description: 'Check in an attendee at an event.',\n inputSchema: { registrationId: z.string().describe('Event registration ID') },\n },\n ({ registrationId }) =>\n runTool(ctx, 'events_check_in_attendee', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCheckInAttendee: Record<string, unknown>;\n }>(ops.CHECK_IN_ATTENDEE, { registrationId });\n return jsonResult(data.headshotmarketingCheckInAttendee);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_cancel_registration')),\n {\n title: 'Cancel Registration',\n description: 'Cancel an event registration.',\n inputSchema: { registrationId: z.string().describe('Event registration ID') },\n },\n ({ registrationId }) =>\n runTool(ctx, 'events_cancel_registration', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCancelRegistration: Record<string, unknown>;\n }>(ops.CANCEL_REGISTRATION, { registrationId });\n return jsonResult(data.headshotmarketingCancelRegistration);\n }),\n );\n\n // ── Event speakers ────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_get_speaker')),\n {\n title: 'Get Event Speaker',\n description: 'Fetch a single event speaker by ID.',\n inputSchema: { id: z.string().describe('Event speaker ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_get_speaker', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventSpeaker: Record<string, unknown> | null;\n }>(ops.GET_EVENT_SPEAKER, { id });\n if (!data.headshotmarketingEventSpeaker)\n return errorResult(`Event speaker ${id} not found`);\n return jsonResult(data.headshotmarketingEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_list_speakers')),\n {\n title: 'List Event Speakers',\n description: 'List event speakers with optional event/text filters.',\n inputSchema: {\n eventId: z.string().optional().describe('Filter by event ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ eventId, search, limit, offset }) =>\n runTool(ctx, 'events_list_speakers', async () => {\n const filter = definedInput({ eventId, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingEventSpeakers: Record<string, unknown>;\n }>(ops.LIST_EVENT_SPEAKERS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingEventSpeakers);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_create_speaker')),\n {\n title: 'Create Event Speaker',\n description: 'Add a speaker to an event. eventId and name are required.',\n inputSchema: {\n eventId: z.string().describe('Event ID'),\n name: z.string().min(1).describe('Speaker name'),\n title: z.string().optional().describe('Speaker title'),\n company: z.string().optional().describe('Company'),\n bio: z.string().optional().describe('Bio'),\n email: z.string().optional().describe('Email'),\n linkedinUrl: z.string().optional().describe('LinkedIn URL'),\n twitterUrl: z.string().optional().describe('Twitter URL'),\n avatarUrl: z.string().optional().describe('Avatar URL'),\n topic: z.string().optional().describe('Talk topic'),\n sortOrder: z.number().int().optional().describe('Sort order'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'events_create_speaker', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateEventSpeaker: Record<string, unknown>;\n }>(ops.CREATE_EVENT_SPEAKER, { input });\n return jsonResult(data.headshotmarketingCreateEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_update_speaker')),\n {\n title: 'Update Event Speaker',\n description: 'Update an event speaker. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Event speaker ID'),\n name: z.string().optional().describe('Updated name'),\n title: z.string().optional().describe('Updated title'),\n company: z.string().optional().describe('Updated company'),\n bio: z.string().optional().describe('Updated bio'),\n email: z.string().optional().describe('Updated email'),\n linkedinUrl: z.string().optional().describe('Updated LinkedIn URL'),\n twitterUrl: z.string().optional().describe('Updated Twitter URL'),\n avatarUrl: z.string().optional().describe('Updated avatar URL'),\n topic: z.string().optional().describe('Updated topic'),\n sortOrder: z.number().int().optional().describe('Updated sort order'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'events_update_speaker', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateEventSpeaker: Record<string, unknown>;\n }>(ops.UPDATE_EVENT_SPEAKER, { id, input });\n return jsonResult(data.headshotmarketingUpdateEventSpeaker);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'events_delete_speaker')),\n {\n title: 'Delete Event Speaker',\n description: 'Soft-delete an event speaker by ID.',\n inputSchema: { id: z.string().describe('Event speaker ID') },\n },\n ({ id }) =>\n runTool(ctx, 'events_delete_speaker', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteEventSpeaker: boolean;\n }>(ops.DELETE_EVENT_SPEAKER, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteEventSpeaker, id });\n }),\n );\n}\n","/**\n * Headshotmarketing SEO tools — keywords, audits, overview.\n *\n * Surface (12):\n * seo_keywords_{get,list,create,update,delete,track}\n * seo_audits_{get,list,create,update,delete,run}\n * seo_overview\n *\n * Keyword + audit list queries take a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SEOKeywordStatusEnum, SEOAuditStatusEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerSeoTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── SEO keywords ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_get_keyword')),\n {\n title: 'Get SEO Keyword',\n description: 'Fetch a single tracked SEO keyword by ID.',\n inputSchema: { id: z.string().describe('SEO keyword ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_get_keyword', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOKeyword: Record<string, unknown> | null;\n }>(ops.GET_SEO_KEYWORD, { id });\n if (!data.headshotmarketingSEOKeyword) return errorResult(`SEO keyword ${id} not found`);\n return jsonResult(data.headshotmarketingSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_list_keywords')),\n {\n title: 'List SEO Keywords',\n description: 'List tracked SEO keywords with optional status/rank/tags/text filters.',\n inputSchema: {\n status: SEOKeywordStatusEnum.optional().describe('Filter by tracking status'),\n minRank: z.number().int().optional().describe('Minimum current rank'),\n maxRank: z.number().int().optional().describe('Maximum current rank'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, minRank, maxRank, tags, search, limit, offset }) =>\n runTool(ctx, 'seo_list_keywords', async () => {\n const filter = definedInput({ status, minRank, maxRank, tags, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOKeywords: Record<string, unknown>;\n }>(ops.LIST_SEO_KEYWORDS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingSEOKeywords);\n }),\n );\n\n const keywordInputSchema = {\n keyword: z.string().min(1).describe('Keyword phrase'),\n url: z.string().optional().describe('Target URL'),\n searchVolume: z.number().int().optional().describe('Monthly search volume'),\n difficulty: z.number().optional().describe('Difficulty score'),\n cpc: z.number().optional().describe('Cost-per-click'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_create_keyword')),\n {\n title: 'Create SEO Keyword',\n description: 'Create a new SEO keyword to track. keyword is required.',\n inputSchema: keywordInputSchema,\n },\n (args) =>\n runTool(ctx, 'seo_create_keyword', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateSEOKeyword: Record<string, unknown>;\n }>(ops.CREATE_SEO_KEYWORD, { input });\n return jsonResult(data.headshotmarketingCreateSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_track_keyword')),\n {\n title: 'Track SEO Keyword',\n description: 'Start tracking a keyword (alias for create with TRACKING status).',\n inputSchema: keywordInputSchema,\n },\n (args) =>\n runTool(ctx, 'seo_track_keyword', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingTrackKeyword: Record<string, unknown>;\n }>(ops.TRACK_KEYWORD, { input });\n return jsonResult(data.headshotmarketingTrackKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_update_keyword')),\n {\n title: 'Update SEO Keyword',\n description: 'Update an SEO keyword. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('SEO keyword ID'),\n keyword: z.string().optional().describe('Updated keyword phrase'),\n url: z.string().optional().describe('Updated target URL'),\n status: SEOKeywordStatusEnum.optional().describe('Updated status'),\n searchVolume: z.number().int().optional().describe('Updated search volume'),\n difficulty: z.number().optional().describe('Updated difficulty'),\n cpc: z.number().optional().describe('Updated CPC'),\n currentRank: z.number().int().optional().describe('Updated current rank'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'seo_update_keyword', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateSEOKeyword: Record<string, unknown>;\n }>(ops.UPDATE_SEO_KEYWORD, { id, input });\n return jsonResult(data.headshotmarketingUpdateSEOKeyword);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_delete_keyword')),\n {\n title: 'Delete SEO Keyword',\n description: 'Soft-delete an SEO keyword by ID.',\n inputSchema: { id: z.string().describe('SEO keyword ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_delete_keyword', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteSEOKeyword: boolean;\n }>(ops.DELETE_SEO_KEYWORD, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteSEOKeyword, id });\n }),\n );\n\n // ── SEO audits ────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_get_audit')),\n {\n title: 'Get SEO Audit',\n description: 'Fetch a single SEO audit by ID.',\n inputSchema: { id: z.string().describe('SEO audit ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_get_audit', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOAudit: Record<string, unknown> | null;\n }>(ops.GET_SEO_AUDIT, { id });\n if (!data.headshotmarketingSEOAudit) return errorResult(`SEO audit ${id} not found`);\n return jsonResult(data.headshotmarketingSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_list_audits')),\n {\n title: 'List SEO Audits',\n description: 'List SEO audits with optional status/url/min-score/text filters.',\n inputSchema: {\n status: SEOAuditStatusEnum.optional().describe('Filter by status'),\n url: z.string().optional().describe('Filter by audited URL'),\n minScore: z.number().optional().describe('Minimum overall score'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, url, minScore, search, limit, offset }) =>\n runTool(ctx, 'seo_list_audits', async () => {\n const filter = definedInput({ status, url, minScore, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOAudits: Record<string, unknown>;\n }>(ops.LIST_SEO_AUDITS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingSEOAudits);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_create_audit')),\n {\n title: 'Create SEO Audit',\n description: 'Create a new SEO audit record for a URL. url is required.',\n inputSchema: {\n url: z.string().min(1).describe('URL to audit'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n ({ url, metadata }) =>\n runTool(ctx, 'seo_create_audit', async () => {\n const input = definedInput({ url, metadata });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateSEOAudit: Record<string, unknown>;\n }>(ops.CREATE_SEO_AUDIT, { input });\n return jsonResult(data.headshotmarketingCreateSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_update_audit')),\n {\n title: 'Update SEO Audit',\n description: 'Update an SEO audit. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('SEO audit ID'),\n url: z.string().optional().describe('Updated URL'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'seo_update_audit', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateSEOAudit: Record<string, unknown>;\n }>(ops.UPDATE_SEO_AUDIT, { id, input });\n return jsonResult(data.headshotmarketingUpdateSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_delete_audit')),\n {\n title: 'Delete SEO Audit',\n description: 'Soft-delete an SEO audit by ID.',\n inputSchema: { id: z.string().describe('SEO audit ID') },\n },\n ({ id }) =>\n runTool(ctx, 'seo_delete_audit', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteSEOAudit: boolean }>(\n ops.DELETE_SEO_AUDIT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteSEOAudit, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_run_audit')),\n {\n title: 'Run SEO Audit',\n description: 'Run an SEO audit for a given URL (creates and executes an audit).',\n inputSchema: { url: z.string().min(1).describe('URL to audit') },\n },\n ({ url }) =>\n runTool(ctx, 'seo_run_audit', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRunSEOAudit: Record<string, unknown>;\n }>(ops.RUN_SEO_AUDIT, { url });\n return jsonResult(data.headshotmarketingRunSEOAudit);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'seo_overview')),\n {\n title: 'SEO Overview',\n description:\n 'Aggregated SEO overview metrics: keyword/audit counts, avg scores, rank movement.',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'seo_overview', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingSEOOverview: Record<string, unknown>;\n }>(ops.SEO_OVERVIEW, {});\n return jsonResult(data.headshotmarketingSEOOverview);\n }),\n );\n}\n","/**\n * Headshotmarketing landing-page builder tools.\n *\n * Surface (12):\n * landing_pages_{get,get_by_slug,list,create,update,delete,publish,unpublish}\n * landing_page_sections_{add,update,remove,reorder}\n *\n * The list query takes a separate `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { LandingPageStatusEnum, LandingPageSectionTypeEnum, JsonObject } from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerLandingPageTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Landing pages ──────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_get')),\n {\n title: 'Get Landing Page',\n description: 'Fetch a single landing page (with sections) by ID.',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPage: Record<string, unknown> | null;\n }>(ops.GET_LANDING_PAGE, { id });\n if (!data.headshotmarketingLandingPage) return errorResult(`Landing page ${id} not found`);\n return jsonResult(data.headshotmarketingLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_get_by_slug')),\n {\n title: 'Get Landing Page By Slug',\n description: 'Fetch a single landing page (with sections) by its slug.',\n inputSchema: { slug: z.string().describe('Landing page slug') },\n },\n ({ slug }) =>\n runTool(ctx, 'landing_pages_get_by_slug', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPageBySlug: Record<string, unknown> | null;\n }>(ops.GET_LANDING_PAGE_BY_SLUG, { slug });\n if (!data.headshotmarketingLandingPageBySlug) {\n return errorResult(`Landing page with slug '${slug}' not found`);\n }\n return jsonResult(data.headshotmarketingLandingPageBySlug);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_list')),\n {\n title: 'List Landing Pages',\n description: 'List landing pages with optional status/campaign/text filters.',\n inputSchema: {\n status: LandingPageStatusEnum.optional().describe('Filter by status'),\n campaignId: z.string().optional().describe('Filter by campaign ID'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, campaignId, search, limit, offset }) =>\n runTool(ctx, 'landing_pages_list', async () => {\n const filter = definedInput({ status, campaignId, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingLandingPages: Record<string, unknown>;\n }>(ops.LIST_LANDING_PAGES, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingLandingPages);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_create')),\n {\n title: 'Create Landing Page',\n description: 'Create a new landing page. title and slug are required.',\n inputSchema: {\n title: z.string().min(1).describe('Page title'),\n slug: z.string().min(1).describe('URL slug'),\n description: z.string().optional().describe('Description'),\n campaignId: z.string().optional().describe('Associated campaign ID'),\n templateId: z.string().optional().describe('Template ID'),\n seoTitle: z.string().optional().describe('SEO title'),\n seoDescription: z.string().optional().describe('SEO description'),\n ogImageUrl: z.string().optional().describe('Open Graph image URL'),\n faviconUrl: z.string().optional().describe('Favicon URL'),\n customCss: z.string().optional().describe('Custom CSS'),\n customJs: z.string().optional().describe('Custom JS'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'landing_pages_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateLandingPage: Record<string, unknown>;\n }>(ops.CREATE_LANDING_PAGE, { input });\n return jsonResult(data.headshotmarketingCreateLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_update')),\n {\n title: 'Update Landing Page',\n description: 'Update a landing page. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Landing page ID'),\n title: z.string().optional().describe('Updated title'),\n slug: z.string().optional().describe('Updated slug'),\n status: LandingPageStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n campaignId: z.string().optional().describe('Updated campaign ID'),\n templateId: z.string().optional().describe('Updated template ID'),\n seoTitle: z.string().optional().describe('Updated SEO title'),\n seoDescription: z.string().optional().describe('Updated SEO description'),\n ogImageUrl: z.string().optional().describe('Updated OG image URL'),\n faviconUrl: z.string().optional().describe('Updated favicon URL'),\n customCss: z.string().optional().describe('Updated custom CSS'),\n customJs: z.string().optional().describe('Updated custom JS'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'landing_pages_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateLandingPage: Record<string, unknown>;\n }>(ops.UPDATE_LANDING_PAGE, { id, input });\n return jsonResult(data.headshotmarketingUpdateLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_delete')),\n {\n title: 'Delete Landing Page',\n description: 'Soft-delete a landing page by ID.',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_delete', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteLandingPage: boolean;\n }>(ops.DELETE_LANDING_PAGE, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteLandingPage, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_publish')),\n {\n title: 'Publish Landing Page',\n description: 'Publish a landing page (sets status to PUBLISHED and records publishedAt).',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_publish', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingPublishLandingPage: Record<string, unknown>;\n }>(ops.PUBLISH_LANDING_PAGE, { id });\n return jsonResult(data.headshotmarketingPublishLandingPage);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_unpublish')),\n {\n title: 'Unpublish Landing Page',\n description: 'Unpublish a landing page (sets status back to DRAFT).',\n inputSchema: { id: z.string().describe('Landing page ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_unpublish', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUnpublishLandingPage: Record<string, unknown>;\n }>(ops.UNPUBLISH_LANDING_PAGE, { id });\n return jsonResult(data.headshotmarketingUnpublishLandingPage);\n }),\n );\n\n // ── Landing-page sections ─────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_add_section')),\n {\n title: 'Add Landing Page Section',\n description: 'Add a section to a landing page. landingPageId and type are required.',\n inputSchema: {\n landingPageId: z.string().describe('Landing page ID'),\n type: LandingPageSectionTypeEnum.describe('Section type'),\n title: z.string().optional().describe('Section title'),\n subtitle: z.string().optional().describe('Section subtitle'),\n content: JsonObject.optional().describe('Section content JSON'),\n settings: JsonObject.optional().describe('Section settings JSON'),\n backgroundColor: z.string().optional().describe('Background color'),\n backgroundImageUrl: z.string().optional().describe('Background image URL'),\n isVisible: z.boolean().optional().describe('Whether the section is visible'),\n sortOrder: z.number().int().optional().describe('Sort order'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'landing_pages_add_section', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingAddLandingPageSection: Record<string, unknown>;\n }>(ops.ADD_LANDING_PAGE_SECTION, { input });\n return jsonResult(data.headshotmarketingAddLandingPageSection);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_update_section')),\n {\n title: 'Update Landing Page Section',\n description: 'Update a landing-page section. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Section ID'),\n type: LandingPageSectionTypeEnum.optional().describe('Updated section type'),\n title: z.string().optional().describe('Updated title'),\n subtitle: z.string().optional().describe('Updated subtitle'),\n content: JsonObject.optional().describe('Updated content JSON'),\n settings: JsonObject.optional().describe('Updated settings JSON'),\n backgroundColor: z.string().optional().describe('Updated background color'),\n backgroundImageUrl: z.string().optional().describe('Updated background image URL'),\n isVisible: z.boolean().optional().describe('Updated visibility'),\n sortOrder: z.number().int().optional().describe('Updated sort order'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'landing_pages_update_section', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateLandingPageSection: Record<string, unknown>;\n }>(ops.UPDATE_LANDING_PAGE_SECTION, { id, input });\n return jsonResult(data.headshotmarketingUpdateLandingPageSection);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_remove_section')),\n {\n title: 'Remove Landing Page Section',\n description: 'Remove a section from a landing page by ID.',\n inputSchema: { id: z.string().describe('Section ID') },\n },\n ({ id }) =>\n runTool(ctx, 'landing_pages_remove_section', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRemoveLandingPageSection: boolean;\n }>(ops.REMOVE_LANDING_PAGE_SECTION, { id });\n return jsonResult({ removed: data.headshotmarketingRemoveLandingPageSection, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'landing_pages_reorder_sections')),\n {\n title: 'Reorder Landing Page Sections',\n description: 'Reorder sections within a landing page. Returns the updated landing page.',\n inputSchema: {\n landingPageId: z.string().describe('Landing page ID'),\n sectionIds: z\n .array(z.string())\n .describe('Ordered list of section IDs in the desired order'),\n },\n },\n ({ landingPageId, sectionIds }) =>\n runTool(ctx, 'landing_pages_reorder_sections', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReorderLandingPageSections: Record<string, unknown>;\n }>(ops.REORDER_LANDING_PAGE_SECTIONS, { input: { landingPageId, sectionIds } });\n return jsonResult(data.headshotmarketingReorderLandingPageSections);\n }),\n );\n}\n","/**\n * Headshotmarketing automation tools — workflows + executions.\n *\n * Surface (9):\n * workflows_{get,list,create,update,delete,trigger}\n * workflow_executions_{get,list,cancel}\n *\n * Both list queries carry limit/offset inside their filter inputs.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n WorkflowStatusEnum,\n WorkflowTriggerTypeEnum,\n WorkflowExecutionStatusEnum,\n JsonObject,\n} from './shared.js';\nimport { runTool, definedInput, filterWithPaging } from './helpers.js';\n\nexport function registerWorkflowTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Workflows ───────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_get')),\n {\n title: 'Get Workflow',\n description: 'Fetch a single automation workflow by ID.',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflow: Record<string, unknown> | null;\n }>(ops.GET_WORKFLOW, { id });\n if (!data.headshotmarketingWorkflow) return errorResult(`Workflow ${id} not found`);\n return jsonResult(data.headshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list')),\n {\n title: 'List Workflows',\n description: 'List automation workflows with optional status/trigger/enabled/text filters.',\n inputSchema: {\n status: WorkflowStatusEnum.optional().describe('Filter by status'),\n triggerType: WorkflowTriggerTypeEnum.optional().describe('Filter by trigger type'),\n isEnabled: z.boolean().optional().describe('Filter by enabled flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ status, triggerType, isEnabled, search, limit, offset }) =>\n runTool(ctx, 'workflows_list', async () => {\n const filter = filterWithPaging({ status, triggerType, isEnabled, search }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflows: Record<string, unknown>;\n }>(ops.LIST_WORKFLOWS, { filter });\n return jsonResult(data.headshotmarketingWorkflows);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_create')),\n {\n title: 'Create Workflow',\n description: 'Create a new automation workflow. name, triggerType and steps are required.',\n inputSchema: {\n name: z.string().min(1).describe('Workflow name'),\n triggerType: WorkflowTriggerTypeEnum.describe('Trigger type'),\n steps: z.union([JsonObject, z.array(z.unknown())]).describe('Workflow steps JSON'),\n description: z.string().optional().describe('Description'),\n status: WorkflowStatusEnum.optional().describe('Initial status'),\n isEnabled: z.boolean().optional().describe('Whether the workflow is enabled'),\n triggerConfig: JsonObject.optional().describe('Trigger configuration JSON'),\n variables: JsonObject.optional().describe('Workflow variables JSON'),\n maxRetries: z.number().int().optional().describe('Max retries'),\n timeoutSeconds: z.number().int().optional().describe('Timeout in seconds'),\n tags: z.array(z.string()).optional().describe('Tags'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'workflows_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n createHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.CREATE_WORKFLOW, { input });\n return jsonResult(data.createHeadshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_update')),\n {\n title: 'Update Workflow',\n description: 'Update a workflow. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Workflow ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n status: WorkflowStatusEnum.optional().describe('Updated status'),\n triggerType: WorkflowTriggerTypeEnum.optional().describe('Updated trigger type'),\n steps: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated steps JSON'),\n isEnabled: z.boolean().optional().describe('Updated enabled flag'),\n triggerConfig: JsonObject.optional().describe('Updated trigger config JSON'),\n variables: JsonObject.optional().describe('Updated variables JSON'),\n maxRetries: z.number().int().optional().describe('Updated max retries'),\n timeoutSeconds: z.number().int().optional().describe('Updated timeout seconds'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'workflows_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n updateHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.UPDATE_WORKFLOW, { id, input });\n return jsonResult(data.updateHeadshotmarketingWorkflow);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_delete')),\n {\n title: 'Delete Workflow',\n description: 'Soft-delete a workflow by ID.',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_delete', async () => {\n const data = await ctx.gql.workspace.request<{ deleteHeadshotmarketingWorkflow: boolean }>(\n ops.DELETE_WORKFLOW,\n { id },\n );\n return jsonResult({ deleted: data.deleteHeadshotmarketingWorkflow, id });\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_trigger')),\n {\n title: 'Trigger Workflow',\n description: 'Trigger a workflow execution manually. Returns the execution record.',\n inputSchema: {\n workflowId: z.string().describe('Workflow ID to trigger'),\n inputData: JsonObject.optional().describe('Execution input data JSON'),\n },\n },\n ({ workflowId, inputData }) =>\n runTool(ctx, 'workflows_trigger', async () => {\n const input = definedInput({ workflowId, inputData });\n const data = await ctx.gql.workspace.request<{\n triggerHeadshotmarketingWorkflow: Record<string, unknown>;\n }>(ops.TRIGGER_WORKFLOW, { input });\n return jsonResult(data.triggerHeadshotmarketingWorkflow);\n }),\n );\n\n // ── Workflow executions ───────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_get_execution')),\n {\n title: 'Get Workflow Execution',\n description: 'Fetch a single workflow execution by ID.',\n inputSchema: { id: z.string().describe('Workflow execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_get_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflowExecution: Record<string, unknown> | null;\n }>(ops.GET_WORKFLOW_EXECUTION, { id });\n if (!data.headshotmarketingWorkflowExecution) {\n return errorResult(`Workflow execution ${id} not found`);\n }\n return jsonResult(data.headshotmarketingWorkflowExecution);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list_executions')),\n {\n title: 'List Workflow Executions',\n description: 'List workflow executions with optional workflow/status filters.',\n inputSchema: {\n workflowId: z.string().optional().describe('Filter by workflow ID'),\n status: WorkflowExecutionStatusEnum.optional().describe('Filter by status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ workflowId, status, limit, offset }) =>\n runTool(ctx, 'workflows_list_executions', async () => {\n const filter = filterWithPaging({ workflowId, status }, limit, offset);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingWorkflowExecutions: Record<string, unknown>;\n }>(ops.LIST_WORKFLOW_EXECUTIONS, { filter });\n return jsonResult(data.headshotmarketingWorkflowExecutions);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_cancel_execution')),\n {\n title: 'Cancel Workflow Execution',\n description: 'Cancel a running workflow execution.',\n inputSchema: { id: z.string().describe('Workflow execution ID') },\n },\n ({ id }) =>\n runTool(ctx, 'workflows_cancel_execution', async () => {\n const data = await ctx.gql.workspace.request<{\n cancelHeadshotmarketingWorkflowExecution: Record<string, unknown>;\n }>(ops.CANCEL_WORKFLOW_EXECUTION, { id });\n return jsonResult(data.cancelHeadshotmarketingWorkflowExecution);\n }),\n );\n}\n","/**\n * Headshotmarketing analytics tools.\n *\n * Surface (17):\n * dashboards_metrics, content_performance, dashboards_funnel_data, dashboards_time_series_data\n * campaigns_analytics, campaigns_record_analytics\n * dashboards_channel_performance, dashboards_record_channel_performance\n * dashboard_configs_{get,list,create,update,delete}\n * reports_{get,list,create,update,delete}\n *\n * dashboard_configs + reports list queries take a separate\n * `pagination: PaginationInput` arg.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n MetricTypeEnum,\n DateRangePresetEnum,\n ReportStatusEnum,\n ReportTypeEnum,\n DateRange,\n JsonObject,\n IsoDateTime,\n} from './shared.js';\nimport { runTool, definedInput, pagination } from './helpers.js';\n\nexport function registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Aggregate analytics ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_metrics')),\n {\n title: 'Dashboard Metrics',\n description: 'Aggregated dashboard KPIs (impressions, clicks, conversions, revenue, ROAS).',\n inputSchema: {\n dateRange: DateRange.optional().describe('Optional { start, end } date range'),\n },\n },\n ({ dateRange }) =>\n runTool(ctx, 'dashboards_metrics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardMetrics: Record<string, unknown>;\n }>(ops.DASHBOARD_METRICS, { dateRange });\n return jsonResult(data.headshotmarketingDashboardMetrics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'content_performance')),\n {\n title: 'Content Performance',\n description:\n 'Aggregated content performance metrics (item/asset/AI-execution counts, scores).',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'content_performance', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingContentPerformance: Record<string, unknown>;\n }>(ops.CONTENT_PERFORMANCE, {});\n return jsonResult(data.headshotmarketingContentPerformance);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_funnel_data')),\n {\n title: 'Funnel Data',\n description: 'Get marketing funnel stage data (counts, values, conversion + drop-off rates).',\n inputSchema: {},\n },\n () =>\n runTool(ctx, 'dashboards_funnel_data', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingFunnelData: Array<Record<string, unknown>>;\n }>(ops.FUNNEL_DATA, {});\n return jsonResult(data.headshotmarketingFunnelData);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_time_series_data')),\n {\n title: 'Time Series Data',\n description: 'Get time-series data for a specific metric over a date range.',\n inputSchema: {\n metric: MetricTypeEnum.describe('The metric to chart'),\n dateRange: DateRange.describe('{ start, end } date range'),\n },\n },\n ({ metric, dateRange }) =>\n runTool(ctx, 'dashboards_time_series_data', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingTimeSeriesData: Record<string, unknown>;\n }>(ops.TIME_SERIES_DATA, { metric, dateRange });\n return jsonResult(data.headshotmarketingTimeSeriesData);\n }),\n );\n\n // ── Campaign analytics ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_analytics')),\n {\n title: 'Campaign Analytics',\n description: 'Get analytics rows for a specific campaign over an optional date range.',\n inputSchema: {\n campaignId: z.string().describe('Campaign ID'),\n dateRange: DateRange.optional().describe('Optional { start, end } date range'),\n },\n },\n ({ campaignId, dateRange }) =>\n runTool(ctx, 'campaigns_analytics', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCampaignAnalytics: Record<string, unknown>;\n }>(ops.CAMPAIGN_ANALYTICS, { campaignId, dateRange });\n return jsonResult(data.headshotmarketingCampaignAnalytics);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'campaigns_record_analytics')),\n {\n title: 'Record Campaign Analytics',\n description: 'Record a campaign analytics data point.',\n inputSchema: {\n campaignId: z.string().describe('Campaign ID'),\n date: IsoDateTime.describe('Analytics date'),\n impressions: z.number().int().describe('Impressions'),\n clicks: z.number().int().describe('Clicks'),\n conversions: z.number().int().describe('Conversions'),\n cost: z.number().describe('Cost'),\n revenue: z.number().describe('Revenue'),\n leads: z.number().int().optional().describe('Leads'),\n engagementRate: z.number().optional().describe('Engagement rate'),\n bounceRate: z.number().optional().describe('Bounce rate'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'campaigns_record_analytics', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRecordCampaignAnalytics: Record<string, unknown>;\n }>(ops.RECORD_CAMPAIGN_ANALYTICS, { input });\n return jsonResult(data.headshotmarketingRecordCampaignAnalytics);\n }),\n );\n\n // ── Channel performance ────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_channel_performance')),\n {\n title: 'Channel Performance',\n description: 'Get channel performance data for a date range.',\n inputSchema: { dateRange: DateRange.describe('{ start, end } date range') },\n },\n ({ dateRange }) =>\n runTool(ctx, 'dashboards_channel_performance', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingChannelPerformance: Record<string, unknown>;\n }>(ops.CHANNEL_PERFORMANCE, { dateRange });\n return jsonResult(data.headshotmarketingChannelPerformance);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_record_channel_performance')),\n {\n title: 'Record Channel Performance',\n description: 'Record a channel performance data point.',\n inputSchema: {\n channel: z.string().describe('Channel name'),\n date: IsoDateTime.describe('Performance date'),\n impressions: z.number().int().describe('Impressions'),\n clicks: z.number().int().describe('Clicks'),\n conversions: z.number().int().describe('Conversions'),\n cost: z.number().describe('Cost'),\n revenue: z.number().describe('Revenue'),\n leads: z.number().int().optional().describe('Leads'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'dashboards_record_channel_performance', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingRecordChannelPerformance: Record<string, unknown>;\n }>(ops.RECORD_CHANNEL_PERFORMANCE, { input });\n return jsonResult(data.headshotmarketingRecordChannelPerformance);\n }),\n );\n\n // ── Dashboard configs ─────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_get_config')),\n {\n title: 'Get Dashboard Config',\n description: 'Fetch a single dashboard configuration by ID.',\n inputSchema: { id: z.string().describe('Dashboard config ID') },\n },\n ({ id }) =>\n runTool(ctx, 'dashboards_get_config', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardConfig: Record<string, unknown> | null;\n }>(ops.GET_DASHBOARD_CONFIG, { id });\n if (!data.headshotmarketingDashboardConfig) {\n return errorResult(`Dashboard config ${id} not found`);\n }\n return jsonResult(data.headshotmarketingDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_list_configs')),\n {\n title: 'List Dashboard Configs',\n description: 'List dashboard configurations with optional default/text filters.',\n inputSchema: {\n isDefault: z.boolean().optional().describe('Filter by default flag'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ isDefault, search, limit, offset }) =>\n runTool(ctx, 'dashboards_list_configs', async () => {\n const filter = definedInput({ isDefault, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardConfigs: Record<string, unknown>;\n }>(ops.LIST_DASHBOARD_CONFIGS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingDashboardConfigs);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_create_config')),\n {\n title: 'Create Dashboard Config',\n description: 'Create a new dashboard configuration. name, layout and widgets are required.',\n inputSchema: {\n name: z.string().min(1).describe('Config name'),\n layout: JsonObject.describe('Layout JSON'),\n widgets: z.union([JsonObject, z.array(z.unknown())]).describe('Widgets JSON'),\n description: z.string().optional().describe('Description'),\n filters: JsonObject.optional().describe('Default filters JSON'),\n dateRangePreset: DateRangePresetEnum.optional().describe('Default date-range preset'),\n isDefault: z.boolean().optional().describe('Whether this is the default dashboard'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'dashboards_create_config', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateDashboardConfig: Record<string, unknown>;\n }>(ops.CREATE_DASHBOARD_CONFIG, { input });\n return jsonResult(data.headshotmarketingCreateDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_update_config')),\n {\n title: 'Update Dashboard Config',\n description: 'Update a dashboard configuration. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Dashboard config ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n layout: JsonObject.optional().describe('Updated layout JSON'),\n widgets: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated widgets JSON'),\n filters: JsonObject.optional().describe('Updated filters JSON'),\n dateRangePreset: DateRangePresetEnum.optional().describe('Updated date-range preset'),\n isDefault: z.boolean().optional().describe('Updated default flag'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'dashboards_update_config', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateDashboardConfig: Record<string, unknown>;\n }>(ops.UPDATE_DASHBOARD_CONFIG, { id, input });\n return jsonResult(data.headshotmarketingUpdateDashboardConfig);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'dashboards_delete_config')),\n {\n title: 'Delete Dashboard Config',\n description: 'Soft-delete a dashboard configuration by ID.',\n inputSchema: { id: z.string().describe('Dashboard config ID') },\n },\n ({ id }) =>\n runTool(ctx, 'dashboards_delete_config', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDeleteDashboardConfig: boolean;\n }>(ops.DELETE_DASHBOARD_CONFIG, { id });\n return jsonResult({ deleted: data.headshotmarketingDeleteDashboardConfig, id });\n }),\n );\n\n // ── Reports ─────────────────────────────────────────────────────────────────\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_get')),\n {\n title: 'Get Report',\n description: 'Fetch a single analytics report by ID.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n ({ id }) =>\n runTool(ctx, 'reports_get', async () => {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReport: Record<string, unknown> | null;\n }>(ops.GET_REPORT, { id });\n if (!data.headshotmarketingReport) return errorResult(`Report ${id} not found`);\n return jsonResult(data.headshotmarketingReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_list')),\n {\n title: 'List Reports',\n description: 'List analytics reports with optional type/status/text filters.',\n inputSchema: {\n type: ReportTypeEnum.optional().describe('Filter by report type'),\n status: ReportStatusEnum.optional().describe('Filter by status'),\n search: z.string().optional().describe('Free-text search'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n ({ type, status, search, limit, offset }) =>\n runTool(ctx, 'reports_list', async () => {\n const filter = definedInput({ type, status, search });\n const data = await ctx.gql.workspace.request<{\n headshotmarketingReports: Record<string, unknown>;\n }>(ops.LIST_REPORTS, { filter, pagination: pagination(limit, offset) });\n return jsonResult(data.headshotmarketingReports);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_create')),\n {\n title: 'Create Report',\n description: 'Create a new analytics report. name and type are required.',\n inputSchema: {\n name: z.string().min(1).describe('Report name'),\n type: ReportTypeEnum.describe('Report type'),\n description: z.string().optional().describe('Description'),\n configuration: JsonObject.optional().describe('Report configuration JSON'),\n dateRangeStart: IsoDateTime.optional().describe('Date range start'),\n dateRangeEnd: IsoDateTime.optional().describe('Date range end'),\n scheduleExpression: z.string().optional().describe('Cron/schedule expression'),\n metadata: JsonObject.optional().describe('Flexible metadata JSON'),\n },\n },\n (args) =>\n runTool(ctx, 'reports_create', async () => {\n const input = definedInput(args);\n const data = await ctx.gql.workspace.request<{\n headshotmarketingCreateReport: Record<string, unknown>;\n }>(ops.CREATE_REPORT, { input });\n return jsonResult(data.headshotmarketingCreateReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_update')),\n {\n title: 'Update Report',\n description: 'Update an analytics report. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Report ID'),\n name: z.string().optional().describe('Updated name'),\n type: ReportTypeEnum.optional().describe('Updated type'),\n status: ReportStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n configuration: JsonObject.optional().describe('Updated configuration JSON'),\n dateRangeStart: IsoDateTime.optional().describe('Updated date range start'),\n dateRangeEnd: IsoDateTime.optional().describe('Updated date range end'),\n scheduleExpression: z.string().optional().describe('Updated schedule expression'),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n },\n },\n ({ id, ...rest }) =>\n runTool(ctx, 'reports_update', async () => {\n const input = definedInput(rest);\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable field');\n }\n const data = await ctx.gql.workspace.request<{\n headshotmarketingUpdateReport: Record<string, unknown>;\n }>(ops.UPDATE_REPORT, { id, input });\n return jsonResult(data.headshotmarketingUpdateReport);\n }),\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_delete')),\n {\n title: 'Delete Report',\n description: 'Soft-delete an analytics report by ID.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n ({ id }) =>\n runTool(ctx, 'reports_delete', async () => {\n const data = await ctx.gql.workspace.request<{ headshotmarketingDeleteReport: boolean }>(\n ops.DELETE_REPORT,\n { id },\n );\n return jsonResult({ deleted: data.headshotmarketingDeleteReport, id });\n }),\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { DASHBOARD_METRICS, SEO_OVERVIEW, LIST_CAMPAIGNS } from './operations.js';\n\n/**\n * Read-only Headshotmarketing MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerHeadshotmarketingResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const dashboardUri = track(mcpResourceUri(ctx.productName, 'dashboard'));\n const seoUri = track(mcpResourceUri(ctx.productName, 'seo'));\n const campaignsUri = track(mcpResourceUri(ctx.productName, 'campaigns'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'headshotmarketing-schema',\n schemaUri,\n {\n title: 'Headshotmarketing Domain Schema',\n description:\n 'Overview of the Headshotmarketing marketing-operations domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Headshotmarketing Domain (Overview)\n\nEnd-to-end marketing operations platform. All operations are workspace-scoped\n(WORKSPACE gateway); there is no public health probe (schema exposes only _empty).\n\n## Entity groups → tool prefixes\n- campaigns, campaign_templates (marketing campaigns + reusable templates)\n- contacts (+ contact_activities) (CRM contacts)\n- leads (+ deals_convert_lead) (CRM leads → deals)\n- deals, pipelines, pipeline_stages (sales pipeline)\n- content_items, assets, ai_tools, ai_tool_executions (content studio)\n- social_accounts, social_posts (social publishing) + social_metrics\n- ad_campaigns, ad_creatives, audiences (paid ads) + ads_metrics\n- influencers, influencer_campaigns, influencer_relationships\n- events, event_registrations, event_speakers\n- seo_keywords, seo_audits (+ seo_overview)\n- landing_pages, landing_page_sections (page builder)\n- workflows, workflow_executions (automation)\n- analytics: dashboards_metrics, content_performance, dashboards_funnel_data, dashboards_time_series_data,\n campaigns_analytics, dashboards_channel_performance, reports, dashboard_configs\n\n## Notable enums\n- CampaignType: AD, CONTENT, EMAIL, EVENT, INFLUENCER, MULTI_CHANNEL, SOCIAL\n- LeadStatus: NEW, CONTACTED, QUALIFIED, UNQUALIFIED, CONVERTED, LOST\n- DealStatus: OPEN, WON, LOST, STALE\n- InfluencerTier: NANO, MICRO, MID, MACRO, MEGA, CELEBRITY\n- SocialPlatform: FACEBOOK, INSTAGRAM, LINKEDIN, PINTEREST, TIKTOK, TWITTER, YOUTUBE\n- AdPlatform: FACEBOOK_ADS, GOOGLE_ADS, INSTAGRAM_ADS, LINKEDIN_ADS, TIKTOK_ADS, TWITTER_ADS\n- WorkflowTriggerType: MANUAL, SCHEDULE, EVENT, WEBHOOK, CONDITION\n\n## Naming note\nRoot fields are inconsistently prefixed: some are headshotmarketing<Verb><Entity>\n(e.g. headshotmarketingCreateContentItem) and others <verb>Headshotmarketing<Entity>\n(e.g. createHeadshotmarketingCampaign). The tools call each by its real name.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://dashboard — headline KPIs\n server.registerResource(\n 'headshotmarketing-dashboard',\n dashboardUri,\n {\n title: 'Headshotmarketing Dashboard Metrics',\n description:\n 'Live aggregated dashboard KPIs (impressions, clicks, conversions, revenue, ROAS).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${dashboardUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{\n headshotmarketingDashboardMetrics: unknown;\n }>(DASHBOARD_METRICS, {});\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify(data.headshotmarketingDashboardMetrics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://seo — SEO overview\n server.registerResource(\n 'headshotmarketing-seo',\n seoUri,\n {\n title: 'Headshotmarketing SEO Overview',\n description: 'Aggregated SEO overview (keyword/audit counts, avg scores, rank movement).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${seoUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ headshotmarketingSEOOverview: unknown }>(\n SEO_OVERVIEW,\n {},\n );\n return {\n contents: [\n {\n uri: seoUri,\n text: JSON.stringify(data.headshotmarketingSEOOverview, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: seoUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://campaigns — campaign directory\n server.registerResource(\n 'headshotmarketing-campaigns',\n campaignsUri,\n {\n title: 'Headshotmarketing Campaign Directory',\n description: 'The first 50 marketing campaigns in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${campaignsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ headshotmarketingCampaigns: unknown }>(\n LIST_CAMPAIGNS,\n { filter: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: campaignsUri,\n text: JSON.stringify(data.headshotmarketingCampaigns, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: campaignsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Headshotmarketing MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerHeadshotmarketingPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const launchName = track(mcpPromptName(p, 'campaign-launch'));\n const pipelineName = track(mcpPromptName(p, 'pipeline-ops'));\n\n // <product>-campaign-launch — stand up and launch a multi-channel campaign\n server.registerPrompt(\n launchName,\n {\n title: 'Campaign Launch',\n description:\n 'Guide for launching a Headshotmarketing campaign end to end: create the campaign, attach audiences/ad creatives/social posts/content, then activate and watch KPIs.',\n argsSchema: {\n name: z.string().optional().describe('Campaign name'),\n type: z.string().optional().describe('Campaign type/channel'),\n },\n },\n ({ name, type }) => {\n ctx.logger.debug(`Prompt ${launchName} called`, { name, type });\n const nameNote = name\n ? `Use the campaign name \"${name}\".`\n : 'Ask the user for the campaign name.';\n const typeNote = type ? `Use type ${type}.` : 'Help the user pick a CampaignType.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me launch a new Headshotmarketing campaign.\n\n1. **Create Campaign**: Use ${p}_campaigns_create. ${nameNote} ${typeNote} Set a budget and start/end dates.\n2. **Audience**: Use ${p}_audiences_create (or ${p}_audiences_list) to define/choose the target audience.\n3. **Channels** (as relevant to the type):\n - Paid: ${p}_ad_campaigns_create + ${p}_ad_creatives_create.\n - Social: ${p}_social_posts_create then ${p}_social_posts_schedule.\n - Content: ${p}_content_items_create (optionally generate copy with ${p}_ai_tools_execute).\n - Influencer: ${p}_influencers_discover then ${p}_influencer_campaigns_create.\n - Event: ${p}_events_create + ${p}_event_speakers_create.\n4. **Landing page** (optional): ${p}_landing_pages_create + ${p}_landing_page_sections_add, then ${p}_landing_pages_publish.\n5. **Activate**: ${p}_campaigns_update with status=ACTIVE.\n6. **Measure**: ${p}_dashboard_metrics and ${p}_campaign_analytics for the new campaignId.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-pipeline-ops — daily CRM/pipeline operations\n server.registerPrompt(\n pipelineName,\n {\n title: 'Pipeline Operations',\n description:\n 'Daily CRM + sales-pipeline workflow: triage new leads, convert qualified ones to deals, advance deals through stages, and review the funnel.',\n argsSchema: {\n pipelineId: z.string().optional().describe('Pipeline ID to operate'),\n },\n },\n ({ pipelineId }) => {\n ctx.logger.debug(`Prompt ${pipelineName} called`, { pipelineId });\n const pipelineNote = pipelineId\n ? `Operate pipeline \"${pipelineId}\".`\n : `First list pipelines with ${p}_pipelines_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Headshotmarketing pipeline operations. ${pipelineNote}\n\n1. **New leads**: Use ${p}_leads_list filtered by status=NEW. Qualify with ${p}_leads_update (status=QUALIFIED).\n2. **Convert**: For qualified leads use ${p}_leads_convert (provide pipelineId, stageId, dealTitle) to create deals.\n3. **Advance deals**: Use ${p}_deals_list for the pipeline; move forward with ${p}_deals_move (stageId) and close with ${p}_deals_update (status=WON/LOST).\n4. **Overview**: Use ${p}_pipelines_overview for per-stage counts/values and ${p}_funnel_data for the marketing funnel.\n5. **Follow-ups**: Log activities via ${p}_contact_activities_list to see recent contact interactions.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Headshotmarketing module — domain module for the future-products ecosystem program.\n *\n * Covers every collection of wspace-headshotmarketing-svc grouped into\n * per-entity sub-APIs: campaigns, contacts, leads, deals/pipelines,\n * content (content items/assets/AI tools), social, paid ads/audiences,\n * influencers, events, SEO, landing-page builder, workflows, and analytics.\n * Mirrors the kadaikodi / crewfoundry modules' structure (tools/<group>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/headshotmarketing/wspace-headshotmarketing-svc/\n * (Hive service name `headshotmarketing`). All operations run against the\n * WORKSPACE gateway. The schema exposes only `_empty` at the roots (no public\n * health probe), so this module registers NO health tool.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerCampaignTools } from './tools/campaigns.js';\nimport { registerContactTools } from './tools/contacts.js';\nimport { registerLeadTools } from './tools/leads.js';\nimport { registerDealTools } from './tools/deals.js';\nimport { registerContentTools } from './tools/content.js';\nimport { registerSocialTools } from './tools/social.js';\nimport { registerAdTools } from './tools/ads.js';\nimport { registerInfluencerTools } from './tools/influencers.js';\nimport { registerEventTools } from './tools/events.js';\nimport { registerSeoTools } from './tools/seo.js';\nimport { registerLandingPageTools } from './tools/landing_pages.js';\nimport { registerWorkflowTools } from './tools/workflows.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerHeadshotmarketingResources } from './resources.js';\nimport { registerHeadshotmarketingPrompts } from './prompts.js';\n\nconst headshotmarketingModule: McpModule = {\n id: 'headshotmarketing',\n version: '0.0.1',\n displayName: 'Headshotmarketing',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerCampaignTools(server, ctx, trackTool);\n registerContactTools(server, ctx, trackTool);\n registerLeadTools(server, ctx, trackTool);\n registerDealTools(server, ctx, trackTool);\n registerContentTools(server, ctx, trackTool);\n registerSocialTools(server, ctx, trackTool);\n registerAdTools(server, ctx, trackTool);\n registerInfluencerTools(server, ctx, trackTool);\n registerEventTools(server, ctx, trackTool);\n registerSeoTools(server, ctx, trackTool);\n registerLandingPageTools(server, ctx, trackTool);\n registerWorkflowTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n\n registerHeadshotmarketingResources(server, ctx, trackResource);\n registerHeadshotmarketingPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default headshotmarketingModule;\n"]}