@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/coolandlovely/operations.ts","../../../src/modules/coolandlovely/tools/shared.ts","../../../src/modules/coolandlovely/tools/brands.ts","../../../src/modules/coolandlovely/tools/collections.ts","../../../src/modules/coolandlovely/tools/style-items.ts","../../../src/modules/coolandlovely/tools/looks.ts","../../../src/modules/coolandlovely/tools/lookbooks.ts","../../../src/modules/coolandlovely/tools/collaborations.ts","../../../src/modules/coolandlovely/tools/wardrobe.ts","../../../src/modules/coolandlovely/tools/profile.ts","../../../src/modules/coolandlovely/tools/health.ts","../../../src/modules/coolandlovely/resources.ts","../../../src/modules/coolandlovely/prompts.ts","../../../src/modules/coolandlovely/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 Coolandlovely MCP module.\n *\n * Coolandlovely is the fashion & lifestyle platform (commerce-template clone,\n * prod-live backend). Backend subgraph:\n * ~/products/coolandlovely/wspace-coolandlovely-svc/ (Hive service name\n * `coolandlovely`). All root fields carry the inconsistent server `coo` prefix\n * (cooBrand, cooListLooks, cooCreateStyleItem, …) — they are called by their\n * REAL names here.\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 — Coolandlovely inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi module operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const BRAND_FIELDS = `\n id name handle tagline bio status aesthetics tags isFeatured websiteUrl\n workspaceId createdAt updatedAt logo { id } cover { id }\n`;\n\nexport const COLLECTION_FIELDS = `\n id name description brandId season status tags publishAt endAt\n workspaceId createdAt updatedAt cover { id }\n`;\n\nexport const STYLE_ITEM_FIELDS = `\n id name description brandId collectionId category status sku price currency\n colours materials sizes tags workspaceId createdAt updatedAt image { id }\n`;\n\nexport const LOOK_ITEM_FIELDS = `\n id lookId styleItemId position styling workspaceId createdAt updatedAt\n`;\n\nexport const LOOK_FIELDS = `\n id title caption authorId occasion visibility tags isFeatured likeCount\n saveCount collaborationId publishedAt workspaceId createdAt updatedAt\n image { id } items { ${LOOK_ITEM_FIELDS} }\n`;\n\nexport const LOOKBOOK_ENTRY_FIELDS = `\n id lookbookId lookId styleItemId position note workspaceId createdAt updatedAt\n`;\n\nexport const LOOKBOOK_FIELDS = `\n id name description ownerId profileId visibility tags workspaceId\n createdAt updatedAt cover { id } entries { ${LOOKBOOK_ENTRY_FIELDS} }\n`;\n\nexport const COLLABORATION_FIELDS = `\n id title brief brandId creatorId collectionId role status compensation currency\n tags startDate endDate publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const WARDROBE_ITEM_FIELDS = `\n id name brandName category colour size source notes profileId styleItemId tags\n timesWorn lastWornAt workspaceId createdAt updatedAt image { id }\n`;\n\nexport const STYLE_PROFILE_FIELDS = `\n id ownerId displayName bio palette stylePreferences favouriteBrands sizes\n visibility workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Brands\n// ---------------------------------------------------------------------------\n\nexport const GET_BRAND = `\n query CoolandlovelyGetBrand($id: ID!) {\n cooBrand(id: $id) {\n ${BRAND_FIELDS}\n collections { id name status season }\n items { id name status price currency }\n }\n }\n`;\n\nexport const LIST_BRANDS = `\n query CoolandlovelyListBrands(\n $featured: Boolean\n $status: CooBrandStatus\n $pagination: PaginationInput\n ) {\n cooListBrands(featured: $featured, status: $status, pagination: $pagination) {\n items { ${BRAND_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_BRAND = `\n mutation CoolandlovelyCreateBrand($input: CooCreateBrandInput!) {\n cooCreateBrand(input: $input) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_BRAND = `\n mutation CoolandlovelyUpdateBrand($id: ID!, $input: CooUpdateBrandInput!) {\n cooUpdateBrand(id: $id, input: $input) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_BRAND = `\n mutation CoolandlovelyTransitionBrand($id: ID!, $status: CooBrandStatus!) {\n cooTransitionBrand(id: $id, status: $status) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_BRAND = `\n mutation CoolandlovelyArchiveBrand($id: ID!) {\n cooArchiveBrand(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query CoolandlovelyGetCollection($id: ID!) {\n cooCollection(id: $id) {\n ${COLLECTION_FIELDS}\n items { id name status price currency }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query CoolandlovelyListCollections($brandId: ID, $status: CooCollectionStatus) {\n cooListCollections(brandId: $brandId, status: $status) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation CoolandlovelyCreateCollection($input: CooCreateCollectionInput!) {\n cooCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COLLECTION = `\n mutation CoolandlovelyUpdateCollection($id: ID!, $input: CooUpdateCollectionInput!) {\n cooUpdateCollection(id: $id, input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_COLLECTION = `\n mutation CoolandlovelyPublishCollection($id: ID!) {\n cooPublishCollection(id: $id) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Style items\n// ---------------------------------------------------------------------------\n\nexport const GET_STYLE_ITEM = `\n query CoolandlovelyGetStyleItem($id: ID!) {\n cooStyleItem(id: $id) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const LIST_STYLE_ITEMS = `\n query CoolandlovelyListStyleItems(\n $brandId: ID\n $category: CooStyleCategory\n $collectionId: ID\n $status: CooStyleItemStatus\n $pagination: PaginationInput\n ) {\n cooListStyleItems(\n brandId: $brandId\n category: $category\n collectionId: $collectionId\n status: $status\n pagination: $pagination\n ) {\n items { ${STYLE_ITEM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_STYLE_ITEM = `\n mutation CoolandlovelyCreateStyleItem($input: CooCreateStyleItemInput!) {\n cooCreateStyleItem(input: $input) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_STYLE_ITEM = `\n mutation CoolandlovelyUpdateStyleItem($id: ID!, $input: CooUpdateStyleItemInput!) {\n cooUpdateStyleItem(id: $id, input: $input) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_STYLE_ITEM = `\n mutation CoolandlovelyArchiveStyleItem($id: ID!) {\n cooArchiveStyleItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Looks\n// ---------------------------------------------------------------------------\n\nexport const GET_LOOK = `\n query CoolandlovelyGetLook($id: ID!) {\n cooLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const LIST_LOOKS = `\n query CoolandlovelyListLooks(\n $authorId: ID\n $featured: Boolean\n $occasion: CooLookOccasion\n $pagination: PaginationInput\n ) {\n cooListLooks(\n authorId: $authorId\n featured: $featured\n occasion: $occasion\n pagination: $pagination\n ) {\n items { ${LOOK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_LOOK = `\n mutation CoolandlovelyCreateLook($input: CooCreateLookInput!) {\n cooCreateLook(input: $input) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LOOK = `\n mutation CoolandlovelyUpdateLook($id: ID!, $input: CooUpdateLookInput!) {\n cooUpdateLook(id: $id, input: $input) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_LOOK = `\n mutation CoolandlovelyPublishLook($id: ID!) {\n cooPublishLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const LIKE_LOOK = `\n mutation CoolandlovelyLikeLook($id: ID!) {\n cooLikeLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LOOK = `\n mutation CoolandlovelyDeleteLook($id: ID!) {\n cooDeleteLook(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lookbooks\n// ---------------------------------------------------------------------------\n\nexport const GET_LOOKBOOK = `\n query CoolandlovelyGetLookbook($id: ID!) {\n cooLookbook(id: $id) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const LIST_LOOKBOOKS = `\n query CoolandlovelyListLookbooks($ownerId: ID) {\n cooListLookbooks(ownerId: $ownerId) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LOOKBOOK = `\n mutation CoolandlovelyCreateLookbook($input: CooCreateLookbookInput!) {\n cooCreateLookbook(input: $input) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const ADD_LOOKBOOK_ENTRY = `\n mutation CoolandlovelyAddLookbookEntry($input: CooAddLookbookEntryInput!) {\n cooAddLookbookEntry(input: $input) {\n ${LOOKBOOK_ENTRY_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_LOOKBOOK_ENTRY = `\n mutation CoolandlovelyRemoveLookbookEntry($id: ID!) {\n cooRemoveLookbookEntry(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collaborations\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLABORATION = `\n query CoolandlovelyGetCollaboration($id: ID!) {\n cooCollaboration(id: $id) {\n ${COLLABORATION_FIELDS}\n brand { id name handle status }\n looks { id title visibility }\n }\n }\n`;\n\nexport const LIST_COLLABORATIONS = `\n query CoolandlovelyListCollaborations(\n $brandId: ID\n $creatorId: ID\n $status: CooCollaborationStatus\n ) {\n cooListCollaborations(brandId: $brandId, creatorId: $creatorId, status: $status) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_COLLABORATION = `\n mutation CoolandlovelyCreateCollaboration($input: CooCreateCollaborationInput!) {\n cooCreateCollaboration(input: $input) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_COLLABORATION = `\n mutation CoolandlovelyTransitionCollaboration(\n $id: ID!\n $status: CooCollaborationStatus!\n ) {\n cooTransitionCollaboration(id: $id, status: $status) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Wardrobe\n// ---------------------------------------------------------------------------\n\nexport const LIST_WARDROBE_ITEMS = `\n query CoolandlovelyListWardrobeItems(\n $category: CooStyleCategory\n $source: CooWardrobeSource\n ) {\n cooListWardrobeItems(category: $category, source: $source) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const CREATE_WARDROBE_ITEM = `\n mutation CoolandlovelyCreateWardrobeItem($input: CooCreateWardrobeItemInput!) {\n cooCreateWardrobeItem(input: $input) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_WARDROBE_ITEM = `\n mutation CoolandlovelyUpdateWardrobeItem(\n $id: ID!\n $input: CooUpdateWardrobeItemInput!\n ) {\n cooUpdateWardrobeItem(id: $id, input: $input) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const LOG_WARDROBE_WEAR = `\n mutation CoolandlovelyLogWardrobeWear($id: ID!) {\n cooLogWardrobeWear(id: $id) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_WARDROBE_ITEM = `\n mutation CoolandlovelyRemoveWardrobeItem($id: ID!) {\n cooRemoveWardrobeItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Style profile\n// ---------------------------------------------------------------------------\n\nexport const MY_STYLE_PROFILE = `\n query CoolandlovelyMyStyleProfile {\n cooMyStyleProfile {\n ${STYLE_PROFILE_FIELDS}\n lookbooks { id name visibility }\n wardrobeItems { id name category }\n }\n }\n`;\n\nexport const UPSERT_STYLE_PROFILE = `\n mutation CoolandlovelyUpsertStyleProfile($input: CooUpsertStyleProfileInput!) {\n cooUpsertStyleProfile(input: $input) {\n ${STYLE_PROFILE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query CoolandlovelyHealth {\n cooHealth\n }\n`;\n","/**\n * Shared zod schemas for the Coolandlovely tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. The `sizes` JSON scalar input is\n * modelled as a permissive object record — the backend accepts arbitrary JSON,\n * but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const BrandStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PENDING_REVIEW', 'PUBLISHED', 'SUSPENDED'])\n .describe('Lifecycle/moderation status of a brand storefront');\n\nexport const CollaborationStatusEnum = z\n .enum(['ACCEPTED', 'CANCELLED', 'DECLINED', 'IN_PROGRESS', 'PROPOSED', 'PUBLISHED'])\n .describe('Lifecycle status of a brand↔creator collaboration');\n\nexport const CollaboratorRoleEnum = z\n .enum(['BRAND', 'CREATOR', 'PHOTOGRAPHER', 'STYLIST'])\n .describe('Role a participant plays in a collaboration');\n\nexport const CollectionStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'ENDED', 'LIVE', 'SCHEDULED'])\n .describe('Lifecycle status of a seasonal collection');\n\nexport const LookOccasionEnum = z\n .enum(['ACTIVE', 'EVENING', 'EVERYDAY', 'OTHER', 'PARTY', 'VACATION', 'WEDDING_GUEST', 'WORK'])\n .describe('The occasion a styled look is intended for');\n\nexport const SeasonEnum = z\n .enum(['ALL_SEASON', 'AUTUMN', 'RESORT', 'SPRING', 'SUMMER', 'WINTER'])\n .describe('Fashion season of a collection');\n\nexport const StyleCategoryEnum = z\n .enum([\n 'ACCESSORIES',\n 'BAGS',\n 'BEAUTY',\n 'BOTTOMS',\n 'DRESSES',\n 'FOOTWEAR',\n 'JEWELLERY',\n 'OTHER',\n 'OUTERWEAR',\n 'TOPS',\n ])\n .describe('Top-level fashion category for a style/wardrobe item');\n\nexport const StyleItemStatusEnum = z\n .enum(['ACTIVE', 'DRAFT', 'OUT_OF_STOCK', 'RETIRED'])\n .describe('Availability/lifecycle status of a catalog style item');\n\nexport const VisibilityEnum = z\n .enum(['FOLLOWERS', 'PRIVATE', 'PUBLIC'])\n .describe('Who can see a look, lookbook, or style profile');\n\nexport const WardrobeSourceEnum = z\n .enum(['GIFTED', 'OWNED', 'PURCHASED_ON_PLATFORM', 'WISHLIST'])\n .describe('How a shopper acquired a wardrobe piece');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs (e.g. profile sizes). */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** A single look line item (CooLookItemInput). */\nexport const LookItemInput = z\n .object({\n styleItemId: z.string().min(1).describe('Style item placed in the look'),\n position: z.number().int().optional().describe('Ordering position within the look'),\n styling: z.string().optional().describe('Styling note for this piece'),\n })\n .describe('A style item placed within a look');\n","/**\n * Coolandlovely brand-storefront tools.\n *\n * Surface (6): brands_{get,list,create,update,transition,archive}.\n * Backend root fields carry the `coo` prefix (cooBrand / cooListBrands /\n * cooCreateBrand / …) — all 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 { BrandStatusEnum } from './shared.js';\n\nexport function registerBrandTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_get')),\n {\n title: 'Get Brand',\n description:\n 'Fetch a single Coolandlovely brand storefront by ID, including its collections and catalog items.',\n inputSchema: { id: z.string().describe('Brand ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooBrand: Record<string, unknown> | null;\n }>(ops.GET_BRAND, { id });\n if (!data.cooBrand) return errorResult(`Brand ${id} not found`);\n return jsonResult(data.cooBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_get failed', { error: String(error) });\n return errorResult(\n `Failed to get brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_list')),\n {\n title: 'List Brands',\n description:\n 'List brand storefronts in the bound workspace with optional featured/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n featured: z.boolean().optional().describe('Only featured storefronts'),\n status: BrandStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ featured, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListBrands: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_BRANDS, { featured, status, pagination });\n return jsonResult(data.cooListBrands);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_list failed', { error: String(error) });\n return errorResult(\n `Failed to list brands: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_create')),\n {\n title: 'Create Brand',\n description:\n 'Create a new brand storefront. `handle` must be unique within the workspace. Reference logo/cover images by wspace-files-svc File IDs.',\n inputSchema: {\n name: z.string().min(1).describe('Brand display name'),\n handle: z.string().min(1).describe('URL handle, unique within the workspace'),\n tagline: z.string().optional().describe('Short brand tagline'),\n bio: z.string().optional().describe('Longer brand bio/description'),\n aesthetics: z.array(z.string()).optional().describe('Aesthetic keywords'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n websiteUrl: z.string().optional().describe('External website URL'),\n logoFileId: z.string().optional().describe('wspace-files-svc File ID for the logo'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n },\n },\n async ({\n name,\n handle,\n tagline,\n bio,\n aesthetics,\n tags,\n websiteUrl,\n logoFileId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { name, handle };\n if (tagline !== undefined) input.tagline = tagline;\n if (bio !== undefined) input.bio = bio;\n if (aesthetics !== undefined) input.aesthetics = aesthetics;\n if (tags !== undefined) input.tags = tags;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateBrand: Record<string, unknown>;\n }>(ops.CREATE_BRAND, { input });\n return jsonResult(data.cooCreateBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_create failed', { error: String(error) });\n return errorResult(\n `Failed to create brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_update')),\n {\n title: 'Update Brand',\n description:\n 'Update a brand storefront. At least one mutable field must be provided. Use `isFeatured` to feature the storefront.',\n inputSchema: {\n id: z.string().describe('Brand ID'),\n name: z.string().optional().describe('Updated display name'),\n tagline: z.string().optional().describe('Updated tagline'),\n bio: z.string().optional().describe('Updated bio'),\n aesthetics: z.array(z.string()).optional().describe('Updated aesthetic keywords'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n websiteUrl: z.string().optional().describe('Updated website URL'),\n isFeatured: z.boolean().optional().describe('Toggle featured status'),\n logoFileId: z.string().optional().describe('Updated logo File ID'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n },\n },\n async ({\n id,\n name,\n tagline,\n bio,\n aesthetics,\n tags,\n websiteUrl,\n isFeatured,\n logoFileId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (tagline !== undefined) input.tagline = tagline;\n if (bio !== undefined) input.bio = bio;\n if (aesthetics !== undefined) input.aesthetics = aesthetics;\n if (tags !== undefined) input.tags = tags;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable brand field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateBrand: Record<string, unknown>;\n }>(ops.UPDATE_BRAND, { id, input });\n return jsonResult(data.cooUpdateBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_update failed', { error: String(error) });\n return errorResult(\n `Failed to update brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_transition')),\n {\n title: 'Transition Brand',\n description:\n 'Advance a brand storefront through its publish lifecycle with a validated status transition (DRAFT → PENDING_REVIEW → PUBLISHED, SUSPENDED, ARCHIVED).',\n inputSchema: {\n id: z.string().describe('Brand ID'),\n status: BrandStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooTransitionBrand: Record<string, unknown>;\n }>(ops.TRANSITION_BRAND, { id, status });\n return jsonResult(data.cooTransitionBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_archive')),\n {\n title: 'Archive Brand',\n description: 'Archive a brand storefront (soft delete). Returns true on success.',\n inputSchema: { id: z.string().describe('Brand ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooArchiveBrand: boolean }>(\n ops.ARCHIVE_BRAND,\n { id },\n );\n return jsonResult({ archived: data.cooArchiveBrand });\n } catch (error) {\n ctx.logger.error('coolandlovely brands_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely seasonal-collection tools.\n *\n * Surface (5): collections_{get,list,create,update,publish}.\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 { SeasonEnum, CollectionStatusEnum } from './shared.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description: 'Fetch a single seasonal collection by ID, including its style items.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.cooCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.cooCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description: 'List seasonal collections, optionally filtered by brand and/or status.',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n status: CollectionStatusEnum.optional().describe('Filter by collection status'),\n },\n },\n async ({ brandId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, { brandId, status });\n return jsonResult(data.cooListCollections);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description:\n 'Create a seasonal collection for a brand. Set `publishAt`/`endAt` (ISO-8601) to schedule the drop.',\n inputSchema: {\n brandId: z.string().min(1).describe('Owning brand ID'),\n name: z.string().min(1).describe('Collection name'),\n description: z.string().optional().describe('Collection description'),\n season: SeasonEnum.optional().describe('Fashion season (default ALL_SEASON)'),\n publishAt: z.string().optional().describe('Scheduled publish time (ISO-8601 DateTime)'),\n endAt: z.string().optional().describe('Scheduled end time (ISO-8601 DateTime)'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ brandId, name, description, season, publishAt, endAt, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = { brandId, name };\n if (description !== undefined) input.description = description;\n if (season !== undefined) input.season = season;\n if (publishAt !== undefined) input.publishAt = publishAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.cooCreateCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_update')),\n {\n title: 'Update Collection',\n description: 'Update a seasonal collection. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Collection ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n season: SeasonEnum.optional().describe('Updated season'),\n publishAt: z.string().optional().describe('Updated publish time (ISO-8601)'),\n endAt: z.string().optional().describe('Updated end time (ISO-8601)'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, description, season, publishAt, endAt, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (season !== undefined) input.season = season;\n if (publishAt !== undefined) input.publishAt = publishAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable collection field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateCollection: Record<string, unknown>;\n }>(ops.UPDATE_COLLECTION, { id, input });\n return jsonResult(data.cooUpdateCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_update failed', { error: String(error) });\n return errorResult(\n `Failed to update collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_publish')),\n {\n title: 'Publish Collection',\n description: 'Publish a collection so it goes LIVE.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooPublishCollection: Record<string, unknown>;\n }>(ops.PUBLISH_COLLECTION, { id });\n return jsonResult(data.cooPublishCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely style-item tools — catalog CRUD.\n *\n * Surface (5): style_items_{get,list,create,update,archive}.\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 { StyleCategoryEnum, StyleItemStatusEnum } from './shared.js';\n\nexport function registerStyleItemTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_get')),\n {\n title: 'Get Style Item',\n description: 'Fetch a single catalog style item by ID.',\n inputSchema: { id: z.string().describe('Style item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooStyleItem: Record<string, unknown> | null;\n }>(ops.GET_STYLE_ITEM, { id });\n if (!data.cooStyleItem) return errorResult(`Style item ${id} not found`);\n return jsonResult(data.cooStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_get failed', { error: String(error) });\n return errorResult(\n `Failed to get style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_list')),\n {\n title: 'List Style Items',\n description:\n 'List catalog style items with optional brand/category/collection/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n category: StyleCategoryEnum.optional().describe('Filter by fashion category'),\n collectionId: z.string().optional().describe('Filter by collection ID'),\n status: StyleItemStatusEnum.optional().describe('Filter by item status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ brandId, category, collectionId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListStyleItems: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_STYLE_ITEMS, { brandId, category, collectionId, status, pagination });\n return jsonResult(data.cooListStyleItems);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_list failed', { error: String(error) });\n return errorResult(\n `Failed to list style items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_create')),\n {\n title: 'Create Style Item',\n description:\n 'Create a catalog style item for a brand. Optionally attach it to a collection and set price/currency, materials, colours, and sizes.',\n inputSchema: {\n brandId: z.string().min(1).describe('Owning brand ID'),\n name: z.string().min(1).describe('Item display name'),\n category: StyleCategoryEnum.optional().describe('Fashion category (default OTHER)'),\n collectionId: z.string().optional().describe('Collection to attach the item to'),\n description: z.string().optional().describe('Item description'),\n sku: z.string().optional().describe('Stock-keeping unit'),\n price: z.number().optional().describe('Price'),\n currency: z.string().optional().describe('ISO currency code (e.g. \"USD\")'),\n colours: z.array(z.string()).optional().describe('Available colours'),\n materials: z.array(z.string()).optional().describe('Materials/fabric composition'),\n sizes: z.array(z.string()).optional().describe('Available sizes'),\n imageFileId: z.string().optional().describe('wspace-files-svc File ID for the item image'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n brandId,\n name,\n category,\n collectionId,\n description,\n sku,\n price,\n currency,\n colours,\n materials,\n sizes,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { brandId, name };\n if (category !== undefined) input.category = category;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (description !== undefined) input.description = description;\n if (sku !== undefined) input.sku = sku;\n if (price !== undefined) input.price = price;\n if (currency !== undefined) input.currency = currency;\n if (colours !== undefined) input.colours = colours;\n if (materials !== undefined) input.materials = materials;\n if (sizes !== undefined) input.sizes = sizes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateStyleItem: Record<string, unknown>;\n }>(ops.CREATE_STYLE_ITEM, { input });\n return jsonResult(data.cooCreateStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_create failed', { error: String(error) });\n return errorResult(\n `Failed to create style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_update')),\n {\n title: 'Update Style Item',\n description: 'Update a catalog style item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Style item ID'),\n name: z.string().optional().describe('Updated name'),\n category: StyleCategoryEnum.optional().describe('Updated category'),\n collectionId: z.string().optional().describe('Updated collection ID'),\n description: z.string().optional().describe('Updated description'),\n sku: z.string().optional().describe('Updated SKU'),\n price: z.number().optional().describe('Updated price'),\n currency: z.string().optional().describe('Updated currency code'),\n colours: z.array(z.string()).optional().describe('Updated colours'),\n materials: z.array(z.string()).optional().describe('Updated materials'),\n sizes: z.array(z.string()).optional().describe('Updated sizes'),\n imageFileId: z.string().optional().describe('Updated image File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n category,\n collectionId,\n description,\n sku,\n price,\n currency,\n colours,\n materials,\n sizes,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (description !== undefined) input.description = description;\n if (sku !== undefined) input.sku = sku;\n if (price !== undefined) input.price = price;\n if (currency !== undefined) input.currency = currency;\n if (colours !== undefined) input.colours = colours;\n if (materials !== undefined) input.materials = materials;\n if (sizes !== undefined) input.sizes = sizes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable style-item field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateStyleItem: Record<string, unknown>;\n }>(ops.UPDATE_STYLE_ITEM, { id, input });\n return jsonResult(data.cooUpdateStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_update failed', { error: String(error) });\n return errorResult(\n `Failed to update style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_archive')),\n {\n title: 'Archive Style Item',\n description: 'Archive (retire) a catalog style item. Returns true on success.',\n inputSchema: { id: z.string().describe('Style item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooArchiveStyleItem: boolean }>(\n ops.ARCHIVE_STYLE_ITEM,\n { id },\n );\n return jsonResult({ archived: data.cooArchiveStyleItem });\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely styled-look tools.\n *\n * Surface (7): looks_{get,list,create,update,publish,like,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 { LookOccasionEnum, VisibilityEnum, LookItemInput } from './shared.js';\n\nexport function registerLookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_get')),\n {\n title: 'Get Look',\n description: 'Fetch a single styled look by ID, including its line items.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLook: Record<string, unknown> | null;\n }>(ops.GET_LOOK, { id });\n if (!data.cooLook) return errorResult(`Look ${id} not found`);\n return jsonResult(data.cooLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_list')),\n {\n title: 'List Looks',\n description:\n 'List styled looks with optional author/featured/occasion filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n authorId: z.string().optional().describe('Filter by author user ID'),\n featured: z.boolean().optional().describe('Only featured looks'),\n occasion: LookOccasionEnum.optional().describe('Filter by occasion'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ authorId, featured, occasion, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListLooks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_LOOKS, { authorId, featured, occasion, pagination });\n return jsonResult(data.cooListLooks);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list looks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_create')),\n {\n title: 'Create Look',\n description:\n 'Create a styled look. Attach style items via `items` (each references a styleItemId with optional position/styling).',\n inputSchema: {\n title: z.string().min(1).describe('Look title'),\n caption: z.string().optional().describe('Look caption/description'),\n occasion: LookOccasionEnum.optional().describe('Occasion (default EVERYDAY)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n collaborationId: z.string().optional().describe('Related collaboration ID'),\n imageFileId: z.string().optional().describe('wspace-files-svc File ID for the look photo'),\n items: z.array(LookItemInput).optional().describe('Style items placed in the look'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ title, caption, occasion, visibility, collaborationId, imageFileId, items, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (caption !== undefined) input.caption = caption;\n if (occasion !== undefined) input.occasion = occasion;\n if (visibility !== undefined) input.visibility = visibility;\n if (collaborationId !== undefined) input.collaborationId = collaborationId;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (items !== undefined) input.items = items;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateLook: Record<string, unknown>;\n }>(ops.CREATE_LOOK, { input });\n return jsonResult(data.cooCreateLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_update')),\n {\n title: 'Update Look',\n description: 'Update a styled look. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Look ID'),\n title: z.string().optional().describe('Updated title'),\n caption: z.string().optional().describe('Updated caption'),\n occasion: LookOccasionEnum.optional().describe('Updated occasion'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n imageFileId: z.string().optional().describe('Updated look photo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, title, caption, occasion, visibility, imageFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (caption !== undefined) input.caption = caption;\n if (occasion !== undefined) input.occasion = occasion;\n if (visibility !== undefined) input.visibility = visibility;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable look field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateLook: Record<string, unknown>;\n }>(ops.UPDATE_LOOK, { id, input });\n return jsonResult(data.cooUpdateLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_publish')),\n {\n title: 'Publish Look',\n description: 'Publish a look so it becomes visible per its visibility setting.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooPublishLook: Record<string, unknown>;\n }>(ops.PUBLISH_LOOK, { id });\n return jsonResult(data.cooPublishLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_like')),\n {\n title: 'Like Look',\n description: 'Like a published look (increments its likeCount).',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLikeLook: Record<string, unknown>;\n }>(ops.LIKE_LOOK, { id });\n return jsonResult(data.cooLikeLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_like failed', { error: String(error) });\n return errorResult(\n `Failed to like look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_delete')),\n {\n title: 'Delete Look',\n description: 'Delete a styled look. Returns true on success.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooDeleteLook: boolean }>(ops.DELETE_LOOK, {\n id,\n });\n return jsonResult({ deleted: data.cooDeleteLook });\n } catch (error) {\n ctx.logger.error('coolandlovely looks_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely lookbook tools — curated boards + entries.\n *\n * Surface (5): lookbooks_{get,list,create,add_entry,remove_entry}.\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 { VisibilityEnum } from './shared.js';\n\nexport function registerLookbookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_get')),\n {\n title: 'Get Lookbook',\n description: 'Fetch a single lookbook by ID, including its entries.',\n inputSchema: { id: z.string().describe('Lookbook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLookbook: Record<string, unknown> | null;\n }>(ops.GET_LOOKBOOK, { id });\n if (!data.cooLookbook) return errorResult(`Lookbook ${id} not found`);\n return jsonResult(data.cooLookbook);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get lookbook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_list')),\n {\n title: 'List Lookbooks',\n description: 'List lookbooks, optionally filtered by owner.',\n inputSchema: {\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListLookbooks: Array<Record<string, unknown>>;\n }>(ops.LIST_LOOKBOOKS, { ownerId });\n return jsonResult(data.cooListLookbooks);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list lookbooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_create')),\n {\n title: 'Create Lookbook',\n description: 'Create a curated lookbook board. `visibility` defaults to PRIVATE.',\n inputSchema: {\n name: z.string().min(1).describe('Lookbook name'),\n description: z.string().optional().describe('Lookbook description'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ name, description, visibility, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateLookbook: Record<string, unknown>;\n }>(ops.CREATE_LOOKBOOK, { input });\n return jsonResult(data.cooCreateLookbook);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create lookbook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_add_entry')),\n {\n title: 'Add Lookbook Entry',\n description:\n 'Add an entry to a lookbook — reference either a look (`lookId`) or a style item (`styleItemId`), with an optional position and note.',\n inputSchema: {\n lookbookId: z.string().min(1).describe('Target lookbook ID'),\n lookId: z.string().optional().describe('Look to add (mutually exclusive with styleItemId)'),\n styleItemId: z\n .string()\n .optional()\n .describe('Style item to add (mutually exclusive with lookId)'),\n position: z.number().int().optional().describe('Ordering position within the lookbook'),\n note: z.string().optional().describe('Curator note for the entry'),\n },\n },\n async ({ lookbookId, lookId, styleItemId, position, note }) => {\n try {\n const input: Record<string, unknown> = { lookbookId };\n if (lookId !== undefined) input.lookId = lookId;\n if (styleItemId !== undefined) input.styleItemId = styleItemId;\n if (position !== undefined) input.position = position;\n if (note !== undefined) input.note = note;\n\n const data = await ctx.gql.workspace.request<{\n cooAddLookbookEntry: Record<string, unknown>;\n }>(ops.ADD_LOOKBOOK_ENTRY, { input });\n return jsonResult(data.cooAddLookbookEntry);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_add_entry failed', { error: String(error) });\n return errorResult(\n `Failed to add lookbook entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_remove_entry')),\n {\n title: 'Remove Lookbook Entry',\n description: 'Remove an entry from a lookbook by entry ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Lookbook entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooRemoveLookbookEntry: boolean }>(\n ops.REMOVE_LOOKBOOK_ENTRY,\n { id },\n );\n return jsonResult({ removed: data.cooRemoveLookbookEntry });\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_remove_entry failed', { error: String(error) });\n return errorResult(\n `Failed to remove lookbook entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely collaboration tools — brand ↔ creator partnerships.\n *\n * Surface (4): collaborations_{get,list,create,transition}.\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 { CollaboratorRoleEnum, CollaborationStatusEnum } from './shared.js';\n\nexport function registerCollaborationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_get')),\n {\n title: 'Get Collaboration',\n description: 'Fetch a single collaboration by ID, including its brand and resulting looks.',\n inputSchema: { id: z.string().describe('Collaboration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooCollaboration: Record<string, unknown> | null;\n }>(ops.GET_COLLABORATION, { id });\n if (!data.cooCollaboration) return errorResult(`Collaboration ${id} not found`);\n return jsonResult(data.cooCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_list')),\n {\n title: 'List Collaborations',\n description: 'List collaborations, optionally filtered by brand, creator, and/or status.',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n creatorId: z.string().optional().describe('Filter by creator user ID'),\n status: CollaborationStatusEnum.optional().describe('Filter by collaboration status'),\n },\n },\n async ({ brandId, creatorId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListCollaborations: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLABORATIONS, { brandId, creatorId, status });\n return jsonResult(data.cooListCollaborations);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collaborations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_create')),\n {\n title: 'Create Collaboration',\n description:\n 'Propose a brand ↔ creator collaboration. `role` defaults to CREATOR. Optionally set compensation/currency, a collection, and start/end dates (ISO-8601).',\n inputSchema: {\n brandId: z.string().min(1).describe('Brand ID'),\n creatorId: z.string().min(1).describe('Creator user ID'),\n title: z.string().min(1).describe('Collaboration title'),\n role: CollaboratorRoleEnum.optional().describe('Collaborator role (default CREATOR)'),\n brief: z.string().optional().describe('Collaboration brief'),\n collectionId: z.string().optional().describe('Related collection ID'),\n compensation: z.number().optional().describe('Compensation amount'),\n currency: z.string().optional().describe('ISO currency code'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n brandId,\n creatorId,\n title,\n role,\n brief,\n collectionId,\n compensation,\n currency,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { brandId, creatorId, title };\n if (role !== undefined) input.role = role;\n if (brief !== undefined) input.brief = brief;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (compensation !== undefined) input.compensation = compensation;\n if (currency !== undefined) input.currency = currency;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateCollaboration: Record<string, unknown>;\n }>(ops.CREATE_COLLABORATION, { input });\n return jsonResult(data.cooCreateCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_transition')),\n {\n title: 'Transition Collaboration',\n description:\n 'Advance a collaboration through its lifecycle with a validated status transition (PROPOSED → ACCEPTED/DECLINED → IN_PROGRESS → PUBLISHED, or CANCELLED).',\n inputSchema: {\n id: z.string().describe('Collaboration ID'),\n status: CollaborationStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooTransitionCollaboration: Record<string, unknown>;\n }>(ops.TRANSITION_COLLABORATION, { id, status });\n return jsonResult(data.cooTransitionCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_transition failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to transition collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely wardrobe tools — the shopper's personal closet (self-scoped).\n *\n * Surface (5): wardrobe_{list,create,update,log_wear,remove}.\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 { StyleCategoryEnum, WardrobeSourceEnum } from './shared.js';\n\nexport function registerWardrobeTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_list')),\n {\n title: 'List Wardrobe Items',\n description:\n \"List the calling shopper's own wardrobe items, optionally filtered by category and/or source.\",\n inputSchema: {\n category: StyleCategoryEnum.optional().describe('Filter by category'),\n source: WardrobeSourceEnum.optional().describe('Filter by how the piece was acquired'),\n },\n },\n async ({ category, source }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListWardrobeItems: Array<Record<string, unknown>>;\n }>(ops.LIST_WARDROBE_ITEMS, { category, source });\n return jsonResult(data.cooListWardrobeItems);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_list failed', { error: String(error) });\n return errorResult(\n `Failed to list wardrobe items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_create')),\n {\n title: 'Create Wardrobe Item',\n description:\n \"Add a piece to the shopper's wardrobe. Optionally link it to a catalog style item via `styleItemId`.\",\n inputSchema: {\n name: z.string().min(1).describe('Item name'),\n category: StyleCategoryEnum.optional().describe('Category (default OTHER)'),\n source: WardrobeSourceEnum.optional().describe('How it was acquired (default OWNED)'),\n brandName: z.string().optional().describe('Free-text brand name'),\n colour: z.string().optional().describe('Colour'),\n size: z.string().optional().describe('Size'),\n notes: z.string().optional().describe('Personal notes'),\n styleItemId: z.string().optional().describe('Linked catalog style item ID'),\n imageFileId: z\n .string()\n .optional()\n .describe(\"wspace-files-svc File ID for the shopper's photo\"),\n tags: z.array(z.string()).optional().describe('Personal tags'),\n },\n },\n async ({\n name,\n category,\n source,\n brandName,\n colour,\n size,\n notes,\n styleItemId,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (category !== undefined) input.category = category;\n if (source !== undefined) input.source = source;\n if (brandName !== undefined) input.brandName = brandName;\n if (colour !== undefined) input.colour = colour;\n if (size !== undefined) input.size = size;\n if (notes !== undefined) input.notes = notes;\n if (styleItemId !== undefined) input.styleItemId = styleItemId;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateWardrobeItem: Record<string, unknown>;\n }>(ops.CREATE_WARDROBE_ITEM, { input });\n return jsonResult(data.cooCreateWardrobeItem);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_create failed', { error: String(error) });\n return errorResult(\n `Failed to create wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_update')),\n {\n title: 'Update Wardrobe Item',\n description: 'Update a wardrobe item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Wardrobe item ID'),\n name: z.string().optional().describe('Updated name'),\n category: StyleCategoryEnum.optional().describe('Updated category'),\n source: WardrobeSourceEnum.optional().describe('Updated source'),\n brandName: z.string().optional().describe('Updated brand name'),\n colour: z.string().optional().describe('Updated colour'),\n size: z.string().optional().describe('Updated size'),\n notes: z.string().optional().describe('Updated notes'),\n imageFileId: z.string().optional().describe('Updated photo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, category, source, brandName, colour, size, notes, imageFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (source !== undefined) input.source = source;\n if (brandName !== undefined) input.brandName = brandName;\n if (colour !== undefined) input.colour = colour;\n if (size !== undefined) input.size = size;\n if (notes !== undefined) input.notes = notes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable wardrobe field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateWardrobeItem: Record<string, unknown>;\n }>(ops.UPDATE_WARDROBE_ITEM, { id, input });\n return jsonResult(data.cooUpdateWardrobeItem);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_update failed', { error: String(error) });\n return errorResult(\n `Failed to update wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_log_wear')),\n {\n title: 'Log Wardrobe Wear',\n description: 'Log that the shopper wore a wardrobe piece (increments timesWorn).',\n inputSchema: { id: z.string().describe('Wardrobe item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLogWardrobeWear: Record<string, unknown>;\n }>(ops.LOG_WARDROBE_WEAR, { id });\n return jsonResult(data.cooLogWardrobeWear);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_log_wear failed', { error: String(error) });\n return errorResult(\n `Failed to log wardrobe wear: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_remove')),\n {\n title: 'Remove Wardrobe Item',\n description: 'Remove a wardrobe item. Returns true on success.',\n inputSchema: { id: z.string().describe('Wardrobe item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooRemoveWardrobeItem: boolean }>(\n ops.REMOVE_WARDROBE_ITEM,\n { id },\n );\n return jsonResult({ removed: data.cooRemoveWardrobeItem });\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely style-profile tools (self-scoped).\n *\n * Surface (2): profile_{get,upsert}. The calling shopper has at most one\n * style profile per workspace (cooMyStyleProfile / cooUpsertStyleProfile).\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 { VisibilityEnum, JsonObject } from './shared.js';\n\nexport function registerProfileTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'profile_get')),\n {\n title: 'Get My Style Profile',\n description:\n \"Fetch the calling shopper's own style profile (workspace-scoped), including lookbooks and wardrobe items.\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooMyStyleProfile: Record<string, unknown> | null;\n }>(ops.MY_STYLE_PROFILE, {});\n if (!data.cooMyStyleProfile)\n return errorResult('No style profile exists yet for this shopper');\n return jsonResult(data.cooMyStyleProfile);\n } catch (error) {\n ctx.logger.error('coolandlovely profile_get failed', { error: String(error) });\n return errorResult(\n `Failed to get style profile: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'profile_upsert')),\n {\n title: 'Upsert My Style Profile',\n description:\n \"Create or update the calling shopper's style profile (one per workspace). `sizes` is free-form JSON (e.g. { top: 'M', shoe: '8' }).\",\n inputSchema: {\n displayName: z.string().optional().describe('Public display name'),\n bio: z.string().optional().describe('Profile bio'),\n palette: z.array(z.string()).optional().describe('Preferred colour palette'),\n stylePreferences: z.array(z.string()).optional().describe('Style preference keywords'),\n favouriteBrands: z.array(z.string()).optional().describe('Favourite brand names'),\n sizes: JsonObject.optional().describe('Size profile JSON (e.g. { top, bottom, shoe })'),\n visibility: VisibilityEnum.optional().describe('Profile visibility (default PRIVATE)'),\n },\n },\n async ({ displayName, bio, palette, stylePreferences, favouriteBrands, sizes, visibility }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (bio !== undefined) input.bio = bio;\n if (palette !== undefined) input.palette = palette;\n if (stylePreferences !== undefined) input.stylePreferences = stylePreferences;\n if (favouriteBrands !== undefined) input.favouriteBrands = favouriteBrands;\n if (sizes !== undefined) input.sizes = sizes;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n cooUpsertStyleProfile: Record<string, unknown>;\n }>(ops.UPSERT_STYLE_PROFILE, { input });\n return jsonResult(data.cooUpsertStyleProfile);\n } catch (error) {\n ctx.logger.error('coolandlovely profile_upsert failed', { error: String(error) });\n return errorResult(\n `Failed to upsert style profile: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely health tool.\n *\n * Surface (1): health — maps to the @public cooHealth query (no auth\n * required); the rest of the surface is @rbac wspace/self-scoped.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Coolandlovely Health Check',\n description:\n 'Public liveness/identity probe for the Coolandlovely subgraph (cooHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ cooHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.cooHealth });\n } catch (error) {\n ctx.logger.error('coolandlovely health failed', { error: String(error) });\n return errorResult(\n `Coolandlovely health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_BRANDS, LIST_LOOKS, LIST_STYLE_ITEMS } from './operations.js';\n\n/**\n * Read-only Coolandlovely 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 registerCoolandlovelyResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const brandsUri = track(mcpResourceUri(ctx.productName, 'brands'));\n const looksUri = track(mcpResourceUri(ctx.productName, 'looks'));\n const styleItemsUri = track(mcpResourceUri(ctx.productName, 'style-items'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'coolandlovely-schema',\n schemaUri,\n {\n title: 'Coolandlovely Domain Schema',\n description:\n 'Overview of the Coolandlovely fashion & lifestyle 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 = `# Coolandlovely Domain (Overview)\n\nFashion & lifestyle platform — brand storefronts, seasonal collections,\ncatalog items, styled looks, lookbooks, creator collaborations, and personal\nwardrobes/style profiles.\n\n## Entities\n- CooBrand — a brand storefront (collections, style items)\n- CooCollection — a seasonal collection within a brand\n- CooStyleItem — a catalog item (product) within a brand/collection\n- CooLook (+CooLookItem) — a styled look + the items placed in it\n- CooLookbook (+CooLookbookEntry) — a curated board of looks/items\n- CooCollaboration — a brand ↔ creator partnership\n- CooWardrobeItem — a shopper's personal closet piece\n- CooStyleProfile — the calling shopper's style profile (one per workspace)\n\n## Enums\n- CooBrandStatus: DRAFT, PENDING_REVIEW, PUBLISHED, SUSPENDED, ARCHIVED\n- CooCollectionStatus: DRAFT, SCHEDULED, LIVE, ENDED, ARCHIVED\n- CooStyleItemStatus: DRAFT, ACTIVE, OUT_OF_STOCK, RETIRED\n- CooStyleCategory: TOPS, BOTTOMS, DRESSES, OUTERWEAR, FOOTWEAR, BAGS, ACCESSORIES, JEWELLERY, BEAUTY, OTHER\n- CooSeason: ALL_SEASON, SPRING, SUMMER, AUTUMN, WINTER, RESORT\n- CooLookOccasion: EVERYDAY, WORK, EVENING, PARTY, WEDDING_GUEST, VACATION, ACTIVE, OTHER\n- CooVisibility: PUBLIC, FOLLOWERS, PRIVATE\n- CooCollaborationStatus: PROPOSED, ACCEPTED, DECLINED, IN_PROGRESS, PUBLISHED, CANCELLED\n- CooCollaboratorRole: BRAND, CREATOR, STYLIST, PHOTOGRAPHER\n- CooWardrobeSource: OWNED, PURCHASED_ON_PLATFORM, GIFTED, WISHLIST\n\n## Tool groups\nbrands, collections, style_items, looks, lookbooks, collaborations, wardrobe, profile.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://brands — featured/published brand directory\n server.registerResource(\n 'coolandlovely-brands',\n brandsUri,\n {\n title: 'Coolandlovely Brand Directory',\n description: 'The first 50 brand storefronts in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${brandsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListBrands: unknown }>(LIST_BRANDS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: brandsUri,\n text: JSON.stringify(data.cooListBrands, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: brandsUri,\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>://looks — recent looks feed\n server.registerResource(\n 'coolandlovely-looks',\n looksUri,\n {\n title: 'Coolandlovely Looks Feed',\n description: 'The first 50 styled looks in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${looksUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListLooks: unknown }>(LIST_LOOKS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: looksUri,\n text: JSON.stringify(data.cooListLooks, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: looksUri,\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>://style-items — catalog snapshot\n server.registerResource(\n 'coolandlovely-style-items',\n styleItemsUri,\n {\n title: 'Coolandlovely Catalog',\n description: 'The first 50 catalog style items in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${styleItemsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListStyleItems: unknown }>(\n LIST_STYLE_ITEMS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: styleItemsUri,\n text: JSON.stringify(data.cooListStyleItems, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: styleItemsUri,\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 * Coolandlovely MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerCoolandlovelyPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'brand-onboarding'));\n const stylingName = track(mcpPromptName(p, 'styling-workflow'));\n\n // <product>-brand-onboarding — stand up a brand + collection + catalog\n server.registerPrompt(\n onboardingName,\n {\n title: 'Brand Onboarding',\n description:\n 'Guide for onboarding a new Coolandlovely brand storefront end to end: create the brand, open a seasonal collection, add catalog style items, and publish.',\n argsSchema: {\n name: z.string().optional().describe('Brand name'),\n season: z.string().optional().describe('Launch season'),\n },\n },\n ({ name, season }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { name, season });\n const nameNote = name ? `Use the brand name \"${name}\".` : 'Ask the user for the brand name.';\n const seasonNote = season ? `Use season ${season}.` : 'Help the user pick a CooSeason.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new Coolandlovely brand storefront.\n\n1. **Create Brand**: Use ${p}_brands_create. ${nameNote} Provide a unique handle, plus optional tagline/bio/aesthetics and logo/cover File IDs.\n2. **Open Collection**: Use ${p}_collections_create for the new brandId. ${seasonNote} Set publishAt/endAt to schedule the drop.\n3. **Add Style Items**: Use ${p}_style_items_create for each catalog piece — set category, price/currency, colours/materials/sizes, and attach the collectionId.\n4. **Verify Catalog**: Use ${p}_style_items_list filtered by the new brandId.\n5. **Publish**: Use ${p}_collections_publish to take the collection LIVE, then ${p}_brands_transition with status=PUBLISHED.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-styling-workflow — shopper styling journey\n server.registerPrompt(\n stylingName,\n {\n title: 'Styling Workflow',\n description:\n \"Guide a shopper's styling journey: set up a style profile, build the wardrobe, create looks, and curate lookbooks.\",\n argsSchema: {\n occasion: z.string().optional().describe('Target occasion for the look'),\n },\n },\n ({ occasion }) => {\n ctx.logger.debug(`Prompt ${stylingName} called`, { occasion });\n const occasionNote = occasion\n ? `Style for the ${occasion} occasion.`\n : `Ask the shopper which CooLookOccasion they're styling for.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Coolandlovely styling workflow. ${occasionNote}\n\n1. **Style Profile**: Use ${p}_profile_get to load the shopper's profile; if missing, create it with ${p}_profile_upsert (palette, stylePreferences, sizes).\n2. **Wardrobe**: Use ${p}_wardrobe_list to review owned pieces; add new ones with ${p}_wardrobe_create.\n3. **Discover Items**: Use ${p}_style_items_list (and ${p}_brands_list) to find catalog pieces that fit the profile/occasion.\n4. **Create Look**: Use ${p}_looks_create with the chosen items, then ${p}_looks_publish.\n5. **Curate Lookbook**: Use ${p}_lookbooks_create and ${p}_lookbooks_add_entry to save looks/items to a board.\n6. **Log Wear**: When the shopper wears a piece, use ${p}_wardrobe_log_wear.\n\nSummarize the styled look and saved lookbook after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Coolandlovely module — domain module for the future-products / commerce-template\n * ecosystem program.\n *\n * Covers all @key entities of wspace-coolandlovely-svc grouped into per-entity\n * sub-APIs: brands, collections, style_items, looks, lookbooks, collaborations,\n * wardrobe, profile (+ a public health probe). Mirrors the rich kadaikodi\n * module's structure (tools/<entity>.ts + resources.ts + prompts.ts) and the\n * canonical tags module's typing discipline.\n *\n * Backend: ~/products/coolandlovely/wspace-coolandlovely-svc/\n * (Hive service name `coolandlovely`). All operations run against the WORKSPACE\n * gateway; the @public cooHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerBrandTools } from './tools/brands.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerStyleItemTools } from './tools/style-items.js';\nimport { registerLookTools } from './tools/looks.js';\nimport { registerLookbookTools } from './tools/lookbooks.js';\nimport { registerCollaborationTools } from './tools/collaborations.js';\nimport { registerWardrobeTools } from './tools/wardrobe.js';\nimport { registerProfileTools } from './tools/profile.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerCoolandlovelyResources } from './resources.js';\nimport { registerCoolandlovelyPrompts } from './prompts.js';\n\nconst coolandlovelyModule: McpModule = {\n id: 'coolandlovely',\n version: '0.0.1',\n displayName: 'Coolandlovely',\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 registerBrandTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerStyleItemTools(server, ctx, trackTool);\n registerLookTools(server, ctx, trackTool);\n registerLookbookTools(server, ctx, trackTool);\n registerCollaborationTools(server, ctx, trackTool);\n registerWardrobeTools(server, ctx, trackTool);\n registerProfileTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerCoolandlovelyResources(server, ctx, trackResource);\n registerCoolandlovelyPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default coolandlovelyModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/coolandlovely/operations.ts","../../../src/modules/coolandlovely/tools/shared.ts","../../../src/modules/coolandlovely/tools/brands.ts","../../../src/modules/coolandlovely/tools/collections.ts","../../../src/modules/coolandlovely/tools/style-items.ts","../../../src/modules/coolandlovely/tools/looks.ts","../../../src/modules/coolandlovely/tools/lookbooks.ts","../../../src/modules/coolandlovely/tools/collaborations.ts","../../../src/modules/coolandlovely/tools/wardrobe.ts","../../../src/modules/coolandlovely/tools/profile.ts","../../../src/modules/coolandlovely/tools/health.ts","../../../src/modules/coolandlovely/resources.ts","../../../src/modules/coolandlovely/prompts.ts","../../../src/modules/coolandlovely/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 Coolandlovely MCP module.\n *\n * Coolandlovely is the fashion & lifestyle platform (commerce-template clone,\n * prod-live backend). Backend subgraph:\n * ~/products/coolandlovely/wspace-coolandlovely-svc/ (Hive service name\n * `coolandlovely`). All root fields carry the inconsistent server `coo` prefix\n * (cooBrand, cooListLooks, cooCreateStyleItem, …) — they are called by their\n * REAL names here.\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 — Coolandlovely inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi module operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const BRAND_FIELDS = `\n id name handle tagline bio status aesthetics tags isFeatured websiteUrl\n workspaceId createdAt updatedAt logo { id } cover { id }\n`;\n\nexport const COLLECTION_FIELDS = `\n id name description brandId season status tags publishAt endAt\n workspaceId createdAt updatedAt cover { id }\n`;\n\nexport const STYLE_ITEM_FIELDS = `\n id name description brandId collectionId category status sku price currency\n colours materials sizes tags workspaceId createdAt updatedAt image { id }\n`;\n\nexport const LOOK_ITEM_FIELDS = `\n id lookId styleItemId position styling workspaceId createdAt updatedAt\n`;\n\nexport const LOOK_FIELDS = `\n id title caption authorId occasion visibility tags isFeatured likeCount\n saveCount collaborationId publishedAt workspaceId createdAt updatedAt\n image { id } items { ${LOOK_ITEM_FIELDS} }\n`;\n\nexport const LOOKBOOK_ENTRY_FIELDS = `\n id lookbookId lookId styleItemId position note workspaceId createdAt updatedAt\n`;\n\nexport const LOOKBOOK_FIELDS = `\n id name description ownerId profileId visibility tags workspaceId\n createdAt updatedAt cover { id } entries { ${LOOKBOOK_ENTRY_FIELDS} }\n`;\n\nexport const COLLABORATION_FIELDS = `\n id title brief brandId creatorId collectionId role status compensation currency\n tags startDate endDate publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const WARDROBE_ITEM_FIELDS = `\n id name brandName category colour size source notes profileId styleItemId tags\n timesWorn lastWornAt workspaceId createdAt updatedAt image { id }\n`;\n\nexport const STYLE_PROFILE_FIELDS = `\n id ownerId displayName bio palette stylePreferences favouriteBrands sizes\n visibility workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Brands\n// ---------------------------------------------------------------------------\n\nexport const GET_BRAND = `\n query CoolandlovelyGetBrand($id: ID!) {\n cooBrand(id: $id) {\n ${BRAND_FIELDS}\n collections { id name status season }\n items { id name status price currency }\n }\n }\n`;\n\nexport const LIST_BRANDS = `\n query CoolandlovelyListBrands(\n $featured: Boolean\n $status: CooBrandStatus\n $pagination: PaginationInput\n ) {\n cooListBrands(featured: $featured, status: $status, pagination: $pagination) {\n items { ${BRAND_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_BRAND = `\n mutation CoolandlovelyCreateBrand($input: CooCreateBrandInput!) {\n cooCreateBrand(input: $input) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_BRAND = `\n mutation CoolandlovelyUpdateBrand($id: ID!, $input: CooUpdateBrandInput!) {\n cooUpdateBrand(id: $id, input: $input) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_BRAND = `\n mutation CoolandlovelyTransitionBrand($id: ID!, $status: CooBrandStatus!) {\n cooTransitionBrand(id: $id, status: $status) {\n ${BRAND_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_BRAND = `\n mutation CoolandlovelyArchiveBrand($id: ID!) {\n cooArchiveBrand(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query CoolandlovelyGetCollection($id: ID!) {\n cooCollection(id: $id) {\n ${COLLECTION_FIELDS}\n items { id name status price currency }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query CoolandlovelyListCollections($brandId: ID, $status: CooCollectionStatus) {\n cooListCollections(brandId: $brandId, status: $status) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation CoolandlovelyCreateCollection($input: CooCreateCollectionInput!) {\n cooCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COLLECTION = `\n mutation CoolandlovelyUpdateCollection($id: ID!, $input: CooUpdateCollectionInput!) {\n cooUpdateCollection(id: $id, input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_COLLECTION = `\n mutation CoolandlovelyPublishCollection($id: ID!) {\n cooPublishCollection(id: $id) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Style items\n// ---------------------------------------------------------------------------\n\nexport const GET_STYLE_ITEM = `\n query CoolandlovelyGetStyleItem($id: ID!) {\n cooStyleItem(id: $id) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const LIST_STYLE_ITEMS = `\n query CoolandlovelyListStyleItems(\n $brandId: ID\n $category: CooStyleCategory\n $collectionId: ID\n $status: CooStyleItemStatus\n $pagination: PaginationInput\n ) {\n cooListStyleItems(\n brandId: $brandId\n category: $category\n collectionId: $collectionId\n status: $status\n pagination: $pagination\n ) {\n items { ${STYLE_ITEM_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_STYLE_ITEM = `\n mutation CoolandlovelyCreateStyleItem($input: CooCreateStyleItemInput!) {\n cooCreateStyleItem(input: $input) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_STYLE_ITEM = `\n mutation CoolandlovelyUpdateStyleItem($id: ID!, $input: CooUpdateStyleItemInput!) {\n cooUpdateStyleItem(id: $id, input: $input) {\n ${STYLE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_STYLE_ITEM = `\n mutation CoolandlovelyArchiveStyleItem($id: ID!) {\n cooArchiveStyleItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Looks\n// ---------------------------------------------------------------------------\n\nexport const GET_LOOK = `\n query CoolandlovelyGetLook($id: ID!) {\n cooLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const LIST_LOOKS = `\n query CoolandlovelyListLooks(\n $authorId: ID\n $featured: Boolean\n $occasion: CooLookOccasion\n $pagination: PaginationInput\n ) {\n cooListLooks(\n authorId: $authorId\n featured: $featured\n occasion: $occasion\n pagination: $pagination\n ) {\n items { ${LOOK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_LOOK = `\n mutation CoolandlovelyCreateLook($input: CooCreateLookInput!) {\n cooCreateLook(input: $input) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LOOK = `\n mutation CoolandlovelyUpdateLook($id: ID!, $input: CooUpdateLookInput!) {\n cooUpdateLook(id: $id, input: $input) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_LOOK = `\n mutation CoolandlovelyPublishLook($id: ID!) {\n cooPublishLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const LIKE_LOOK = `\n mutation CoolandlovelyLikeLook($id: ID!) {\n cooLikeLook(id: $id) {\n ${LOOK_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LOOK = `\n mutation CoolandlovelyDeleteLook($id: ID!) {\n cooDeleteLook(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lookbooks\n// ---------------------------------------------------------------------------\n\nexport const GET_LOOKBOOK = `\n query CoolandlovelyGetLookbook($id: ID!) {\n cooLookbook(id: $id) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const LIST_LOOKBOOKS = `\n query CoolandlovelyListLookbooks($ownerId: ID) {\n cooListLookbooks(ownerId: $ownerId) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LOOKBOOK = `\n mutation CoolandlovelyCreateLookbook($input: CooCreateLookbookInput!) {\n cooCreateLookbook(input: $input) {\n ${LOOKBOOK_FIELDS}\n }\n }\n`;\n\nexport const ADD_LOOKBOOK_ENTRY = `\n mutation CoolandlovelyAddLookbookEntry($input: CooAddLookbookEntryInput!) {\n cooAddLookbookEntry(input: $input) {\n ${LOOKBOOK_ENTRY_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_LOOKBOOK_ENTRY = `\n mutation CoolandlovelyRemoveLookbookEntry($id: ID!) {\n cooRemoveLookbookEntry(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collaborations\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLABORATION = `\n query CoolandlovelyGetCollaboration($id: ID!) {\n cooCollaboration(id: $id) {\n ${COLLABORATION_FIELDS}\n brand { id name handle status }\n looks { id title visibility }\n }\n }\n`;\n\nexport const LIST_COLLABORATIONS = `\n query CoolandlovelyListCollaborations(\n $brandId: ID\n $creatorId: ID\n $status: CooCollaborationStatus\n ) {\n cooListCollaborations(brandId: $brandId, creatorId: $creatorId, status: $status) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\nexport const CREATE_COLLABORATION = `\n mutation CoolandlovelyCreateCollaboration($input: CooCreateCollaborationInput!) {\n cooCreateCollaboration(input: $input) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_COLLABORATION = `\n mutation CoolandlovelyTransitionCollaboration(\n $id: ID!\n $status: CooCollaborationStatus!\n ) {\n cooTransitionCollaboration(id: $id, status: $status) {\n ${COLLABORATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Wardrobe\n// ---------------------------------------------------------------------------\n\nexport const LIST_WARDROBE_ITEMS = `\n query CoolandlovelyListWardrobeItems(\n $category: CooStyleCategory\n $source: CooWardrobeSource\n ) {\n cooListWardrobeItems(category: $category, source: $source) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const CREATE_WARDROBE_ITEM = `\n mutation CoolandlovelyCreateWardrobeItem($input: CooCreateWardrobeItemInput!) {\n cooCreateWardrobeItem(input: $input) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_WARDROBE_ITEM = `\n mutation CoolandlovelyUpdateWardrobeItem(\n $id: ID!\n $input: CooUpdateWardrobeItemInput!\n ) {\n cooUpdateWardrobeItem(id: $id, input: $input) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const LOG_WARDROBE_WEAR = `\n mutation CoolandlovelyLogWardrobeWear($id: ID!) {\n cooLogWardrobeWear(id: $id) {\n ${WARDROBE_ITEM_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_WARDROBE_ITEM = `\n mutation CoolandlovelyRemoveWardrobeItem($id: ID!) {\n cooRemoveWardrobeItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Style profile\n// ---------------------------------------------------------------------------\n\nexport const MY_STYLE_PROFILE = `\n query CoolandlovelyMyStyleProfile {\n cooMyStyleProfile {\n ${STYLE_PROFILE_FIELDS}\n lookbooks { id name visibility }\n wardrobeItems { id name category }\n }\n }\n`;\n\nexport const UPSERT_STYLE_PROFILE = `\n mutation CoolandlovelyUpsertStyleProfile($input: CooUpsertStyleProfileInput!) {\n cooUpsertStyleProfile(input: $input) {\n ${STYLE_PROFILE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query CoolandlovelyHealth {\n cooHealth\n }\n`;\n","/**\n * Shared zod schemas for the Coolandlovely tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. The `sizes` JSON scalar input is\n * modelled as a permissive object record — the backend accepts arbitrary JSON,\n * but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const BrandStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PENDING_REVIEW', 'PUBLISHED', 'SUSPENDED'])\n .describe('Lifecycle/moderation status of a brand storefront');\n\nexport const CollaborationStatusEnum = z\n .enum(['ACCEPTED', 'CANCELLED', 'DECLINED', 'IN_PROGRESS', 'PROPOSED', 'PUBLISHED'])\n .describe('Lifecycle status of a brand↔creator collaboration');\n\nexport const CollaboratorRoleEnum = z\n .enum(['BRAND', 'CREATOR', 'PHOTOGRAPHER', 'STYLIST'])\n .describe('Role a participant plays in a collaboration');\n\nexport const CollectionStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'ENDED', 'LIVE', 'SCHEDULED'])\n .describe('Lifecycle status of a seasonal collection');\n\nexport const LookOccasionEnum = z\n .enum(['ACTIVE', 'EVENING', 'EVERYDAY', 'OTHER', 'PARTY', 'VACATION', 'WEDDING_GUEST', 'WORK'])\n .describe('The occasion a styled look is intended for');\n\nexport const SeasonEnum = z\n .enum(['ALL_SEASON', 'AUTUMN', 'RESORT', 'SPRING', 'SUMMER', 'WINTER'])\n .describe('Fashion season of a collection');\n\nexport const StyleCategoryEnum = z\n .enum([\n 'ACCESSORIES',\n 'BAGS',\n 'BEAUTY',\n 'BOTTOMS',\n 'DRESSES',\n 'FOOTWEAR',\n 'JEWELLERY',\n 'OTHER',\n 'OUTERWEAR',\n 'TOPS',\n ])\n .describe('Top-level fashion category for a style/wardrobe item');\n\nexport const StyleItemStatusEnum = z\n .enum(['ACTIVE', 'DRAFT', 'OUT_OF_STOCK', 'RETIRED'])\n .describe('Availability/lifecycle status of a catalog style item');\n\nexport const VisibilityEnum = z\n .enum(['FOLLOWERS', 'PRIVATE', 'PUBLIC'])\n .describe('Who can see a look, lookbook, or style profile');\n\nexport const WardrobeSourceEnum = z\n .enum(['GIFTED', 'OWNED', 'PURCHASED_ON_PLATFORM', 'WISHLIST'])\n .describe('How a shopper acquired a wardrobe piece');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs (e.g. profile sizes). */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** A single look line item (CooLookItemInput). */\nexport const LookItemInput = z\n .object({\n styleItemId: z.string().min(1).describe('Style item placed in the look'),\n position: z.number().int().optional().describe('Ordering position within the look'),\n styling: z.string().optional().describe('Styling note for this piece'),\n })\n .describe('A style item placed within a look');\n","/**\n * Coolandlovely brand-storefront tools.\n *\n * Surface (6): brands_{get,list,create,update,transition,archive}.\n * Backend root fields carry the `coo` prefix (cooBrand / cooListBrands /\n * cooCreateBrand / …) — all 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 { BrandStatusEnum } from './shared.js';\n\nexport function registerBrandTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_get')),\n {\n title: 'Get Brand',\n description:\n 'Fetch a single Coolandlovely brand storefront by ID, including its collections and catalog items.',\n inputSchema: { id: z.string().describe('Brand ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooBrand: Record<string, unknown> | null;\n }>(ops.GET_BRAND, { id });\n if (!data.cooBrand) return errorResult(`Brand ${id} not found`);\n return jsonResult(data.cooBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_get failed', { error: String(error) });\n return errorResult(\n `Failed to get brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_list')),\n {\n title: 'List Brands',\n description:\n 'List brand storefronts in the bound workspace with optional featured/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n featured: z.boolean().optional().describe('Only featured storefronts'),\n status: BrandStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ featured, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListBrands: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_BRANDS, { featured, status, pagination });\n return jsonResult(data.cooListBrands);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_list failed', { error: String(error) });\n return errorResult(\n `Failed to list brands: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_create')),\n {\n title: 'Create Brand',\n description:\n 'Create a new brand storefront. `handle` must be unique within the workspace. Reference logo/cover images by wspace-files-svc File IDs.',\n inputSchema: {\n name: z.string().min(1).describe('Brand display name'),\n handle: z.string().min(1).describe('URL handle, unique within the workspace'),\n tagline: z.string().optional().describe('Short brand tagline'),\n bio: z.string().optional().describe('Longer brand bio/description'),\n aesthetics: z.array(z.string()).optional().describe('Aesthetic keywords'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n websiteUrl: z.string().optional().describe('External website URL'),\n logoFileId: z.string().optional().describe('wspace-files-svc File ID for the logo'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n },\n },\n async ({\n name,\n handle,\n tagline,\n bio,\n aesthetics,\n tags,\n websiteUrl,\n logoFileId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { name, handle };\n if (tagline !== undefined) input.tagline = tagline;\n if (bio !== undefined) input.bio = bio;\n if (aesthetics !== undefined) input.aesthetics = aesthetics;\n if (tags !== undefined) input.tags = tags;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateBrand: Record<string, unknown>;\n }>(ops.CREATE_BRAND, { input });\n return jsonResult(data.cooCreateBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_create failed', { error: String(error) });\n return errorResult(\n `Failed to create brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_update')),\n {\n title: 'Update Brand',\n description:\n 'Update a brand storefront. At least one mutable field must be provided. Use `isFeatured` to feature the storefront.',\n inputSchema: {\n id: z.string().describe('Brand ID'),\n name: z.string().optional().describe('Updated display name'),\n tagline: z.string().optional().describe('Updated tagline'),\n bio: z.string().optional().describe('Updated bio'),\n aesthetics: z.array(z.string()).optional().describe('Updated aesthetic keywords'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n websiteUrl: z.string().optional().describe('Updated website URL'),\n isFeatured: z.boolean().optional().describe('Toggle featured status'),\n logoFileId: z.string().optional().describe('Updated logo File ID'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n },\n },\n async ({\n id,\n name,\n tagline,\n bio,\n aesthetics,\n tags,\n websiteUrl,\n isFeatured,\n logoFileId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (tagline !== undefined) input.tagline = tagline;\n if (bio !== undefined) input.bio = bio;\n if (aesthetics !== undefined) input.aesthetics = aesthetics;\n if (tags !== undefined) input.tags = tags;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable brand field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateBrand: Record<string, unknown>;\n }>(ops.UPDATE_BRAND, { id, input });\n return jsonResult(data.cooUpdateBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_update failed', { error: String(error) });\n return errorResult(\n `Failed to update brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_transition')),\n {\n title: 'Transition Brand',\n description:\n 'Advance a brand storefront through its publish lifecycle with a validated status transition (DRAFT → PENDING_REVIEW → PUBLISHED, SUSPENDED, ARCHIVED).',\n inputSchema: {\n id: z.string().describe('Brand ID'),\n status: BrandStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooTransitionBrand: Record<string, unknown>;\n }>(ops.TRANSITION_BRAND, { id, status });\n return jsonResult(data.cooTransitionBrand);\n } catch (error) {\n ctx.logger.error('coolandlovely brands_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'brands_archive')),\n {\n title: 'Archive Brand',\n description: 'Archive a brand storefront (soft delete). Returns true on success.',\n inputSchema: { id: z.string().describe('Brand ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooArchiveBrand: boolean }>(\n ops.ARCHIVE_BRAND,\n { id },\n );\n return jsonResult({ archived: data.cooArchiveBrand });\n } catch (error) {\n ctx.logger.error('coolandlovely brands_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive brand: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely seasonal-collection tools.\n *\n * Surface (5): collections_{get,list,create,update,publish}.\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 { SeasonEnum, CollectionStatusEnum } from './shared.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description: 'Fetch a single seasonal collection by ID, including its style items.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.cooCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.cooCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description: 'List seasonal collections, optionally filtered by brand and/or status.',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n status: CollectionStatusEnum.optional().describe('Filter by collection status'),\n },\n },\n async ({ brandId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, { brandId, status });\n return jsonResult(data.cooListCollections);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description:\n 'Create a seasonal collection for a brand. Set `publishAt`/`endAt` (ISO-8601) to schedule the drop.',\n inputSchema: {\n brandId: z.string().min(1).describe('Owning brand ID'),\n name: z.string().min(1).describe('Collection name'),\n description: z.string().optional().describe('Collection description'),\n season: SeasonEnum.optional().describe('Fashion season (default ALL_SEASON)'),\n publishAt: z.string().optional().describe('Scheduled publish time (ISO-8601 DateTime)'),\n endAt: z.string().optional().describe('Scheduled end time (ISO-8601 DateTime)'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ brandId, name, description, season, publishAt, endAt, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = { brandId, name };\n if (description !== undefined) input.description = description;\n if (season !== undefined) input.season = season;\n if (publishAt !== undefined) input.publishAt = publishAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.cooCreateCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_update')),\n {\n title: 'Update Collection',\n description: 'Update a seasonal collection. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Collection ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n season: SeasonEnum.optional().describe('Updated season'),\n publishAt: z.string().optional().describe('Updated publish time (ISO-8601)'),\n endAt: z.string().optional().describe('Updated end time (ISO-8601)'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, description, season, publishAt, endAt, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (season !== undefined) input.season = season;\n if (publishAt !== undefined) input.publishAt = publishAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable collection field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateCollection: Record<string, unknown>;\n }>(ops.UPDATE_COLLECTION, { id, input });\n return jsonResult(data.cooUpdateCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_update failed', { error: String(error) });\n return errorResult(\n `Failed to update collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_publish')),\n {\n title: 'Publish Collection',\n description: 'Publish a collection so it goes LIVE.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooPublishCollection: Record<string, unknown>;\n }>(ops.PUBLISH_COLLECTION, { id });\n return jsonResult(data.cooPublishCollection);\n } catch (error) {\n ctx.logger.error('coolandlovely collections_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely style-item tools — catalog CRUD.\n *\n * Surface (5): style_items_{get,list,create,update,archive}.\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 { StyleCategoryEnum, StyleItemStatusEnum } from './shared.js';\n\nexport function registerStyleItemTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_get')),\n {\n title: 'Get Style Item',\n description: 'Fetch a single catalog style item by ID.',\n inputSchema: { id: z.string().describe('Style item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooStyleItem: Record<string, unknown> | null;\n }>(ops.GET_STYLE_ITEM, { id });\n if (!data.cooStyleItem) return errorResult(`Style item ${id} not found`);\n return jsonResult(data.cooStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_get failed', { error: String(error) });\n return errorResult(\n `Failed to get style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_list')),\n {\n title: 'List Style Items',\n description:\n 'List catalog style items with optional brand/category/collection/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n category: StyleCategoryEnum.optional().describe('Filter by fashion category'),\n collectionId: z.string().optional().describe('Filter by collection ID'),\n status: StyleItemStatusEnum.optional().describe('Filter by item status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ brandId, category, collectionId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListStyleItems: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_STYLE_ITEMS, { brandId, category, collectionId, status, pagination });\n return jsonResult(data.cooListStyleItems);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_list failed', { error: String(error) });\n return errorResult(\n `Failed to list style items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_create')),\n {\n title: 'Create Style Item',\n description:\n 'Create a catalog style item for a brand. Optionally attach it to a collection and set price/currency, materials, colours, and sizes.',\n inputSchema: {\n brandId: z.string().min(1).describe('Owning brand ID'),\n name: z.string().min(1).describe('Item display name'),\n category: StyleCategoryEnum.optional().describe('Fashion category (default OTHER)'),\n collectionId: z.string().optional().describe('Collection to attach the item to'),\n description: z.string().optional().describe('Item description'),\n sku: z.string().optional().describe('Stock-keeping unit'),\n price: z.number().optional().describe('Price'),\n currency: z.string().optional().describe('ISO currency code (e.g. \"USD\")'),\n colours: z.array(z.string()).optional().describe('Available colours'),\n materials: z.array(z.string()).optional().describe('Materials/fabric composition'),\n sizes: z.array(z.string()).optional().describe('Available sizes'),\n imageFileId: z.string().optional().describe('wspace-files-svc File ID for the item image'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n brandId,\n name,\n category,\n collectionId,\n description,\n sku,\n price,\n currency,\n colours,\n materials,\n sizes,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { brandId, name };\n if (category !== undefined) input.category = category;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (description !== undefined) input.description = description;\n if (sku !== undefined) input.sku = sku;\n if (price !== undefined) input.price = price;\n if (currency !== undefined) input.currency = currency;\n if (colours !== undefined) input.colours = colours;\n if (materials !== undefined) input.materials = materials;\n if (sizes !== undefined) input.sizes = sizes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateStyleItem: Record<string, unknown>;\n }>(ops.CREATE_STYLE_ITEM, { input });\n return jsonResult(data.cooCreateStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_create failed', { error: String(error) });\n return errorResult(\n `Failed to create style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_update')),\n {\n title: 'Update Style Item',\n description: 'Update a catalog style item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Style item ID'),\n name: z.string().optional().describe('Updated name'),\n category: StyleCategoryEnum.optional().describe('Updated category'),\n collectionId: z.string().optional().describe('Updated collection ID'),\n description: z.string().optional().describe('Updated description'),\n sku: z.string().optional().describe('Updated SKU'),\n price: z.number().optional().describe('Updated price'),\n currency: z.string().optional().describe('Updated currency code'),\n colours: z.array(z.string()).optional().describe('Updated colours'),\n materials: z.array(z.string()).optional().describe('Updated materials'),\n sizes: z.array(z.string()).optional().describe('Updated sizes'),\n imageFileId: z.string().optional().describe('Updated image File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n category,\n collectionId,\n description,\n sku,\n price,\n currency,\n colours,\n materials,\n sizes,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (description !== undefined) input.description = description;\n if (sku !== undefined) input.sku = sku;\n if (price !== undefined) input.price = price;\n if (currency !== undefined) input.currency = currency;\n if (colours !== undefined) input.colours = colours;\n if (materials !== undefined) input.materials = materials;\n if (sizes !== undefined) input.sizes = sizes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable style-item field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateStyleItem: Record<string, unknown>;\n }>(ops.UPDATE_STYLE_ITEM, { id, input });\n return jsonResult(data.cooUpdateStyleItem);\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_update failed', { error: String(error) });\n return errorResult(\n `Failed to update style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'style_items_archive')),\n {\n title: 'Archive Style Item',\n description: 'Archive (retire) a catalog style item. Returns true on success.',\n inputSchema: { id: z.string().describe('Style item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooArchiveStyleItem: boolean }>(\n ops.ARCHIVE_STYLE_ITEM,\n { id },\n );\n return jsonResult({ archived: data.cooArchiveStyleItem });\n } catch (error) {\n ctx.logger.error('coolandlovely style_items_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive style item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely styled-look tools.\n *\n * Surface (7): looks_{get,list,create,update,publish,like,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 { LookOccasionEnum, VisibilityEnum, LookItemInput } from './shared.js';\n\nexport function registerLookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_get')),\n {\n title: 'Get Look',\n description: 'Fetch a single styled look by ID, including its line items.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLook: Record<string, unknown> | null;\n }>(ops.GET_LOOK, { id });\n if (!data.cooLook) return errorResult(`Look ${id} not found`);\n return jsonResult(data.cooLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_list')),\n {\n title: 'List Looks',\n description:\n 'List styled looks with optional author/featured/occasion filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n authorId: z.string().optional().describe('Filter by author user ID'),\n featured: z.boolean().optional().describe('Only featured looks'),\n occasion: LookOccasionEnum.optional().describe('Filter by occasion'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ authorId, featured, occasion, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cooListLooks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_LOOKS, { authorId, featured, occasion, pagination });\n return jsonResult(data.cooListLooks);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list looks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_create')),\n {\n title: 'Create Look',\n description:\n 'Create a styled look. Attach style items via `items` (each references a styleItemId with optional position/styling).',\n inputSchema: {\n title: z.string().min(1).describe('Look title'),\n caption: z.string().optional().describe('Look caption/description'),\n occasion: LookOccasionEnum.optional().describe('Occasion (default EVERYDAY)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n collaborationId: z.string().optional().describe('Related collaboration ID'),\n imageFileId: z.string().optional().describe('wspace-files-svc File ID for the look photo'),\n items: z.array(LookItemInput).optional().describe('Style items placed in the look'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ title, caption, occasion, visibility, collaborationId, imageFileId, items, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (caption !== undefined) input.caption = caption;\n if (occasion !== undefined) input.occasion = occasion;\n if (visibility !== undefined) input.visibility = visibility;\n if (collaborationId !== undefined) input.collaborationId = collaborationId;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (items !== undefined) input.items = items;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateLook: Record<string, unknown>;\n }>(ops.CREATE_LOOK, { input });\n return jsonResult(data.cooCreateLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_update')),\n {\n title: 'Update Look',\n description: 'Update a styled look. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Look ID'),\n title: z.string().optional().describe('Updated title'),\n caption: z.string().optional().describe('Updated caption'),\n occasion: LookOccasionEnum.optional().describe('Updated occasion'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n imageFileId: z.string().optional().describe('Updated look photo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, title, caption, occasion, visibility, imageFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (caption !== undefined) input.caption = caption;\n if (occasion !== undefined) input.occasion = occasion;\n if (visibility !== undefined) input.visibility = visibility;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable look field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateLook: Record<string, unknown>;\n }>(ops.UPDATE_LOOK, { id, input });\n return jsonResult(data.cooUpdateLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_publish')),\n {\n title: 'Publish Look',\n description: 'Publish a look so it becomes visible per its visibility setting.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooPublishLook: Record<string, unknown>;\n }>(ops.PUBLISH_LOOK, { id });\n return jsonResult(data.cooPublishLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_like')),\n {\n title: 'Like Look',\n description: 'Like a published look (increments its likeCount).',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLikeLook: Record<string, unknown>;\n }>(ops.LIKE_LOOK, { id });\n return jsonResult(data.cooLikeLook);\n } catch (error) {\n ctx.logger.error('coolandlovely looks_like failed', { error: String(error) });\n return errorResult(\n `Failed to like look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'looks_delete')),\n {\n title: 'Delete Look',\n description: 'Delete a styled look. Returns true on success.',\n inputSchema: { id: z.string().describe('Look ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooDeleteLook: boolean }>(ops.DELETE_LOOK, {\n id,\n });\n return jsonResult({ deleted: data.cooDeleteLook });\n } catch (error) {\n ctx.logger.error('coolandlovely looks_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete look: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely lookbook tools — curated boards + entries.\n *\n * Surface (5): lookbooks_{get,list,create,add_entry,remove_entry}.\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 { VisibilityEnum } from './shared.js';\n\nexport function registerLookbookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_get')),\n {\n title: 'Get Lookbook',\n description: 'Fetch a single lookbook by ID, including its entries.',\n inputSchema: { id: z.string().describe('Lookbook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLookbook: Record<string, unknown> | null;\n }>(ops.GET_LOOKBOOK, { id });\n if (!data.cooLookbook) return errorResult(`Lookbook ${id} not found`);\n return jsonResult(data.cooLookbook);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get lookbook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_list')),\n {\n title: 'List Lookbooks',\n description: 'List lookbooks, optionally filtered by owner.',\n inputSchema: {\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListLookbooks: Array<Record<string, unknown>>;\n }>(ops.LIST_LOOKBOOKS, { ownerId });\n return jsonResult(data.cooListLookbooks);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list lookbooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_create')),\n {\n title: 'Create Lookbook',\n description: 'Create a curated lookbook board. `visibility` defaults to PRIVATE.',\n inputSchema: {\n name: z.string().min(1).describe('Lookbook name'),\n description: z.string().optional().describe('Lookbook description'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ name, description, visibility, coverFileId, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateLookbook: Record<string, unknown>;\n }>(ops.CREATE_LOOKBOOK, { input });\n return jsonResult(data.cooCreateLookbook);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create lookbook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_add_entry')),\n {\n title: 'Add Lookbook Entry',\n description:\n 'Add an entry to a lookbook — reference either a look (`lookId`) or a style item (`styleItemId`), with an optional position and note.',\n inputSchema: {\n lookbookId: z.string().min(1).describe('Target lookbook ID'),\n lookId: z.string().optional().describe('Look to add (mutually exclusive with styleItemId)'),\n styleItemId: z\n .string()\n .optional()\n .describe('Style item to add (mutually exclusive with lookId)'),\n position: z.number().int().optional().describe('Ordering position within the lookbook'),\n note: z.string().optional().describe('Curator note for the entry'),\n },\n },\n async ({ lookbookId, lookId, styleItemId, position, note }) => {\n try {\n const input: Record<string, unknown> = { lookbookId };\n if (lookId !== undefined) input.lookId = lookId;\n if (styleItemId !== undefined) input.styleItemId = styleItemId;\n if (position !== undefined) input.position = position;\n if (note !== undefined) input.note = note;\n\n const data = await ctx.gql.workspace.request<{\n cooAddLookbookEntry: Record<string, unknown>;\n }>(ops.ADD_LOOKBOOK_ENTRY, { input });\n return jsonResult(data.cooAddLookbookEntry);\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_add_entry failed', { error: String(error) });\n return errorResult(\n `Failed to add lookbook entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lookbooks_remove_entry')),\n {\n title: 'Remove Lookbook Entry',\n description: 'Remove an entry from a lookbook by entry ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Lookbook entry ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooRemoveLookbookEntry: boolean }>(\n ops.REMOVE_LOOKBOOK_ENTRY,\n { id },\n );\n return jsonResult({ removed: data.cooRemoveLookbookEntry });\n } catch (error) {\n ctx.logger.error('coolandlovely lookbooks_remove_entry failed', { error: String(error) });\n return errorResult(\n `Failed to remove lookbook entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely collaboration tools — brand ↔ creator partnerships.\n *\n * Surface (4): collaborations_{get,list,create,transition}.\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 { CollaboratorRoleEnum, CollaborationStatusEnum } from './shared.js';\n\nexport function registerCollaborationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_get')),\n {\n title: 'Get Collaboration',\n description: 'Fetch a single collaboration by ID, including its brand and resulting looks.',\n inputSchema: { id: z.string().describe('Collaboration ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooCollaboration: Record<string, unknown> | null;\n }>(ops.GET_COLLABORATION, { id });\n if (!data.cooCollaboration) return errorResult(`Collaboration ${id} not found`);\n return jsonResult(data.cooCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_list')),\n {\n title: 'List Collaborations',\n description: 'List collaborations, optionally filtered by brand, creator, and/or status.',\n inputSchema: {\n brandId: z.string().optional().describe('Filter by brand ID'),\n creatorId: z.string().optional().describe('Filter by creator user ID'),\n status: CollaborationStatusEnum.optional().describe('Filter by collaboration status'),\n },\n },\n async ({ brandId, creatorId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListCollaborations: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLABORATIONS, { brandId, creatorId, status });\n return jsonResult(data.cooListCollaborations);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collaborations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_create')),\n {\n title: 'Create Collaboration',\n description:\n 'Propose a brand ↔ creator collaboration. `role` defaults to CREATOR. Optionally set compensation/currency, a collection, and start/end dates (ISO-8601).',\n inputSchema: {\n brandId: z.string().min(1).describe('Brand ID'),\n creatorId: z.string().min(1).describe('Creator user ID'),\n title: z.string().min(1).describe('Collaboration title'),\n role: CollaboratorRoleEnum.optional().describe('Collaborator role (default CREATOR)'),\n brief: z.string().optional().describe('Collaboration brief'),\n collectionId: z.string().optional().describe('Related collection ID'),\n compensation: z.number().optional().describe('Compensation amount'),\n currency: z.string().optional().describe('ISO currency code'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n brandId,\n creatorId,\n title,\n role,\n brief,\n collectionId,\n compensation,\n currency,\n startDate,\n endDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { brandId, creatorId, title };\n if (role !== undefined) input.role = role;\n if (brief !== undefined) input.brief = brief;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (compensation !== undefined) input.compensation = compensation;\n if (currency !== undefined) input.currency = currency;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateCollaboration: Record<string, unknown>;\n }>(ops.CREATE_COLLABORATION, { input });\n return jsonResult(data.cooCreateCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collaborations_transition')),\n {\n title: 'Transition Collaboration',\n description:\n 'Advance a collaboration through its lifecycle with a validated status transition (PROPOSED → ACCEPTED/DECLINED → IN_PROGRESS → PUBLISHED, or CANCELLED).',\n inputSchema: {\n id: z.string().describe('Collaboration ID'),\n status: CollaborationStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooTransitionCollaboration: Record<string, unknown>;\n }>(ops.TRANSITION_COLLABORATION, { id, status });\n return jsonResult(data.cooTransitionCollaboration);\n } catch (error) {\n ctx.logger.error('coolandlovely collaborations_transition failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to transition collaboration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely wardrobe tools — the shopper's personal closet (self-scoped).\n *\n * Surface (5): wardrobe_{list,create,update,log_wear,remove}.\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 { StyleCategoryEnum, WardrobeSourceEnum } from './shared.js';\n\nexport function registerWardrobeTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_list')),\n {\n title: 'List Wardrobe Items',\n description:\n \"List the calling shopper's own wardrobe items, optionally filtered by category and/or source.\",\n inputSchema: {\n category: StyleCategoryEnum.optional().describe('Filter by category'),\n source: WardrobeSourceEnum.optional().describe('Filter by how the piece was acquired'),\n },\n },\n async ({ category, source }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooListWardrobeItems: Array<Record<string, unknown>>;\n }>(ops.LIST_WARDROBE_ITEMS, { category, source });\n return jsonResult(data.cooListWardrobeItems);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_list failed', { error: String(error) });\n return errorResult(\n `Failed to list wardrobe items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_create')),\n {\n title: 'Create Wardrobe Item',\n description:\n \"Add a piece to the shopper's wardrobe. Optionally link it to a catalog style item via `styleItemId`.\",\n inputSchema: {\n name: z.string().min(1).describe('Item name'),\n category: StyleCategoryEnum.optional().describe('Category (default OTHER)'),\n source: WardrobeSourceEnum.optional().describe('How it was acquired (default OWNED)'),\n brandName: z.string().optional().describe('Free-text brand name'),\n colour: z.string().optional().describe('Colour'),\n size: z.string().optional().describe('Size'),\n notes: z.string().optional().describe('Personal notes'),\n styleItemId: z.string().optional().describe('Linked catalog style item ID'),\n imageFileId: z\n .string()\n .optional()\n .describe(\"wspace-files-svc File ID for the shopper's photo\"),\n tags: z.array(z.string()).optional().describe('Personal tags'),\n },\n },\n async ({\n name,\n category,\n source,\n brandName,\n colour,\n size,\n notes,\n styleItemId,\n imageFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (category !== undefined) input.category = category;\n if (source !== undefined) input.source = source;\n if (brandName !== undefined) input.brandName = brandName;\n if (colour !== undefined) input.colour = colour;\n if (size !== undefined) input.size = size;\n if (notes !== undefined) input.notes = notes;\n if (styleItemId !== undefined) input.styleItemId = styleItemId;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cooCreateWardrobeItem: Record<string, unknown>;\n }>(ops.CREATE_WARDROBE_ITEM, { input });\n return jsonResult(data.cooCreateWardrobeItem);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_create failed', { error: String(error) });\n return errorResult(\n `Failed to create wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_update')),\n {\n title: 'Update Wardrobe Item',\n description: 'Update a wardrobe item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Wardrobe item ID'),\n name: z.string().optional().describe('Updated name'),\n category: StyleCategoryEnum.optional().describe('Updated category'),\n source: WardrobeSourceEnum.optional().describe('Updated source'),\n brandName: z.string().optional().describe('Updated brand name'),\n colour: z.string().optional().describe('Updated colour'),\n size: z.string().optional().describe('Updated size'),\n notes: z.string().optional().describe('Updated notes'),\n imageFileId: z.string().optional().describe('Updated photo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, category, source, brandName, colour, size, notes, imageFileId, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (category !== undefined) input.category = category;\n if (source !== undefined) input.source = source;\n if (brandName !== undefined) input.brandName = brandName;\n if (colour !== undefined) input.colour = colour;\n if (size !== undefined) input.size = size;\n if (notes !== undefined) input.notes = notes;\n if (imageFileId !== undefined) input.imageFileId = imageFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable wardrobe field');\n }\n\n const data = await ctx.gql.workspace.request<{\n cooUpdateWardrobeItem: Record<string, unknown>;\n }>(ops.UPDATE_WARDROBE_ITEM, { id, input });\n return jsonResult(data.cooUpdateWardrobeItem);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_update failed', { error: String(error) });\n return errorResult(\n `Failed to update wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_log_wear')),\n {\n title: 'Log Wardrobe Wear',\n description: 'Log that the shopper wore a wardrobe piece (increments timesWorn).',\n inputSchema: { id: z.string().describe('Wardrobe item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooLogWardrobeWear: Record<string, unknown>;\n }>(ops.LOG_WARDROBE_WEAR, { id });\n return jsonResult(data.cooLogWardrobeWear);\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_log_wear failed', { error: String(error) });\n return errorResult(\n `Failed to log wardrobe wear: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'wardrobe_remove')),\n {\n title: 'Remove Wardrobe Item',\n description: 'Remove a wardrobe item. Returns true on success.',\n inputSchema: { id: z.string().describe('Wardrobe item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cooRemoveWardrobeItem: boolean }>(\n ops.REMOVE_WARDROBE_ITEM,\n { id },\n );\n return jsonResult({ removed: data.cooRemoveWardrobeItem });\n } catch (error) {\n ctx.logger.error('coolandlovely wardrobe_remove failed', { error: String(error) });\n return errorResult(\n `Failed to remove wardrobe item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely style-profile tools (self-scoped).\n *\n * Surface (2): profile_{get,upsert}. The calling shopper has at most one\n * style profile per workspace (cooMyStyleProfile / cooUpsertStyleProfile).\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 { VisibilityEnum, JsonObject } from './shared.js';\n\nexport function registerProfileTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'profile_get')),\n {\n title: 'Get My Style Profile',\n description:\n \"Fetch the calling shopper's own style profile (workspace-scoped), including lookbooks and wardrobe items.\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n cooMyStyleProfile: Record<string, unknown> | null;\n }>(ops.MY_STYLE_PROFILE, {});\n if (!data.cooMyStyleProfile)\n return errorResult('No style profile exists yet for this shopper');\n return jsonResult(data.cooMyStyleProfile);\n } catch (error) {\n ctx.logger.error('coolandlovely profile_get failed', { error: String(error) });\n return errorResult(\n `Failed to get style profile: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'profile_upsert')),\n {\n title: 'Upsert My Style Profile',\n description:\n \"Create or update the calling shopper's style profile (one per workspace). `sizes` is free-form JSON (e.g. { top: 'M', shoe: '8' }).\",\n inputSchema: {\n displayName: z.string().optional().describe('Public display name'),\n bio: z.string().optional().describe('Profile bio'),\n palette: z.array(z.string()).optional().describe('Preferred colour palette'),\n stylePreferences: z.array(z.string()).optional().describe('Style preference keywords'),\n favouriteBrands: z.array(z.string()).optional().describe('Favourite brand names'),\n sizes: JsonObject.optional().describe('Size profile JSON (e.g. { top, bottom, shoe })'),\n visibility: VisibilityEnum.optional().describe('Profile visibility (default PRIVATE)'),\n },\n },\n async ({ displayName, bio, palette, stylePreferences, favouriteBrands, sizes, visibility }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (bio !== undefined) input.bio = bio;\n if (palette !== undefined) input.palette = palette;\n if (stylePreferences !== undefined) input.stylePreferences = stylePreferences;\n if (favouriteBrands !== undefined) input.favouriteBrands = favouriteBrands;\n if (sizes !== undefined) input.sizes = sizes;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n cooUpsertStyleProfile: Record<string, unknown>;\n }>(ops.UPSERT_STYLE_PROFILE, { input });\n return jsonResult(data.cooUpsertStyleProfile);\n } catch (error) {\n ctx.logger.error('coolandlovely profile_upsert failed', { error: String(error) });\n return errorResult(\n `Failed to upsert style profile: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Coolandlovely health tool.\n *\n * Surface (1): health — maps to the @public cooHealth query (no auth\n * required); the rest of the surface is @rbac wspace/self-scoped.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Coolandlovely Health Check',\n description:\n 'Public liveness/identity probe for the Coolandlovely subgraph (cooHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ cooHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.cooHealth });\n } catch (error) {\n ctx.logger.error('coolandlovely health failed', { error: String(error) });\n return errorResult(\n `Coolandlovely health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_BRANDS, LIST_LOOKS, LIST_STYLE_ITEMS } from './operations.js';\n\n/**\n * Read-only Coolandlovely 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 registerCoolandlovelyResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const brandsUri = track(mcpResourceUri(ctx.productName, 'brands'));\n const looksUri = track(mcpResourceUri(ctx.productName, 'looks'));\n const styleItemsUri = track(mcpResourceUri(ctx.productName, 'style-items'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'coolandlovely-schema',\n schemaUri,\n {\n title: 'Coolandlovely Domain Schema',\n description:\n 'Overview of the Coolandlovely fashion & lifestyle 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 = `# Coolandlovely Domain (Overview)\n\nFashion & lifestyle platform — brand storefronts, seasonal collections,\ncatalog items, styled looks, lookbooks, creator collaborations, and personal\nwardrobes/style profiles.\n\n## Entities\n- CooBrand — a brand storefront (collections, style items)\n- CooCollection — a seasonal collection within a brand\n- CooStyleItem — a catalog item (product) within a brand/collection\n- CooLook (+CooLookItem) — a styled look + the items placed in it\n- CooLookbook (+CooLookbookEntry) — a curated board of looks/items\n- CooCollaboration — a brand ↔ creator partnership\n- CooWardrobeItem — a shopper's personal closet piece\n- CooStyleProfile — the calling shopper's style profile (one per workspace)\n\n## Enums\n- CooBrandStatus: DRAFT, PENDING_REVIEW, PUBLISHED, SUSPENDED, ARCHIVED\n- CooCollectionStatus: DRAFT, SCHEDULED, LIVE, ENDED, ARCHIVED\n- CooStyleItemStatus: DRAFT, ACTIVE, OUT_OF_STOCK, RETIRED\n- CooStyleCategory: TOPS, BOTTOMS, DRESSES, OUTERWEAR, FOOTWEAR, BAGS, ACCESSORIES, JEWELLERY, BEAUTY, OTHER\n- CooSeason: ALL_SEASON, SPRING, SUMMER, AUTUMN, WINTER, RESORT\n- CooLookOccasion: EVERYDAY, WORK, EVENING, PARTY, WEDDING_GUEST, VACATION, ACTIVE, OTHER\n- CooVisibility: PUBLIC, FOLLOWERS, PRIVATE\n- CooCollaborationStatus: PROPOSED, ACCEPTED, DECLINED, IN_PROGRESS, PUBLISHED, CANCELLED\n- CooCollaboratorRole: BRAND, CREATOR, STYLIST, PHOTOGRAPHER\n- CooWardrobeSource: OWNED, PURCHASED_ON_PLATFORM, GIFTED, WISHLIST\n\n## Tool groups\nbrands, collections, style_items, looks, lookbooks, collaborations, wardrobe, profile.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://brands — featured/published brand directory\n server.registerResource(\n 'coolandlovely-brands',\n brandsUri,\n {\n title: 'Coolandlovely Brand Directory',\n description: 'The first 50 brand storefronts in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${brandsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListBrands: unknown }>(LIST_BRANDS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: brandsUri,\n text: JSON.stringify(data.cooListBrands, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: brandsUri,\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>://looks — recent looks feed\n server.registerResource(\n 'coolandlovely-looks',\n looksUri,\n {\n title: 'Coolandlovely Looks Feed',\n description: 'The first 50 styled looks in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${looksUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListLooks: unknown }>(LIST_LOOKS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: looksUri,\n text: JSON.stringify(data.cooListLooks, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: looksUri,\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>://style-items — catalog snapshot\n server.registerResource(\n 'coolandlovely-style-items',\n styleItemsUri,\n {\n title: 'Coolandlovely Catalog',\n description: 'The first 50 catalog style items in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${styleItemsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cooListStyleItems: unknown }>(\n LIST_STYLE_ITEMS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: styleItemsUri,\n text: JSON.stringify(data.cooListStyleItems, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: styleItemsUri,\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 * Coolandlovely MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerCoolandlovelyPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'brand-onboarding'));\n const stylingName = track(mcpPromptName(p, 'styling-workflow'));\n\n // <product>-brand-onboarding — stand up a brand + collection + catalog\n server.registerPrompt(\n onboardingName,\n {\n title: 'Brand Onboarding',\n description:\n 'Guide for onboarding a new Coolandlovely brand storefront end to end: create the brand, open a seasonal collection, add catalog style items, and publish.',\n argsSchema: {\n name: z.string().optional().describe('Brand name'),\n season: z.string().optional().describe('Launch season'),\n },\n },\n ({ name, season }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { name, season });\n const nameNote = name ? `Use the brand name \"${name}\".` : 'Ask the user for the brand name.';\n const seasonNote = season ? `Use season ${season}.` : 'Help the user pick a CooSeason.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new Coolandlovely brand storefront.\n\n1. **Create Brand**: Use ${p}_brands_create. ${nameNote} Provide a unique handle, plus optional tagline/bio/aesthetics and logo/cover File IDs.\n2. **Open Collection**: Use ${p}_collections_create for the new brandId. ${seasonNote} Set publishAt/endAt to schedule the drop.\n3. **Add Style Items**: Use ${p}_style_items_create for each catalog piece — set category, price/currency, colours/materials/sizes, and attach the collectionId.\n4. **Verify Catalog**: Use ${p}_style_items_list filtered by the new brandId.\n5. **Publish**: Use ${p}_collections_publish to take the collection LIVE, then ${p}_brands_transition with status=PUBLISHED.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-styling-workflow — shopper styling journey\n server.registerPrompt(\n stylingName,\n {\n title: 'Styling Workflow',\n description:\n \"Guide a shopper's styling journey: set up a style profile, build the wardrobe, create looks, and curate lookbooks.\",\n argsSchema: {\n occasion: z.string().optional().describe('Target occasion for the look'),\n },\n },\n ({ occasion }) => {\n ctx.logger.debug(`Prompt ${stylingName} called`, { occasion });\n const occasionNote = occasion\n ? `Style for the ${occasion} occasion.`\n : `Ask the shopper which CooLookOccasion they're styling for.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a Coolandlovely styling workflow. ${occasionNote}\n\n1. **Style Profile**: Use ${p}_profile_get to load the shopper's profile; if missing, create it with ${p}_profile_upsert (palette, stylePreferences, sizes).\n2. **Wardrobe**: Use ${p}_wardrobe_list to review owned pieces; add new ones with ${p}_wardrobe_create.\n3. **Discover Items**: Use ${p}_style_items_list (and ${p}_brands_list) to find catalog pieces that fit the profile/occasion.\n4. **Create Look**: Use ${p}_looks_create with the chosen items, then ${p}_looks_publish.\n5. **Curate Lookbook**: Use ${p}_lookbooks_create and ${p}_lookbooks_add_entry to save looks/items to a board.\n6. **Log Wear**: When the shopper wears a piece, use ${p}_wardrobe_log_wear.\n\nSummarize the styled look and saved lookbook after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Coolandlovely module — domain module for the future-products / commerce-template\n * ecosystem program.\n *\n * Covers all @key entities of wspace-coolandlovely-svc grouped into per-entity\n * sub-APIs: brands, collections, style_items, looks, lookbooks, collaborations,\n * wardrobe, profile (+ a public health probe). Mirrors the rich kadaikodi\n * module's structure (tools/<entity>.ts + resources.ts + prompts.ts) and the\n * canonical tags module's typing discipline.\n *\n * Backend: ~/products/coolandlovely/wspace-coolandlovely-svc/\n * (Hive service name `coolandlovely`). All operations run against the WORKSPACE\n * gateway; the @public cooHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerBrandTools } from './tools/brands.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerStyleItemTools } from './tools/style-items.js';\nimport { registerLookTools } from './tools/looks.js';\nimport { registerLookbookTools } from './tools/lookbooks.js';\nimport { registerCollaborationTools } from './tools/collaborations.js';\nimport { registerWardrobeTools } from './tools/wardrobe.js';\nimport { registerProfileTools } from './tools/profile.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerCoolandlovelyResources } from './resources.js';\nimport { registerCoolandlovelyPrompts } from './prompts.js';\n\nconst coolandlovelyModule: McpModule = {\n id: 'coolandlovely',\n version: '0.0.1',\n displayName: 'Coolandlovely',\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 registerBrandTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerStyleItemTools(server, ctx, trackTool);\n registerLookTools(server, ctx, trackTool);\n registerLookbookTools(server, ctx, trackTool);\n registerCollaborationTools(server, ctx, trackTool);\n registerWardrobeTools(server, ctx, trackTool);\n registerProfileTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerCoolandlovelyResources(server, ctx, trackResource);\n registerCoolandlovelyPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default coolandlovelyModule;\n"]}