@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.
- package/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
- package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
- package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
- package/dist/chunk-YOSQUY3M.js.map +1 -0
- package/dist/core/index.cjs +101 -32
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +97 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.cjs +14 -14
- package/dist/modules/adaptercloud/index.cjs.map +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +14 -14
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +14 -14
- package/dist/modules/assethandler/index.cjs.map +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +14 -14
- package/dist/modules/atheletebridge/index.cjs.map +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +14 -14
- package/dist/modules/auth/index.cjs.map +1 -1
- package/dist/modules/auth/index.js +3 -3
- package/dist/modules/billing/index.cjs +14 -14
- package/dist/modules/billing/index.cjs.map +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +14 -14
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +14 -14
- package/dist/modules/buildmyiq/index.cjs.map +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +14 -14
- package/dist/modules/channels/index.cjs.map +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs +14 -14
- package/dist/modules/collabkin/index.cjs.map +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +14 -14
- package/dist/modules/comradecircle/index.cjs.map +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs +14 -14
- package/dist/modules/conversations/index.cjs.map +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs +14 -14
- package/dist/modules/coolandlovely/index.cjs.map +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +14 -14
- package/dist/modules/cosmicintersection/index.cjs.map +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +14 -14
- package/dist/modules/crewfoundry/index.cjs.map +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +14 -14
- package/dist/modules/devportal/index.cjs.map +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +14 -14
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.cjs +14 -14
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +14 -14
- package/dist/modules/export/index.cjs.map +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +14 -14
- package/dist/modules/files/index.cjs.map +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +14 -14
- package/dist/modules/ggnomad/index.cjs.map +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +14 -14
- package/dist/modules/govcitizenhub/index.cjs.map +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs +14 -14
- package/dist/modules/groups/index.cjs.map +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs +14 -14
- package/dist/modules/headshotmarketing/index.cjs.map +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.cjs +21 -19
- package/dist/modules/health/index.cjs.map +1 -1
- package/dist/modules/health/index.js +1 -1
- package/dist/modules/hookmovies/index.cjs +14 -14
- package/dist/modules/hookmovies/index.cjs.map +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +14 -14
- package/dist/modules/housingvista/index.cjs.map +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +14 -14
- package/dist/modules/integrations/index.cjs.map +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +14 -14
- package/dist/modules/intelwatchtower/index.cjs.map +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs +14 -14
- package/dist/modules/kadaikodi/index.cjs.map +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +14 -14
- package/dist/modules/labsofscience/index.cjs.map +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs +14 -14
- package/dist/modules/manufacturedops/index.cjs.map +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs +16 -42
- package/dist/modules/movethewheels/index.cjs.map +1 -1
- package/dist/modules/movethewheels/index.js +3 -29
- package/dist/modules/movethewheels/index.js.map +1 -1
- package/dist/modules/mybodyshield/index.cjs +14 -14
- package/dist/modules/mybodyshield/index.cjs.map +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +14 -14
- package/dist/modules/notifications/index.cjs.map +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.cjs +14 -14
- package/dist/modules/organizations/index.cjs.map +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.cjs +14 -14
- package/dist/modules/planmagnet/index.cjs.map +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +14 -14
- package/dist/modules/products/index.cjs.map +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs +14 -14
- package/dist/modules/proserviceworld/index.cjs.map +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs +14 -14
- package/dist/modules/rbac/index.cjs.map +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +14 -14
- package/dist/modules/sandbox/index.cjs.map +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +14 -14
- package/dist/modules/scheduler/index.cjs.map +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +14 -14
- package/dist/modules/security/index.cjs.map +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs +14 -14
- package/dist/modules/semanticfed/index.cjs.map +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +14 -14
- package/dist/modules/store/index.cjs.map +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs +14 -14
- package/dist/modules/subscriberbot/index.cjs.map +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs +14 -14
- package/dist/modules/support/index.cjs.map +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +14 -14
- package/dist/modules/tags/index.cjs.map +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +14 -14
- package/dist/modules/technospam/index.cjs.map +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +14 -14
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.cjs +14 -14
- package/dist/modules/theglobalfuel/index.cjs.map +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +21 -16
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +8 -3
- package/dist/modules/timecampus/index.js.map +1 -1
- package/dist/modules/tours/index.cjs +14 -14
- package/dist/modules/tours/index.cjs.map +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs +14 -14
- package/dist/modules/vibecontrols/index.cjs.map +1 -1
- package/dist/modules/vibecontrols/index.js +2 -2
- package/dist/modules/workspaces/index.cjs +14 -14
- package/dist/modules/workspaces/index.cjs.map +1 -1
- package/dist/modules/workspaces/index.js +1 -1
- package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
- package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
- package/package.json +1 -1
- 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/kadaikodi/operations.ts","../../../src/modules/kadaikodi/tools/shared.ts","../../../src/modules/kadaikodi/tools/providers.ts","../../../src/modules/kadaikodi/tools/workers.ts","../../../src/modules/kadaikodi/tools/tasks.ts","../../../src/modules/kadaikodi/tools/offerings.ts","../../../src/modules/kadaikodi/tools/orders.ts","../../../src/modules/kadaikodi/tools/reviews.ts","../../../src/modules/kadaikodi/tools/investments.ts","../../../src/modules/kadaikodi/tools/analytics.ts","../../../src/modules/kadaikodi/resources.ts","../../../src/modules/kadaikodi/prompts.ts","../../../src/modules/kadaikodi/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 Kadaikodi MCP module.\n *\n * Kadaikodi is the hyperlocal services + commerce + community-investment\n * marketplace (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/kadaikodi/wspace-kadaikodi-svc/ (Hive service name `kadaikodi`).\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 — Kadaikodi inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols module's operations file.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PROVIDER_FIELDS = `\n id name slug description category status offeringType serviceTypes\n location businessHours rating totalRatings averageOrderValue\n analyticsSnapshot ownerId workspaceId createdAt updatedAt\n`;\n\nexport const OFFERING_FIELDS = `\n id name slug description category kind price originalPrice durationMinutes\n stock isAvailable serviceType media metadata tags providerId workspaceId\n createdAt updatedAt\n`;\n\nexport const ORDER_ITEM_FIELDS = `\n id orderId offeringId name quantity unitPrice totalPrice customizations workspaceId\n`;\n\nexport const ORDER_FIELDS = `\n id orderNumber customerId providerId assignedWorkerId status paymentStatus\n paymentMethod fulfillmentType subtotal tax discount deliveryFee total\n deliveryAddress notes timeline workspaceId createdAt updatedAt\n items { ${ORDER_ITEM_FIELDS} }\n`;\n\nexport const REVIEW_FIELDS = `\n id providerId customerId orderId rating review response workspaceId\n createdAt updatedAt\n`;\n\nexport const WORKER_FIELDS = `\n id providerId workerId name role status metadata workspaceId\n tasks { id title type status priority orderId dueAt completedAt }\n`;\n\nexport const TASK_FIELDS = `\n id workerRefId title description type status priority orderId location\n dueAt completedAt workspaceId\n`;\n\nexport const OPPORTUNITY_FIELDS = `\n id providerId title description targetAmount raisedAmount minimumInvestment\n expectedReturnsPct lockInMonths riskLevel status businessMetrics terms\n expiresAt workspaceId createdAt updatedAt\n`;\n\nexport const INVESTMENT_TXN_FIELDS = `\n id investmentId type amount notes createdAt workspaceId\n`;\n\nexport const INVESTMENT_FIELDS = `\n id opportunityId investorId amount currentValue realizedReturns\n expectedReturnsPct status investedAt maturedAt workspaceId\n transactions { ${INVESTMENT_TXN_FIELDS} }\n`;\n\n// ---------------------------------------------------------------------------\n// Providers\n// ---------------------------------------------------------------------------\n\nexport const GET_SERVICE_PROVIDER = `\n query KadaikodiGetServiceProvider($id: ID!) {\n getServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n offerings { id name slug kind price isAvailable }\n workers { id name role status }\n investmentOpportunities { id title status targetAmount raisedAmount }\n }\n }\n`;\n\nexport const LIST_SERVICE_PROVIDERS = `\n query KadaikodiListServiceProviders(\n $filter: KadaikodiProviderFilterInput\n $limit: Int\n $offset: Int\n ) {\n listServiceProviders(filter: $filter, limit: $limit, offset: $offset) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const CREATE_SERVICE_PROVIDER = `\n mutation KadaikodiCreateServiceProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SERVICE_PROVIDER = `\n mutation KadaikodiUpdateServiceProvider(\n $id: ID!\n $input: KadaikodiUpdateServiceProviderInput!\n ) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workers + tasks\n// ---------------------------------------------------------------------------\n\nexport const LIST_PROVIDER_WORKERS = `\n query KadaikodiListProviderWorkers($providerId: String!, $limit: Int, $offset: Int) {\n listProviderWorkers(providerId: $providerId, limit: $limit, offset: $offset) {\n ${WORKER_FIELDS}\n }\n }\n`;\n\nexport const LIST_WORKER_TASKS = `\n query KadaikodiListWorkerTasks(\n $workerRefId: String!\n $status: String\n $limit: Int\n $offset: Int\n ) {\n listWorkerTasks(workerRefId: $workerRefId, status: $status, limit: $limit, offset: $offset) {\n ${TASK_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Offerings\n// ---------------------------------------------------------------------------\n\nexport const GET_OFFERING = `\n query KadaikodiGetOffering($id: ID!) {\n getOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const LIST_OFFERINGS = `\n query KadaikodiListOfferings(\n $kind: KadaikodiOfferingKind\n $providerId: String\n $limit: Int\n $offset: Int\n ) {\n listOfferings(kind: $kind, providerId: $providerId, limit: $limit, offset: $offset) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const CREATE_OFFERING = `\n mutation KadaikodiCreateOffering($input: KadaikodiCreateOfferingInput!) {\n createOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_OFFERING = `\n mutation KadaikodiUpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n updateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Orders\n// ---------------------------------------------------------------------------\n\nexport const GET_ORDER = `\n query KadaikodiGetOrder($id: ID!) {\n getOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const LIST_ORDERS = `\n query KadaikodiListOrders(\n $customerId: String\n $providerId: String\n $status: KadaikodiOrderStatus\n $limit: Int\n $offset: Int\n ) {\n listOrders(\n customerId: $customerId\n providerId: $providerId\n status: $status\n limit: $limit\n offset: $offset\n ) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const PLACE_ORDER = `\n mutation KadaikodiPlaceOrder($input: KadaikodiPlaceOrderInput!) {\n placeOrder(input: $input) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ORDER_STATUS = `\n mutation KadaikodiUpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n updateOrderStatus(id: $id, status: $status) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Reviews\n// ---------------------------------------------------------------------------\n\nexport const LIST_REVIEWS = `\n query KadaikodiListReviews($providerId: String!, $limit: Int, $offset: Int) {\n listReviews(providerId: $providerId, limit: $limit, offset: $offset) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\nexport const CREATE_REVIEW = `\n mutation KadaikodiCreateReview($input: KadaikodiCreateReviewInput!) {\n createReview(input: $input) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\nexport const RESPOND_TO_REVIEW = `\n mutation KadaikodiRespondToReview($id: ID!, $response: String!) {\n respondToReview(id: $id, response: $response) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Investments\n// ---------------------------------------------------------------------------\n\nexport const GET_INVESTMENT_OPPORTUNITY = `\n query KadaikodiGetInvestmentOpportunity($id: ID!) {\n getInvestmentOpportunity(id: $id) {\n ${OPPORTUNITY_FIELDS}\n provider { id name slug category }\n investments { id investorId amount status investedAt }\n }\n }\n`;\n\nexport const LIST_INVESTMENT_OPPORTUNITIES = `\n query KadaikodiListInvestmentOpportunities(\n $riskLevel: KadaikodiRiskLevel\n $status: KadaikodiInvestmentStatus\n $limit: Int\n $offset: Int\n ) {\n listInvestmentOpportunities(\n riskLevel: $riskLevel\n status: $status\n limit: $limit\n offset: $offset\n ) {\n ${OPPORTUNITY_FIELDS}\n }\n }\n`;\n\nexport const LIST_INVESTMENTS = `\n query KadaikodiListInvestments($investorId: String!, $limit: Int, $offset: Int) {\n listInvestments(investorId: $investorId, limit: $limit, offset: $offset) {\n ${INVESTMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_INVESTMENT_OPPORTUNITY = `\n mutation KadaikodiCreateInvestmentOpportunity(\n $input: KadaikodiCreateInvestmentOpportunityInput!\n ) {\n createInvestmentOpportunity(input: $input) {\n ${OPPORTUNITY_FIELDS}\n }\n }\n`;\n\nexport const INVEST = `\n mutation KadaikodiInvest($input: KadaikodiInvestInput!) {\n invest(input: $input) {\n ${INVESTMENT_FIELDS}\n opportunity { id title status raisedAmount targetAmount }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analytics + health\n// ---------------------------------------------------------------------------\n\nexport const ADMIN_ANALYTICS = `\n query KadaikodiAdminAnalytics {\n kadaikodiAdminAnalytics {\n categoryDistribution\n customerGrowth\n orderTrends\n revenueByCategory\n topProviders\n }\n }\n`;\n\nexport const DASHBOARD_STATS = `\n query KadaikodiDashboardStats {\n kadaikodiDashboardStats {\n activeCustomers\n activeProviders\n avgRating\n pendingOrders\n totalOrders\n totalRevenue\n }\n }\n`;\n\nexport const HEALTH = `\n query KadaikodiHealth {\n kadaikodiHealth\n }\n`;\n","/**\n * Shared zod schemas for the Kadaikodi tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop\n * grounds tool calls against the exact allowed values. JSON scalar inputs\n * (location, businessHours, media, metadata, deliveryAddress, terms,\n * businessMetrics) are modelled as permissive object records — the backend\n * accepts arbitrary JSON, but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ServiceCategoryEnum = z\n .enum([\n 'CLOTHING_FASHION',\n 'EDUCATION_SKILLS',\n 'FOOD_BEVERAGE',\n 'GROCERY_ESSENTIALS',\n 'HEALTH_WELLNESS',\n 'HOME_SERVICES',\n 'PERSONAL_CARE_BEAUTY',\n 'REPAIR_MAINTENANCE',\n 'RETAIL_MERCHANDISE',\n ])\n .describe('Top-level service/commerce category for a provider or offering');\n\nexport const ProviderStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED', 'SUSPENDED', 'VERIFIED'])\n .describe('Lifecycle/moderation status of a service provider');\n\nexport const OfferingKindEnum = z\n .enum(['PRODUCT', 'SERVICE'])\n .describe('Whether the offering is a physical PRODUCT (stocked) or a bookable SERVICE');\n\nexport const OrderStatusEnum = z\n .enum([\n 'PENDING',\n 'PLACED',\n 'CONFIRMED',\n 'PREPARING',\n 'READY',\n 'OUT_FOR_DELIVERY',\n 'DELIVERED',\n 'COMPLETED',\n 'CANCELLED',\n ])\n .describe('Fulfilment status of an order');\n\nexport const PaymentStatusEnum = z\n .enum(['PENDING', 'PROCESSING', 'PAID', 'FAILED', 'REFUNDED'])\n .describe('Payment status of an order');\n\nexport const InvestmentStatusEnum = z\n .enum(['DRAFT', 'ACTIVE', 'FUNDED', 'CLOSED'])\n .describe('Lifecycle status of an investment opportunity');\n\nexport const RiskLevelEnum = z\n .enum(['LOW', 'MEDIUM', 'HIGH'])\n .describe('Risk classification of an investment opportunity');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Kadaikodi service-provider tools — provider directory CRUD.\n *\n * Surface (4): providers_{get,list,create,update}.\n * Backend mutations carry the inconsistent server prefix\n * (kadaikodiCreateServiceProvider / kadaikodiUpdateServiceProvider) while the\n * queries (getServiceProvider / listServiceProviders) are unprefixed — both\n * 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 { ServiceCategoryEnum, ProviderStatusEnum, JsonObject } from './shared.js';\n\nexport function registerProviderTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_get')),\n {\n title: 'Get Service Provider',\n description:\n 'Fetch a single Kadaikodi service provider by ID, including its offerings, workers, and investment opportunities.',\n inputSchema: { id: z.string().describe('Service provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getServiceProvider: Record<string, unknown> | null;\n }>(ops.GET_SERVICE_PROVIDER, { id });\n if (!data.getServiceProvider) return errorResult(`Service provider ${id} not found`);\n return jsonResult(data.getServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_get failed', { error: String(error) });\n return errorResult(\n `Failed to get service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_list')),\n {\n title: 'List Service Providers',\n description:\n 'List service providers in the bound workspace with optional category/status/open-now/text filters and pagination.',\n inputSchema: {\n category: ServiceCategoryEnum.optional().describe('Filter by category'),\n status: ProviderStatusEnum.optional().describe('Filter by lifecycle status'),\n openOnly: z\n .boolean()\n .optional()\n .describe('Only providers currently open per businessHours'),\n query: z.string().optional().describe('Free-text search across name/description'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ category, status, openOnly, query, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (openOnly !== undefined) filter.openOnly = openOnly;\n if (query !== undefined) filter.query = query;\n\n const data = await ctx.gql.workspace.request<{\n listServiceProviders: Array<Record<string, unknown>>;\n }>(ops.LIST_SERVICE_PROVIDERS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listServiceProviders);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list service providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_create')),\n {\n title: 'Create Service Provider',\n description:\n 'Onboard a new service provider (storefront/business). `slug` must be unique within the workspace; `location` is required JSON ({ address, latitude, longitude }).',\n inputSchema: {\n name: z.string().min(1).describe('Business / provider display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: ServiceCategoryEnum.describe('Primary category'),\n ownerId: z.string().min(1).describe('User ID of the provider owner'),\n location: JsonObject.describe('Location JSON: { address, latitude, longitude }'),\n description: z.string().optional().describe('Business description'),\n offeringType: z\n .string()\n .optional()\n .describe('What the provider offers: \"products\", \"services\", or \"both\" (default \"both\")'),\n serviceTypes: z\n .array(z.string())\n .optional()\n .describe('Free-form service-type tags (default [])'),\n businessHours: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Business-hours JSON (per-day open/close windows)'),\n },\n },\n async ({\n name,\n slug,\n category,\n ownerId,\n location,\n description,\n offeringType,\n serviceTypes,\n businessHours,\n }) => {\n try {\n const input: Record<string, unknown> = { name, slug, category, ownerId, location };\n if (description !== undefined) input.description = description;\n if (offeringType !== undefined) input.offeringType = offeringType;\n if (serviceTypes !== undefined) input.serviceTypes = serviceTypes;\n if (businessHours !== undefined) input.businessHours = businessHours;\n\n const data = await ctx.gql.workspace.request<{\n kadaikodiCreateServiceProvider: Record<string, unknown>;\n }>(ops.CREATE_SERVICE_PROVIDER, { input });\n return jsonResult(data.kadaikodiCreateServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_create failed', { error: String(error) });\n return errorResult(\n `Failed to create service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_update')),\n {\n title: 'Update Service Provider',\n description:\n 'Update a service provider. At least one mutable field must be provided. Use `status` to verify/pause/suspend/archive a provider.',\n inputSchema: {\n id: z.string().describe('Service provider ID'),\n name: z.string().optional().describe('Updated display name'),\n description: z.string().optional().describe('Updated description'),\n status: ProviderStatusEnum.optional().describe('Updated lifecycle/moderation status'),\n location: JsonObject.optional().describe('Updated location JSON'),\n businessHours: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated business-hours JSON'),\n serviceTypes: z.array(z.string()).optional().describe('Updated service-type tags'),\n analyticsSnapshot: JsonObject.optional().describe('Updated analytics snapshot JSON'),\n },\n },\n async ({\n id,\n name,\n description,\n status,\n location,\n businessHours,\n serviceTypes,\n analyticsSnapshot,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (location !== undefined) input.location = location;\n if (businessHours !== undefined) input.businessHours = businessHours;\n if (serviceTypes !== undefined) input.serviceTypes = serviceTypes;\n if (analyticsSnapshot !== undefined) input.analyticsSnapshot = analyticsSnapshot;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/status/location/businessHours/serviceTypes/analyticsSnapshot',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n kadaikodiUpdateServiceProvider: Record<string, unknown>;\n }>(ops.UPDATE_SERVICE_PROVIDER, { id, input });\n return jsonResult(data.kadaikodiUpdateServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_update failed', { error: String(error) });\n return errorResult(\n `Failed to update service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi provider-worker tools.\n *\n * Surface (1): workers_list — staff/workers attached to a provider, with\n * their assigned tasks.\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';\n\nexport function registerWorkerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workers_list')),\n {\n title: 'List Provider Workers',\n description:\n 'List the workers (staff/agents) attached to a service provider, including each worker’s assigned tasks.',\n inputSchema: {\n providerId: z.string().describe('Service provider ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listProviderWorkers: Array<Record<string, unknown>>;\n }>(ops.LIST_PROVIDER_WORKERS, {\n providerId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listProviderWorkers);\n } catch (error) {\n ctx.logger.error('kadaikodi workers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list provider workers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi worker-task tools.\n *\n * Surface (1): tasks_list — tasks assigned to a given worker, optionally\n * filtered by status.\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';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Worker Tasks',\n description:\n 'List the tasks assigned to a provider worker (referenced by workerRefId), optionally filtered by free-form task status.',\n inputSchema: {\n workerRefId: z.string().describe('Worker reference ID (KadaikodiProviderWorker.workerId)'),\n status: z\n .string()\n .optional()\n .describe('Filter by task status (free-form, e.g. \"pending\", \"in_progress\", \"done\")'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ workerRefId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listWorkerTasks: Array<Record<string, unknown>>;\n }>(ops.LIST_WORKER_TASKS, {\n workerRefId,\n status,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listWorkerTasks);\n } catch (error) {\n ctx.logger.error('kadaikodi tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list worker tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi offering tools — catalog CRUD (products + services).\n *\n * Surface (4): offerings_{get,list,create,update}.\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 { ServiceCategoryEnum, OfferingKindEnum, JsonObject } from './shared.js';\n\nconst MediaSchema = z\n .union([JsonObject, z.array(z.unknown())])\n .describe('Media JSON (image/video URLs or { images: [...] })');\n\nexport function registerOfferingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_get')),\n {\n title: 'Get Offering',\n description: 'Fetch a single catalog offering (product or service) by ID.',\n inputSchema: { id: z.string().describe('Offering ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getOffering: Record<string, unknown> | null;\n }>(ops.GET_OFFERING, { id });\n if (!data.getOffering) return errorResult(`Offering ${id} not found`);\n return jsonResult(data.getOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_get failed', { error: String(error) });\n return errorResult(\n `Failed to get offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_list')),\n {\n title: 'List Offerings',\n description:\n 'List catalog offerings, optionally filtered by kind (PRODUCT/SERVICE) and/or provider.',\n inputSchema: {\n kind: OfferingKindEnum.optional().describe('Filter by offering kind'),\n providerId: z.string().optional().describe('Filter by provider ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ kind, providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listOfferings: Array<Record<string, unknown>>;\n }>(ops.LIST_OFFERINGS, {\n kind,\n providerId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listOfferings);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list offerings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_create')),\n {\n title: 'Create Offering',\n description:\n 'Create a catalog offering. For PRODUCT kind set `stock`; for SERVICE kind set `durationMinutes`. `slug` is unique per provider.',\n inputSchema: {\n providerId: z.string().min(1).describe('Owning provider ID'),\n name: z.string().min(1).describe('Offering display name'),\n slug: z.string().min(1).describe('URL slug, unique within the provider'),\n category: ServiceCategoryEnum.describe('Offering category'),\n kind: OfferingKindEnum.describe('PRODUCT or SERVICE'),\n price: z.number().describe('Current selling price'),\n originalPrice: z.number().optional().describe('Pre-discount/list price'),\n description: z.string().optional().describe('Offering description'),\n durationMinutes: z\n .number()\n .int()\n .optional()\n .describe('Service duration in minutes (SERVICE kind)'),\n stock: z.number().int().optional().describe('Available stock (PRODUCT kind)'),\n serviceType: z.string().optional().describe('Free-form service-type tag'),\n media: MediaSchema.optional(),\n metadata: JsonObject.optional().describe('Arbitrary metadata JSON'),\n tags: z.array(z.string()).optional().describe('Search/discovery tags (default [])'),\n },\n },\n async ({\n providerId,\n name,\n slug,\n category,\n kind,\n price,\n originalPrice,\n description,\n durationMinutes,\n stock,\n serviceType,\n media,\n metadata,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { providerId, name, slug, category, kind, price };\n if (originalPrice !== undefined) input.originalPrice = originalPrice;\n if (description !== undefined) input.description = description;\n if (durationMinutes !== undefined) input.durationMinutes = durationMinutes;\n if (stock !== undefined) input.stock = stock;\n if (serviceType !== undefined) input.serviceType = serviceType;\n if (media !== undefined) input.media = media;\n if (metadata !== undefined) input.metadata = metadata;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n createOffering: Record<string, unknown>;\n }>(ops.CREATE_OFFERING, { input });\n return jsonResult(data.createOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_create failed', { error: String(error) });\n return errorResult(\n `Failed to create offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_update')),\n {\n title: 'Update Offering',\n description:\n 'Update a catalog offering. At least one mutable field must be provided. Use `isAvailable` to toggle visibility.',\n inputSchema: {\n id: z.string().describe('Offering ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n price: z.number().optional().describe('Updated price'),\n originalPrice: z.number().optional().describe('Updated list price'),\n durationMinutes: z.number().int().optional().describe('Updated service duration (minutes)'),\n stock: z.number().int().optional().describe('Updated stock'),\n isAvailable: z.boolean().optional().describe('Toggle availability'),\n serviceType: z.string().optional().describe('Updated service-type tag'),\n media: MediaSchema.optional(),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n price,\n originalPrice,\n durationMinutes,\n stock,\n isAvailable,\n serviceType,\n media,\n metadata,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (price !== undefined) input.price = price;\n if (originalPrice !== undefined) input.originalPrice = originalPrice;\n if (durationMinutes !== undefined) input.durationMinutes = durationMinutes;\n if (stock !== undefined) input.stock = stock;\n if (isAvailable !== undefined) input.isAvailable = isAvailable;\n if (serviceType !== undefined) input.serviceType = serviceType;\n if (media !== undefined) input.media = media;\n if (metadata !== undefined) input.metadata = metadata;\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 offering field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateOffering: Record<string, unknown>;\n }>(ops.UPDATE_OFFERING, { id, input });\n return jsonResult(data.updateOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_update failed', { error: String(error) });\n return errorResult(\n `Failed to update offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi order tools — checkout + fulfilment lifecycle.\n *\n * Surface (4): orders_{get,list,place,update_status}.\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 { OrderStatusEnum, JsonObject } from './shared.js';\n\nconst OrderItemSchema = z\n .object({\n name: z.string().describe('Line-item display name (snapshot)'),\n quantity: z.number().int().describe('Quantity ordered'),\n unitPrice: z.number().describe('Unit price at time of order'),\n offeringId: z.string().optional().describe('Source offering ID (optional for ad-hoc items)'),\n customizations: JsonObject.optional().describe('Per-item customization JSON'),\n })\n .describe('A single order line item');\n\nexport function registerOrderTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_get')),\n {\n title: 'Get Order',\n description: 'Fetch a single order by ID, including its line items.',\n inputSchema: { id: z.string().describe('Order ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getOrder: Record<string, unknown> | null;\n }>(ops.GET_ORDER, { id });\n if (!data.getOrder) return errorResult(`Order ${id} not found`);\n return jsonResult(data.getOrder);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_get failed', { error: String(error) });\n return errorResult(\n `Failed to get order: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_list')),\n {\n title: 'List Orders',\n description:\n 'List orders, optionally filtered by customer, provider, and/or status. Useful for both buyer order-history and provider order-queue views.',\n inputSchema: {\n customerId: z.string().optional().describe('Filter by customer ID'),\n providerId: z.string().optional().describe('Filter by provider ID'),\n status: OrderStatusEnum.optional().describe('Filter by order status'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ customerId, providerId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listOrders: Array<Record<string, unknown>>;\n }>(ops.LIST_ORDERS, {\n customerId,\n providerId,\n status,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listOrders);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_list failed', { error: String(error) });\n return errorResult(\n `Failed to list orders: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_place')),\n {\n title: 'Place Order',\n description:\n 'Place an order on behalf of a customer. Provide one or more line items; subtotal/total are computed server-side. `fulfillmentType` is e.g. \"delivery\" or \"pickup\".',\n inputSchema: {\n customerId: z.string().min(1).describe('Ordering customer ID'),\n providerId: z.string().min(1).describe('Provider the order is placed with'),\n fulfillmentType: z.string().min(1).describe('Fulfilment type, e.g. \"delivery\" or \"pickup\"'),\n items: z.array(OrderItemSchema).min(1).describe('Order line items (at least one)'),\n deliveryAddress: JsonObject.optional().describe('Delivery address JSON (delivery orders)'),\n deliveryFee: z.number().optional().describe('Delivery fee (default 0)'),\n discount: z.number().optional().describe('Order-level discount (default 0)'),\n tax: z.number().optional().describe('Tax amount (default 0)'),\n paymentMethod: z.string().optional().describe('Payment method, e.g. \"cod\", \"card\", \"upi\"'),\n notes: z.string().optional().describe('Customer notes for the order'),\n },\n },\n async ({\n customerId,\n providerId,\n fulfillmentType,\n items,\n deliveryAddress,\n deliveryFee,\n discount,\n tax,\n paymentMethod,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { customerId, providerId, fulfillmentType, items };\n if (deliveryAddress !== undefined) input.deliveryAddress = deliveryAddress;\n if (deliveryFee !== undefined) input.deliveryFee = deliveryFee;\n if (discount !== undefined) input.discount = discount;\n if (tax !== undefined) input.tax = tax;\n if (paymentMethod !== undefined) input.paymentMethod = paymentMethod;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n placeOrder: Record<string, unknown>;\n }>(ops.PLACE_ORDER, { input });\n return jsonResult(data.placeOrder);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_place failed', { error: String(error) });\n return errorResult(\n `Failed to place order: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_update_status')),\n {\n title: 'Update Order Status',\n description:\n 'Advance an order through its fulfilment lifecycle (e.g. PLACED → CONFIRMED → PREPARING → READY → OUT_FOR_DELIVERY → DELIVERED → COMPLETED, or CANCELLED).',\n inputSchema: {\n id: z.string().describe('Order ID'),\n status: OrderStatusEnum.describe('New order status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n updateOrderStatus: Record<string, unknown>;\n }>(ops.UPDATE_ORDER_STATUS, { id, status });\n return jsonResult(data.updateOrderStatus);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_update_status failed', { error: String(error) });\n return errorResult(\n `Failed to update order status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi review tools — ratings + provider responses.\n *\n * Surface (3): reviews_{list,create,respond}.\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';\n\nexport function registerReviewTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_list')),\n {\n title: 'List Reviews',\n description: 'List customer reviews for a service provider.',\n inputSchema: {\n providerId: z.string().describe('Service provider ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listReviews: Array<Record<string, unknown>>;\n }>(ops.LIST_REVIEWS, {\n providerId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listReviews);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_list failed', { error: String(error) });\n return errorResult(\n `Failed to list reviews: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_create')),\n {\n title: 'Create Review',\n description:\n 'Create a customer review (rating 1–5, optional text) for a provider, optionally tied to a fulfilled order.',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider being reviewed'),\n customerId: z.string().min(1).describe('Reviewing customer ID'),\n rating: z.number().int().min(1).max(5).describe('Star rating, 1–5'),\n review: z.string().optional().describe('Free-text review body'),\n orderId: z.string().optional().describe('Related order ID (for verified-purchase reviews)'),\n },\n },\n async ({ providerId, customerId, rating, review, orderId }) => {\n try {\n const input: Record<string, unknown> = { providerId, customerId, rating };\n if (review !== undefined) input.review = review;\n if (orderId !== undefined) input.orderId = orderId;\n\n const data = await ctx.gql.workspace.request<{\n createReview: Record<string, unknown>;\n }>(ops.CREATE_REVIEW, { input });\n return jsonResult(data.createReview);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_create failed', { error: String(error) });\n return errorResult(\n `Failed to create review: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_respond')),\n {\n title: 'Respond to Review',\n description: 'Post a provider response to an existing review.',\n inputSchema: {\n id: z.string().describe('Review ID'),\n response: z.string().min(1).describe('Provider response text'),\n },\n },\n async ({ id, response }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n respondToReview: Record<string, unknown>;\n }>(ops.RESPOND_TO_REVIEW, { id, response });\n return jsonResult(data.respondToReview);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_respond failed', { error: String(error) });\n return errorResult(\n `Failed to respond to review: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi community-investment tools — opportunities + investments.\n *\n * Surface (5): investments_opportunities_{get,list,create},\n * investments_list, investments_invest.\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 { RiskLevelEnum, InvestmentStatusEnum, JsonObject } from './shared.js';\n\nexport function registerInvestmentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_get')),\n {\n title: 'Get Investment Opportunity',\n description:\n 'Fetch a single investment opportunity by ID, including its provider and current investments.',\n inputSchema: { id: z.string().describe('Investment opportunity ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getInvestmentOpportunity: Record<string, unknown> | null;\n }>(ops.GET_INVESTMENT_OPPORTUNITY, { id });\n if (!data.getInvestmentOpportunity)\n return errorResult(`Investment opportunity ${id} not found`);\n return jsonResult(data.getInvestmentOpportunity);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_get failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to get investment opportunity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_list')),\n {\n title: 'List Investment Opportunities',\n description:\n 'List community-investment opportunities, optionally filtered by risk level and/or status.',\n inputSchema: {\n riskLevel: RiskLevelEnum.optional().describe('Filter by risk level'),\n status: InvestmentStatusEnum.optional().describe('Filter by opportunity status'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ riskLevel, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listInvestmentOpportunities: Array<Record<string, unknown>>;\n }>(ops.LIST_INVESTMENT_OPPORTUNITIES, {\n riskLevel,\n status,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listInvestmentOpportunities);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_list failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list investment opportunities: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_create')),\n {\n title: 'Create Investment Opportunity',\n description:\n 'Create a community-investment opportunity for a provider (fundraise target, minimum ticket, expected returns, lock-in, risk).',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider raising the investment'),\n title: z.string().min(1).describe('Opportunity title'),\n targetAmount: z.number().describe('Fundraise target amount'),\n minimumInvestment: z.number().describe('Minimum investment ticket size'),\n expectedReturnsPct: z.number().describe('Expected returns as a percentage'),\n lockInMonths: z.number().int().describe('Lock-in period in months'),\n riskLevel: RiskLevelEnum.optional().describe('Risk level (default MEDIUM)'),\n description: z.string().optional().describe('Opportunity description'),\n businessMetrics: JsonObject.optional().describe('Supporting business-metrics JSON'),\n terms: JsonObject.optional().describe('Investment terms JSON'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({\n providerId,\n title,\n targetAmount,\n minimumInvestment,\n expectedReturnsPct,\n lockInMonths,\n riskLevel,\n description,\n businessMetrics,\n terms,\n expiresAt,\n }) => {\n try {\n const input: Record<string, unknown> = {\n providerId,\n title,\n targetAmount,\n minimumInvestment,\n expectedReturnsPct,\n lockInMonths,\n };\n if (riskLevel !== undefined) input.riskLevel = riskLevel;\n if (description !== undefined) input.description = description;\n if (businessMetrics !== undefined) input.businessMetrics = businessMetrics;\n if (terms !== undefined) input.terms = terms;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n createInvestmentOpportunity: Record<string, unknown>;\n }>(ops.CREATE_INVESTMENT_OPPORTUNITY, { input });\n return jsonResult(data.createInvestmentOpportunity);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create investment opportunity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_list')),\n {\n title: 'List Investments',\n description:\n 'List the investments made by a given investor, including each investment’s transactions.',\n inputSchema: {\n investorId: z.string().describe('Investor user ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ investorId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listInvestments: Array<Record<string, unknown>>;\n }>(ops.LIST_INVESTMENTS, {\n investorId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listInvestments);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list investments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_invest')),\n {\n title: 'Invest in Opportunity',\n description:\n 'Commit an investment amount to an opportunity on behalf of an investor. Returns the created investment plus the updated opportunity funding state.',\n inputSchema: {\n opportunityId: z.string().min(1).describe('Target investment opportunity ID'),\n investorId: z.string().min(1).describe('Investor user ID'),\n amount: z.number().describe('Investment amount (must meet the opportunity minimum)'),\n },\n },\n async ({ opportunityId, investorId, amount }) => {\n try {\n const input = { opportunityId, investorId, amount };\n const data = await ctx.gql.workspace.request<{\n invest: Record<string, unknown>;\n }>(ops.INVEST, { input });\n return jsonResult(data.invest);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_invest failed', { error: String(error) });\n return errorResult(\n `Failed to invest: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi analytics + health tools.\n *\n * Surface (3): analytics_admin, analytics_dashboard, health.\n * `health` maps to the @public kadaikodiHealth query (no auth required);\n * the analytics queries are @rbac wspace-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 registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_admin')),\n {\n title: 'Kadaikodi Admin Analytics',\n description:\n 'Marketplace-wide admin analytics: category distribution, customer growth, order trends, revenue by category, and top providers.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n kadaikodiAdminAnalytics: Record<string, unknown>;\n }>(ops.ADMIN_ANALYTICS, {});\n return jsonResult(data.kadaikodiAdminAnalytics);\n } catch (error) {\n ctx.logger.error('kadaikodi analytics_admin failed', { error: String(error) });\n return errorResult(\n `Failed to get admin analytics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_dashboard')),\n {\n title: 'Kadaikodi Dashboard Stats',\n description:\n 'Headline marketplace KPIs: active providers, active customers, total + pending orders, total revenue, and average rating.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n kadaikodiDashboardStats: Record<string, unknown>;\n }>(ops.DASHBOARD_STATS, {});\n return jsonResult(data.kadaikodiDashboardStats);\n } catch (error) {\n ctx.logger.error('kadaikodi analytics_dashboard failed', { error: String(error) });\n return errorResult(\n `Failed to get dashboard stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Kadaikodi Health Check',\n description:\n 'Public health probe for the Kadaikodi subgraph (kadaikodiHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.kadaikodiHealth });\n } catch (error) {\n ctx.logger.error('kadaikodi health failed', { error: String(error) });\n return errorResult(\n `Kadaikodi 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 { DASHBOARD_STATS, ADMIN_ANALYTICS, LIST_SERVICE_PROVIDERS } from './operations.js';\n\n/**\n * Read-only Kadaikodi 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 registerKadaikodiResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const dashboardUri = track(mcpResourceUri(ctx.productName, 'dashboard'));\n const analyticsUri = track(mcpResourceUri(ctx.productName, 'analytics'));\n const providersUri = track(mcpResourceUri(ctx.productName, 'providers'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'kadaikodi-schema',\n schemaUri,\n {\n title: 'Kadaikodi Domain Schema',\n description:\n 'Overview of the Kadaikodi marketplace 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 = `# Kadaikodi Domain (Overview)\n\nHyperlocal services + commerce + community-investment marketplace.\n\n## Entities\n- KadaikodiServiceProvider — a business/storefront (offerings, workers, investment opportunities)\n- KadaikodiProviderWorker — staff attached to a provider (has tasks)\n- KadaikodiWorkerTask — task assigned to a worker\n- KadaikodiOffering — catalog item (PRODUCT or SERVICE)\n- KadaikodiOrder (+KadaikodiOrderItem) — customer order + line items\n- KadaikodiReview — customer rating + provider response\n- KadaikodiInvestmentOpportunity — community fundraise for a provider\n- KadaikodiInvestment (+KadaikodiInvestmentTransaction) — an investor's stake + ledger\n\n## Enums\n- ServiceCategory: CLOTHING_FASHION, EDUCATION_SKILLS, FOOD_BEVERAGE, GROCERY_ESSENTIALS, HEALTH_WELLNESS, HOME_SERVICES, PERSONAL_CARE_BEAUTY, REPAIR_MAINTENANCE, RETAIL_MERCHANDISE\n- ProviderStatus: DRAFT, ACTIVE, VERIFIED, PAUSED, SUSPENDED, ARCHIVED\n- OfferingKind: PRODUCT, SERVICE\n- OrderStatus: PENDING, PLACED, CONFIRMED, PREPARING, READY, OUT_FOR_DELIVERY, DELIVERED, COMPLETED, CANCELLED\n- PaymentStatus: PENDING, PROCESSING, PAID, FAILED, REFUNDED\n- InvestmentStatus: DRAFT, ACTIVE, FUNDED, CLOSED\n- RiskLevel: LOW, MEDIUM, HIGH\n\n## Tool groups\nproviders, workers, tasks, offerings, orders, reviews, investments, analytics.\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>://dashboard — headline KPIs\n server.registerResource(\n 'kadaikodi-dashboard',\n dashboardUri,\n {\n title: 'Kadaikodi Dashboard Stats',\n description:\n 'Live headline marketplace KPIs (providers, customers, orders, revenue, rating).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${dashboardUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiDashboardStats: unknown }>(\n DASHBOARD_STATS,\n {},\n );\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify(data.kadaikodiDashboardStats, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://analytics — admin analytics\n server.registerResource(\n 'kadaikodi-analytics',\n analyticsUri,\n {\n title: 'Kadaikodi Admin Analytics',\n description:\n 'Marketplace-wide analytics: category distribution, customer growth, order trends, revenue by category, top providers.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${analyticsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiAdminAnalytics: unknown }>(\n ADMIN_ANALYTICS,\n {},\n );\n return {\n contents: [\n {\n uri: analyticsUri,\n text: JSON.stringify(data.kadaikodiAdminAnalytics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: analyticsUri,\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>://providers — active provider directory\n server.registerResource(\n 'kadaikodi-providers',\n providersUri,\n {\n title: 'Kadaikodi Provider Directory',\n description: 'The first 50 service providers in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${providersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ listServiceProviders: unknown }>(\n LIST_SERVICE_PROVIDERS,\n { limit: 50, offset: 0 },\n );\n return {\n contents: [\n {\n uri: providersUri,\n text: JSON.stringify(data.listServiceProviders, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: providersUri,\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 * Kadaikodi MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerKadaikodiPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'provider-onboarding'));\n const opsName = track(mcpPromptName(p, 'marketplace-ops'));\n\n // <product>-provider-onboarding — stand up a provider + catalog\n server.registerPrompt(\n onboardingName,\n {\n title: 'Provider Onboarding',\n description:\n 'Guide for onboarding a new Kadaikodi service provider end to end: create the provider, add catalog offerings, and optionally open an investment opportunity.',\n argsSchema: {\n name: z.string().optional().describe('Provider/business name'),\n category: z.string().optional().describe('Service category'),\n },\n },\n ({ name, category }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { name, category });\n const nameNote = name\n ? `Use the business name \"${name}\".`\n : 'Ask the user for the business name.';\n const categoryNote = category\n ? `Use category ${category}.`\n : 'Help the user pick a ServiceCategory.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new Kadaikodi service provider.\n\n1. **Create Provider**: Use ${p}_providers_create. ${nameNote} ${categoryNote} Provide a unique slug, ownerId, and a location JSON ({ address, latitude, longitude }).\n2. **Add Offerings**: Use ${p}_offerings_create for each catalog item — set kind=PRODUCT (with stock) or kind=SERVICE (with durationMinutes), a price, and a unique slug per provider.\n3. **Verify Catalog**: Use ${p}_offerings_list filtered by the new providerId.\n4. **(Optional) Open Investment**: Use ${p}_investments_opportunities_create to raise community capital (targetAmount, minimumInvestment, expectedReturnsPct, lockInMonths, riskLevel).\n5. **Activate**: Use ${p}_providers_update with status=VERIFIED (or ACTIVE) when ready.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-marketplace-ops — daily operations\n server.registerPrompt(\n opsName,\n {\n title: 'Marketplace Operations',\n description:\n 'Daily operations workflow for a provider: triage the order queue, advance fulfilment, respond to reviews, and review KPIs.',\n argsSchema: {\n providerId: z.string().optional().describe('Provider ID to operate'),\n },\n },\n ({ providerId }) => {\n ctx.logger.debug(`Prompt ${opsName} called`, { providerId });\n const providerNote = providerId\n ? `Operate provider \"${providerId}\".`\n : `First list providers with ${p}_providers_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Kadaikodi marketplace operations. ${providerNote}\n\n1. **KPIs**: Use ${p}_analytics_dashboard for headline numbers and ${p}_analytics_admin for trends.\n2. **Order Queue**: Use ${p}_orders_list filtered by providerId and status=PLACED (and PENDING) to find new orders.\n3. **Advance Fulfilment**: For each order use ${p}_orders_update_status to move it through CONFIRMED → PREPARING → READY → OUT_FOR_DELIVERY → DELIVERED → COMPLETED.\n4. **Reviews**: Use ${p}_reviews_list for the provider; reply to unanswered ones with ${p}_reviews_respond.\n5. **Workforce**: Use ${p}_workers_list and ${p}_tasks_list to check worker task load.\n6. **Investments**: If fundraising, use ${p}_investments_opportunities_list to track raised vs target.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Kadaikodi module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-kadaikodi-svc grouped into per-entity\n * sub-APIs: providers, workers, tasks, offerings, orders, reviews,\n * investments, analytics. Mirrors the rich vibecontrols module's structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/wspace/kadaikodi/wspace-kadaikodi-svc/\n * (Hive service name `kadaikodi`). All operations run against the WORKSPACE\n * gateway; the @public kadaikodiHealth 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 { registerProviderTools } from './tools/providers.js';\nimport { registerWorkerTools } from './tools/workers.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerOfferingTools } from './tools/offerings.js';\nimport { registerOrderTools } from './tools/orders.js';\nimport { registerReviewTools } from './tools/reviews.js';\nimport { registerInvestmentTools } from './tools/investments.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerKadaikodiResources } from './resources.js';\nimport { registerKadaikodiPrompts } from './prompts.js';\n\nconst kadaikodiModule: McpModule = {\n id: 'kadaikodi',\n version: '0.0.1',\n displayName: 'Kadaikodi',\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 registerProviderTools(server, ctx, trackTool);\n registerWorkerTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerOfferingTools(server, ctx, trackTool);\n registerOrderTools(server, ctx, trackTool);\n registerReviewTools(server, ctx, trackTool);\n registerInvestmentTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n\n registerKadaikodiResources(server, ctx, trackResource);\n registerKadaikodiPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default kadaikodiModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/kadaikodi/operations.ts","../../../src/modules/kadaikodi/tools/shared.ts","../../../src/modules/kadaikodi/tools/providers.ts","../../../src/modules/kadaikodi/tools/workers.ts","../../../src/modules/kadaikodi/tools/tasks.ts","../../../src/modules/kadaikodi/tools/offerings.ts","../../../src/modules/kadaikodi/tools/orders.ts","../../../src/modules/kadaikodi/tools/reviews.ts","../../../src/modules/kadaikodi/tools/investments.ts","../../../src/modules/kadaikodi/tools/analytics.ts","../../../src/modules/kadaikodi/resources.ts","../../../src/modules/kadaikodi/prompts.ts","../../../src/modules/kadaikodi/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 Kadaikodi MCP module.\n *\n * Kadaikodi is the hyperlocal services + commerce + community-investment\n * marketplace (future-products ecosystem). Backend subgraph:\n * ~/products/wspace/kadaikodi/wspace-kadaikodi-svc/ (Hive service name `kadaikodi`).\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 — Kadaikodi inputs do NOT carry a workspaceId.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols module's operations file.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PROVIDER_FIELDS = `\n id name slug description category status offeringType serviceTypes\n location businessHours rating totalRatings averageOrderValue\n analyticsSnapshot ownerId workspaceId createdAt updatedAt\n`;\n\nexport const OFFERING_FIELDS = `\n id name slug description category kind price originalPrice durationMinutes\n stock isAvailable serviceType media metadata tags providerId workspaceId\n createdAt updatedAt\n`;\n\nexport const ORDER_ITEM_FIELDS = `\n id orderId offeringId name quantity unitPrice totalPrice customizations workspaceId\n`;\n\nexport const ORDER_FIELDS = `\n id orderNumber customerId providerId assignedWorkerId status paymentStatus\n paymentMethod fulfillmentType subtotal tax discount deliveryFee total\n deliveryAddress notes timeline workspaceId createdAt updatedAt\n items { ${ORDER_ITEM_FIELDS} }\n`;\n\nexport const REVIEW_FIELDS = `\n id providerId customerId orderId rating review response workspaceId\n createdAt updatedAt\n`;\n\nexport const WORKER_FIELDS = `\n id providerId workerId name role status metadata workspaceId\n tasks { id title type status priority orderId dueAt completedAt }\n`;\n\nexport const TASK_FIELDS = `\n id workerRefId title description type status priority orderId location\n dueAt completedAt workspaceId\n`;\n\nexport const OPPORTUNITY_FIELDS = `\n id providerId title description targetAmount raisedAmount minimumInvestment\n expectedReturnsPct lockInMonths riskLevel status businessMetrics terms\n expiresAt workspaceId createdAt updatedAt\n`;\n\nexport const INVESTMENT_TXN_FIELDS = `\n id investmentId type amount notes createdAt workspaceId\n`;\n\nexport const INVESTMENT_FIELDS = `\n id opportunityId investorId amount currentValue realizedReturns\n expectedReturnsPct status investedAt maturedAt workspaceId\n transactions { ${INVESTMENT_TXN_FIELDS} }\n`;\n\n// ---------------------------------------------------------------------------\n// Providers\n// ---------------------------------------------------------------------------\n\nexport const GET_SERVICE_PROVIDER = `\n query KadaikodiGetServiceProvider($id: ID!) {\n getServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n offerings { id name slug kind price isAvailable }\n workers { id name role status }\n investmentOpportunities { id title status targetAmount raisedAmount }\n }\n }\n`;\n\nexport const LIST_SERVICE_PROVIDERS = `\n query KadaikodiListServiceProviders(\n $filter: KadaikodiProviderFilterInput\n $limit: Int\n $offset: Int\n ) {\n listServiceProviders(filter: $filter, limit: $limit, offset: $offset) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const CREATE_SERVICE_PROVIDER = `\n mutation KadaikodiCreateServiceProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SERVICE_PROVIDER = `\n mutation KadaikodiUpdateServiceProvider(\n $id: ID!\n $input: KadaikodiUpdateServiceProviderInput!\n ) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workers + tasks\n// ---------------------------------------------------------------------------\n\nexport const LIST_PROVIDER_WORKERS = `\n query KadaikodiListProviderWorkers($providerId: String!, $limit: Int, $offset: Int) {\n listProviderWorkers(providerId: $providerId, limit: $limit, offset: $offset) {\n ${WORKER_FIELDS}\n }\n }\n`;\n\nexport const LIST_WORKER_TASKS = `\n query KadaikodiListWorkerTasks(\n $workerRefId: String!\n $status: String\n $limit: Int\n $offset: Int\n ) {\n listWorkerTasks(workerRefId: $workerRefId, status: $status, limit: $limit, offset: $offset) {\n ${TASK_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Offerings\n// ---------------------------------------------------------------------------\n\nexport const GET_OFFERING = `\n query KadaikodiGetOffering($id: ID!) {\n getOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const LIST_OFFERINGS = `\n query KadaikodiListOfferings(\n $kind: KadaikodiOfferingKind\n $providerId: String\n $limit: Int\n $offset: Int\n ) {\n listOfferings(kind: $kind, providerId: $providerId, limit: $limit, offset: $offset) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const CREATE_OFFERING = `\n mutation KadaikodiCreateOffering($input: KadaikodiCreateOfferingInput!) {\n createOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_OFFERING = `\n mutation KadaikodiUpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n updateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Orders\n// ---------------------------------------------------------------------------\n\nexport const GET_ORDER = `\n query KadaikodiGetOrder($id: ID!) {\n getOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const LIST_ORDERS = `\n query KadaikodiListOrders(\n $customerId: String\n $providerId: String\n $status: KadaikodiOrderStatus\n $limit: Int\n $offset: Int\n ) {\n listOrders(\n customerId: $customerId\n providerId: $providerId\n status: $status\n limit: $limit\n offset: $offset\n ) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const PLACE_ORDER = `\n mutation KadaikodiPlaceOrder($input: KadaikodiPlaceOrderInput!) {\n placeOrder(input: $input) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ORDER_STATUS = `\n mutation KadaikodiUpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n updateOrderStatus(id: $id, status: $status) {\n ${ORDER_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Reviews\n// ---------------------------------------------------------------------------\n\nexport const LIST_REVIEWS = `\n query KadaikodiListReviews($providerId: String!, $limit: Int, $offset: Int) {\n listReviews(providerId: $providerId, limit: $limit, offset: $offset) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\nexport const CREATE_REVIEW = `\n mutation KadaikodiCreateReview($input: KadaikodiCreateReviewInput!) {\n createReview(input: $input) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\nexport const RESPOND_TO_REVIEW = `\n mutation KadaikodiRespondToReview($id: ID!, $response: String!) {\n respondToReview(id: $id, response: $response) {\n ${REVIEW_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Investments\n// ---------------------------------------------------------------------------\n\nexport const GET_INVESTMENT_OPPORTUNITY = `\n query KadaikodiGetInvestmentOpportunity($id: ID!) {\n getInvestmentOpportunity(id: $id) {\n ${OPPORTUNITY_FIELDS}\n provider { id name slug category }\n investments { id investorId amount status investedAt }\n }\n }\n`;\n\nexport const LIST_INVESTMENT_OPPORTUNITIES = `\n query KadaikodiListInvestmentOpportunities(\n $riskLevel: KadaikodiRiskLevel\n $status: KadaikodiInvestmentStatus\n $limit: Int\n $offset: Int\n ) {\n listInvestmentOpportunities(\n riskLevel: $riskLevel\n status: $status\n limit: $limit\n offset: $offset\n ) {\n ${OPPORTUNITY_FIELDS}\n }\n }\n`;\n\nexport const LIST_INVESTMENTS = `\n query KadaikodiListInvestments($investorId: String!, $limit: Int, $offset: Int) {\n listInvestments(investorId: $investorId, limit: $limit, offset: $offset) {\n ${INVESTMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_INVESTMENT_OPPORTUNITY = `\n mutation KadaikodiCreateInvestmentOpportunity(\n $input: KadaikodiCreateInvestmentOpportunityInput!\n ) {\n createInvestmentOpportunity(input: $input) {\n ${OPPORTUNITY_FIELDS}\n }\n }\n`;\n\nexport const INVEST = `\n mutation KadaikodiInvest($input: KadaikodiInvestInput!) {\n invest(input: $input) {\n ${INVESTMENT_FIELDS}\n opportunity { id title status raisedAmount targetAmount }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analytics + health\n// ---------------------------------------------------------------------------\n\nexport const ADMIN_ANALYTICS = `\n query KadaikodiAdminAnalytics {\n kadaikodiAdminAnalytics {\n categoryDistribution\n customerGrowth\n orderTrends\n revenueByCategory\n topProviders\n }\n }\n`;\n\nexport const DASHBOARD_STATS = `\n query KadaikodiDashboardStats {\n kadaikodiDashboardStats {\n activeCustomers\n activeProviders\n avgRating\n pendingOrders\n totalOrders\n totalRevenue\n }\n }\n`;\n\nexport const HEALTH = `\n query KadaikodiHealth {\n kadaikodiHealth\n }\n`;\n","/**\n * Shared zod schemas for the Kadaikodi tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop\n * grounds tool calls against the exact allowed values. JSON scalar inputs\n * (location, businessHours, media, metadata, deliveryAddress, terms,\n * businessMetrics) are modelled as permissive object records — the backend\n * accepts arbitrary JSON, but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const ServiceCategoryEnum = z\n .enum([\n 'CLOTHING_FASHION',\n 'EDUCATION_SKILLS',\n 'FOOD_BEVERAGE',\n 'GROCERY_ESSENTIALS',\n 'HEALTH_WELLNESS',\n 'HOME_SERVICES',\n 'PERSONAL_CARE_BEAUTY',\n 'REPAIR_MAINTENANCE',\n 'RETAIL_MERCHANDISE',\n ])\n .describe('Top-level service/commerce category for a provider or offering');\n\nexport const ProviderStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED', 'SUSPENDED', 'VERIFIED'])\n .describe('Lifecycle/moderation status of a service provider');\n\nexport const OfferingKindEnum = z\n .enum(['PRODUCT', 'SERVICE'])\n .describe('Whether the offering is a physical PRODUCT (stocked) or a bookable SERVICE');\n\nexport const OrderStatusEnum = z\n .enum([\n 'PENDING',\n 'PLACED',\n 'CONFIRMED',\n 'PREPARING',\n 'READY',\n 'OUT_FOR_DELIVERY',\n 'DELIVERED',\n 'COMPLETED',\n 'CANCELLED',\n ])\n .describe('Fulfilment status of an order');\n\nexport const PaymentStatusEnum = z\n .enum(['PENDING', 'PROCESSING', 'PAID', 'FAILED', 'REFUNDED'])\n .describe('Payment status of an order');\n\nexport const InvestmentStatusEnum = z\n .enum(['DRAFT', 'ACTIVE', 'FUNDED', 'CLOSED'])\n .describe('Lifecycle status of an investment opportunity');\n\nexport const RiskLevelEnum = z\n .enum(['LOW', 'MEDIUM', 'HIGH'])\n .describe('Risk classification of an investment opportunity');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Kadaikodi service-provider tools — provider directory CRUD.\n *\n * Surface (4): providers_{get,list,create,update}.\n * Backend mutations carry the inconsistent server prefix\n * (kadaikodiCreateServiceProvider / kadaikodiUpdateServiceProvider) while the\n * queries (getServiceProvider / listServiceProviders) are unprefixed — both\n * 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 { ServiceCategoryEnum, ProviderStatusEnum, JsonObject } from './shared.js';\n\nexport function registerProviderTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_get')),\n {\n title: 'Get Service Provider',\n description:\n 'Fetch a single Kadaikodi service provider by ID, including its offerings, workers, and investment opportunities.',\n inputSchema: { id: z.string().describe('Service provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getServiceProvider: Record<string, unknown> | null;\n }>(ops.GET_SERVICE_PROVIDER, { id });\n if (!data.getServiceProvider) return errorResult(`Service provider ${id} not found`);\n return jsonResult(data.getServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_get failed', { error: String(error) });\n return errorResult(\n `Failed to get service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_list')),\n {\n title: 'List Service Providers',\n description:\n 'List service providers in the bound workspace with optional category/status/open-now/text filters and pagination.',\n inputSchema: {\n category: ServiceCategoryEnum.optional().describe('Filter by category'),\n status: ProviderStatusEnum.optional().describe('Filter by lifecycle status'),\n openOnly: z\n .boolean()\n .optional()\n .describe('Only providers currently open per businessHours'),\n query: z.string().optional().describe('Free-text search across name/description'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ category, status, openOnly, query, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (openOnly !== undefined) filter.openOnly = openOnly;\n if (query !== undefined) filter.query = query;\n\n const data = await ctx.gql.workspace.request<{\n listServiceProviders: Array<Record<string, unknown>>;\n }>(ops.LIST_SERVICE_PROVIDERS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listServiceProviders);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list service providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_create')),\n {\n title: 'Create Service Provider',\n description:\n 'Onboard a new service provider (storefront/business). `slug` must be unique within the workspace; `location` is required JSON ({ address, latitude, longitude }).',\n inputSchema: {\n name: z.string().min(1).describe('Business / provider display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: ServiceCategoryEnum.describe('Primary category'),\n ownerId: z.string().min(1).describe('User ID of the provider owner'),\n location: JsonObject.describe('Location JSON: { address, latitude, longitude }'),\n description: z.string().optional().describe('Business description'),\n offeringType: z\n .string()\n .optional()\n .describe('What the provider offers: \"products\", \"services\", or \"both\" (default \"both\")'),\n serviceTypes: z\n .array(z.string())\n .optional()\n .describe('Free-form service-type tags (default [])'),\n businessHours: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Business-hours JSON (per-day open/close windows)'),\n },\n },\n async ({\n name,\n slug,\n category,\n ownerId,\n location,\n description,\n offeringType,\n serviceTypes,\n businessHours,\n }) => {\n try {\n const input: Record<string, unknown> = { name, slug, category, ownerId, location };\n if (description !== undefined) input.description = description;\n if (offeringType !== undefined) input.offeringType = offeringType;\n if (serviceTypes !== undefined) input.serviceTypes = serviceTypes;\n if (businessHours !== undefined) input.businessHours = businessHours;\n\n const data = await ctx.gql.workspace.request<{\n kadaikodiCreateServiceProvider: Record<string, unknown>;\n }>(ops.CREATE_SERVICE_PROVIDER, { input });\n return jsonResult(data.kadaikodiCreateServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_create failed', { error: String(error) });\n return errorResult(\n `Failed to create service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_update')),\n {\n title: 'Update Service Provider',\n description:\n 'Update a service provider. At least one mutable field must be provided. Use `status` to verify/pause/suspend/archive a provider.',\n inputSchema: {\n id: z.string().describe('Service provider ID'),\n name: z.string().optional().describe('Updated display name'),\n description: z.string().optional().describe('Updated description'),\n status: ProviderStatusEnum.optional().describe('Updated lifecycle/moderation status'),\n location: JsonObject.optional().describe('Updated location JSON'),\n businessHours: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Updated business-hours JSON'),\n serviceTypes: z.array(z.string()).optional().describe('Updated service-type tags'),\n analyticsSnapshot: JsonObject.optional().describe('Updated analytics snapshot JSON'),\n },\n },\n async ({\n id,\n name,\n description,\n status,\n location,\n businessHours,\n serviceTypes,\n analyticsSnapshot,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (location !== undefined) input.location = location;\n if (businessHours !== undefined) input.businessHours = businessHours;\n if (serviceTypes !== undefined) input.serviceTypes = serviceTypes;\n if (analyticsSnapshot !== undefined) input.analyticsSnapshot = analyticsSnapshot;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/status/location/businessHours/serviceTypes/analyticsSnapshot',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n kadaikodiUpdateServiceProvider: Record<string, unknown>;\n }>(ops.UPDATE_SERVICE_PROVIDER, { id, input });\n return jsonResult(data.kadaikodiUpdateServiceProvider);\n } catch (error) {\n ctx.logger.error('kadaikodi providers_update failed', { error: String(error) });\n return errorResult(\n `Failed to update service provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi provider-worker tools.\n *\n * Surface (1): workers_list — staff/workers attached to a provider, with\n * their assigned tasks.\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';\n\nexport function registerWorkerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workers_list')),\n {\n title: 'List Provider Workers',\n description:\n 'List the workers (staff/agents) attached to a service provider, including each worker’s assigned tasks.',\n inputSchema: {\n providerId: z.string().describe('Service provider ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listProviderWorkers: Array<Record<string, unknown>>;\n }>(ops.LIST_PROVIDER_WORKERS, {\n providerId,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listProviderWorkers);\n } catch (error) {\n ctx.logger.error('kadaikodi workers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list provider workers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi worker-task tools.\n *\n * Surface (1): tasks_list — tasks assigned to a given worker, optionally\n * filtered by status.\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';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Worker Tasks',\n description:\n 'List the tasks assigned to a provider worker (referenced by workerRefId), optionally filtered by free-form task status.',\n inputSchema: {\n workerRefId: z.string().describe('Worker reference ID (KadaikodiProviderWorker.workerId)'),\n status: z\n .string()\n .optional()\n .describe('Filter by task status (free-form, e.g. \"pending\", \"in_progress\", \"done\")'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ workerRefId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listWorkerTasks: Array<Record<string, unknown>>;\n }>(ops.LIST_WORKER_TASKS, {\n workerRefId,\n status,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.listWorkerTasks);\n } catch (error) {\n ctx.logger.error('kadaikodi tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list worker tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi offering tools — catalog CRUD (products + services).\n *\n * Surface (4): offerings_{get,list,create,update}.\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 { ServiceCategoryEnum, OfferingKindEnum, JsonObject } from './shared.js';\n\nconst MediaSchema = z\n .union([JsonObject, z.array(z.unknown())])\n .describe('Media JSON (image/video URLs or { images: [...] })');\n\nexport function registerOfferingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_get')),\n {\n title: 'Get Offering',\n description: 'Fetch a single catalog offering (product or service) by ID.',\n inputSchema: { id: z.string().describe('Offering ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getOffering: Record<string, unknown> | null;\n }>(ops.GET_OFFERING, { id });\n if (!data.getOffering) return errorResult(`Offering ${id} not found`);\n return jsonResult(data.getOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_get failed', { error: String(error) });\n return errorResult(\n `Failed to get offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_list')),\n {\n title: 'List Offerings',\n description:\n 'List catalog offerings, optionally filtered by kind (PRODUCT/SERVICE) and/or provider.',\n inputSchema: {\n kind: OfferingKindEnum.optional().describe('Filter by offering kind'),\n providerId: z.string().optional().describe('Filter by provider ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ kind, providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listOfferings: Array<Record<string, unknown>>;\n }>(ops.LIST_OFFERINGS, {\n kind,\n providerId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listOfferings);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list offerings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_create')),\n {\n title: 'Create Offering',\n description:\n 'Create a catalog offering. For PRODUCT kind set `stock`; for SERVICE kind set `durationMinutes`. `slug` is unique per provider.',\n inputSchema: {\n providerId: z.string().min(1).describe('Owning provider ID'),\n name: z.string().min(1).describe('Offering display name'),\n slug: z.string().min(1).describe('URL slug, unique within the provider'),\n category: ServiceCategoryEnum.describe('Offering category'),\n kind: OfferingKindEnum.describe('PRODUCT or SERVICE'),\n price: z.number().describe('Current selling price'),\n originalPrice: z.number().optional().describe('Pre-discount/list price'),\n description: z.string().optional().describe('Offering description'),\n durationMinutes: z\n .number()\n .int()\n .optional()\n .describe('Service duration in minutes (SERVICE kind)'),\n stock: z.number().int().optional().describe('Available stock (PRODUCT kind)'),\n serviceType: z.string().optional().describe('Free-form service-type tag'),\n media: MediaSchema.optional(),\n metadata: JsonObject.optional().describe('Arbitrary metadata JSON'),\n tags: z.array(z.string()).optional().describe('Search/discovery tags (default [])'),\n },\n },\n async ({\n providerId,\n name,\n slug,\n category,\n kind,\n price,\n originalPrice,\n description,\n durationMinutes,\n stock,\n serviceType,\n media,\n metadata,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { providerId, name, slug, category, kind, price };\n if (originalPrice !== undefined) input.originalPrice = originalPrice;\n if (description !== undefined) input.description = description;\n if (durationMinutes !== undefined) input.durationMinutes = durationMinutes;\n if (stock !== undefined) input.stock = stock;\n if (serviceType !== undefined) input.serviceType = serviceType;\n if (media !== undefined) input.media = media;\n if (metadata !== undefined) input.metadata = metadata;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n createOffering: Record<string, unknown>;\n }>(ops.CREATE_OFFERING, { input });\n return jsonResult(data.createOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_create failed', { error: String(error) });\n return errorResult(\n `Failed to create offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'offerings_update')),\n {\n title: 'Update Offering',\n description:\n 'Update a catalog offering. At least one mutable field must be provided. Use `isAvailable` to toggle visibility.',\n inputSchema: {\n id: z.string().describe('Offering ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n price: z.number().optional().describe('Updated price'),\n originalPrice: z.number().optional().describe('Updated list price'),\n durationMinutes: z.number().int().optional().describe('Updated service duration (minutes)'),\n stock: z.number().int().optional().describe('Updated stock'),\n isAvailable: z.boolean().optional().describe('Toggle availability'),\n serviceType: z.string().optional().describe('Updated service-type tag'),\n media: MediaSchema.optional(),\n metadata: JsonObject.optional().describe('Updated metadata JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n price,\n originalPrice,\n durationMinutes,\n stock,\n isAvailable,\n serviceType,\n media,\n metadata,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (price !== undefined) input.price = price;\n if (originalPrice !== undefined) input.originalPrice = originalPrice;\n if (durationMinutes !== undefined) input.durationMinutes = durationMinutes;\n if (stock !== undefined) input.stock = stock;\n if (isAvailable !== undefined) input.isAvailable = isAvailable;\n if (serviceType !== undefined) input.serviceType = serviceType;\n if (media !== undefined) input.media = media;\n if (metadata !== undefined) input.metadata = metadata;\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 offering field');\n }\n\n const data = await ctx.gql.workspace.request<{\n updateOffering: Record<string, unknown>;\n }>(ops.UPDATE_OFFERING, { id, input });\n return jsonResult(data.updateOffering);\n } catch (error) {\n ctx.logger.error('kadaikodi offerings_update failed', { error: String(error) });\n return errorResult(\n `Failed to update offering: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi order tools — checkout + fulfilment lifecycle.\n *\n * Surface (4): orders_{get,list,place,update_status}.\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 { OrderStatusEnum, JsonObject } from './shared.js';\n\nconst OrderItemSchema = z\n .object({\n name: z.string().describe('Line-item display name (snapshot)'),\n quantity: z.number().int().describe('Quantity ordered'),\n unitPrice: z.number().describe('Unit price at time of order'),\n offeringId: z.string().optional().describe('Source offering ID (optional for ad-hoc items)'),\n customizations: JsonObject.optional().describe('Per-item customization JSON'),\n })\n .describe('A single order line item');\n\nexport function registerOrderTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_get')),\n {\n title: 'Get Order',\n description: 'Fetch a single order by ID, including its line items.',\n inputSchema: { id: z.string().describe('Order ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getOrder: Record<string, unknown> | null;\n }>(ops.GET_ORDER, { id });\n if (!data.getOrder) return errorResult(`Order ${id} not found`);\n return jsonResult(data.getOrder);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_get failed', { error: String(error) });\n return errorResult(\n `Failed to get order: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_list')),\n {\n title: 'List Orders',\n description:\n 'List orders, optionally filtered by customer, provider, and/or status. Useful for both buyer order-history and provider order-queue views.',\n inputSchema: {\n customerId: z.string().optional().describe('Filter by customer ID'),\n providerId: z.string().optional().describe('Filter by provider ID'),\n status: OrderStatusEnum.optional().describe('Filter by order status'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ customerId, providerId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listOrders: Array<Record<string, unknown>>;\n }>(ops.LIST_ORDERS, {\n customerId,\n providerId,\n status,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listOrders);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_list failed', { error: String(error) });\n return errorResult(\n `Failed to list orders: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_place')),\n {\n title: 'Place Order',\n description:\n 'Place an order on behalf of a customer. Provide one or more line items; subtotal/total are computed server-side. `fulfillmentType` is e.g. \"delivery\" or \"pickup\".',\n inputSchema: {\n customerId: z.string().min(1).describe('Ordering customer ID'),\n providerId: z.string().min(1).describe('Provider the order is placed with'),\n fulfillmentType: z.string().min(1).describe('Fulfilment type, e.g. \"delivery\" or \"pickup\"'),\n items: z.array(OrderItemSchema).min(1).describe('Order line items (at least one)'),\n deliveryAddress: JsonObject.optional().describe('Delivery address JSON (delivery orders)'),\n deliveryFee: z.number().optional().describe('Delivery fee (default 0)'),\n discount: z.number().optional().describe('Order-level discount (default 0)'),\n tax: z.number().optional().describe('Tax amount (default 0)'),\n paymentMethod: z.string().optional().describe('Payment method, e.g. \"cod\", \"card\", \"upi\"'),\n notes: z.string().optional().describe('Customer notes for the order'),\n },\n },\n async ({\n customerId,\n providerId,\n fulfillmentType,\n items,\n deliveryAddress,\n deliveryFee,\n discount,\n tax,\n paymentMethod,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { customerId, providerId, fulfillmentType, items };\n if (deliveryAddress !== undefined) input.deliveryAddress = deliveryAddress;\n if (deliveryFee !== undefined) input.deliveryFee = deliveryFee;\n if (discount !== undefined) input.discount = discount;\n if (tax !== undefined) input.tax = tax;\n if (paymentMethod !== undefined) input.paymentMethod = paymentMethod;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n placeOrder: Record<string, unknown>;\n }>(ops.PLACE_ORDER, { input });\n return jsonResult(data.placeOrder);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_place failed', { error: String(error) });\n return errorResult(\n `Failed to place order: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'orders_update_status')),\n {\n title: 'Update Order Status',\n description:\n 'Advance an order through its fulfilment lifecycle (e.g. PLACED → CONFIRMED → PREPARING → READY → OUT_FOR_DELIVERY → DELIVERED → COMPLETED, or CANCELLED).',\n inputSchema: {\n id: z.string().describe('Order ID'),\n status: OrderStatusEnum.describe('New order status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n updateOrderStatus: Record<string, unknown>;\n }>(ops.UPDATE_ORDER_STATUS, { id, status });\n return jsonResult(data.updateOrderStatus);\n } catch (error) {\n ctx.logger.error('kadaikodi orders_update_status failed', { error: String(error) });\n return errorResult(\n `Failed to update order status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi review tools — ratings + provider responses.\n *\n * Surface (3): reviews_{list,create,respond}.\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';\n\nexport function registerReviewTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_list')),\n {\n title: 'List Reviews',\n description: 'List customer reviews for a service provider.',\n inputSchema: {\n providerId: z.string().describe('Service provider ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ providerId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listReviews: Array<Record<string, unknown>>;\n }>(ops.LIST_REVIEWS, {\n providerId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listReviews);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_list failed', { error: String(error) });\n return errorResult(\n `Failed to list reviews: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_create')),\n {\n title: 'Create Review',\n description:\n 'Create a customer review (rating 1–5, optional text) for a provider, optionally tied to a fulfilled order.',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider being reviewed'),\n customerId: z.string().min(1).describe('Reviewing customer ID'),\n rating: z.number().int().min(1).max(5).describe('Star rating, 1–5'),\n review: z.string().optional().describe('Free-text review body'),\n orderId: z.string().optional().describe('Related order ID (for verified-purchase reviews)'),\n },\n },\n async ({ providerId, customerId, rating, review, orderId }) => {\n try {\n const input: Record<string, unknown> = { providerId, customerId, rating };\n if (review !== undefined) input.review = review;\n if (orderId !== undefined) input.orderId = orderId;\n\n const data = await ctx.gql.workspace.request<{\n createReview: Record<string, unknown>;\n }>(ops.CREATE_REVIEW, { input });\n return jsonResult(data.createReview);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_create failed', { error: String(error) });\n return errorResult(\n `Failed to create review: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_respond')),\n {\n title: 'Respond to Review',\n description: 'Post a provider response to an existing review.',\n inputSchema: {\n id: z.string().describe('Review ID'),\n response: z.string().min(1).describe('Provider response text'),\n },\n },\n async ({ id, response }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n respondToReview: Record<string, unknown>;\n }>(ops.RESPOND_TO_REVIEW, { id, response });\n return jsonResult(data.respondToReview);\n } catch (error) {\n ctx.logger.error('kadaikodi reviews_respond failed', { error: String(error) });\n return errorResult(\n `Failed to respond to review: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi community-investment tools — opportunities + investments.\n *\n * Surface (5): investments_opportunities_{get,list,create},\n * investments_list, investments_invest.\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 { RiskLevelEnum, InvestmentStatusEnum, JsonObject } from './shared.js';\n\nexport function registerInvestmentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_get')),\n {\n title: 'Get Investment Opportunity',\n description:\n 'Fetch a single investment opportunity by ID, including its provider and current investments.',\n inputSchema: { id: z.string().describe('Investment opportunity ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n getInvestmentOpportunity: Record<string, unknown> | null;\n }>(ops.GET_INVESTMENT_OPPORTUNITY, { id });\n if (!data.getInvestmentOpportunity)\n return errorResult(`Investment opportunity ${id} not found`);\n return jsonResult(data.getInvestmentOpportunity);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_get failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to get investment opportunity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_list')),\n {\n title: 'List Investment Opportunities',\n description:\n 'List community-investment opportunities, optionally filtered by risk level and/or status.',\n inputSchema: {\n riskLevel: RiskLevelEnum.optional().describe('Filter by risk level'),\n status: InvestmentStatusEnum.optional().describe('Filter by opportunity status'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ riskLevel, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listInvestmentOpportunities: Array<Record<string, unknown>>;\n }>(ops.LIST_INVESTMENT_OPPORTUNITIES, {\n riskLevel,\n status,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listInvestmentOpportunities);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_list failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list investment opportunities: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_opportunities_create')),\n {\n title: 'Create Investment Opportunity',\n description:\n 'Create a community-investment opportunity for a provider (fundraise target, minimum ticket, expected returns, lock-in, risk).',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider raising the investment'),\n title: z.string().min(1).describe('Opportunity title'),\n targetAmount: z.number().describe('Fundraise target amount'),\n minimumInvestment: z.number().describe('Minimum investment ticket size'),\n expectedReturnsPct: z.number().describe('Expected returns as a percentage'),\n lockInMonths: z.number().int().describe('Lock-in period in months'),\n riskLevel: RiskLevelEnum.optional().describe('Risk level (default MEDIUM)'),\n description: z.string().optional().describe('Opportunity description'),\n businessMetrics: JsonObject.optional().describe('Supporting business-metrics JSON'),\n terms: JsonObject.optional().describe('Investment terms JSON'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({\n providerId,\n title,\n targetAmount,\n minimumInvestment,\n expectedReturnsPct,\n lockInMonths,\n riskLevel,\n description,\n businessMetrics,\n terms,\n expiresAt,\n }) => {\n try {\n const input: Record<string, unknown> = {\n providerId,\n title,\n targetAmount,\n minimumInvestment,\n expectedReturnsPct,\n lockInMonths,\n };\n if (riskLevel !== undefined) input.riskLevel = riskLevel;\n if (description !== undefined) input.description = description;\n if (businessMetrics !== undefined) input.businessMetrics = businessMetrics;\n if (terms !== undefined) input.terms = terms;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n createInvestmentOpportunity: Record<string, unknown>;\n }>(ops.CREATE_INVESTMENT_OPPORTUNITY, { input });\n return jsonResult(data.createInvestmentOpportunity);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_opportunities_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create investment opportunity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_list')),\n {\n title: 'List Investments',\n description:\n 'List the investments made by a given investor, including each investment’s transactions.',\n inputSchema: {\n investorId: z.string().describe('Investor user ID'),\n limit: z.number().int().optional().describe('Page size (default 100)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ investorId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n listInvestments: Array<Record<string, unknown>>;\n }>(ops.LIST_INVESTMENTS, {\n investorId,\n limit: limit ?? 100,\n offset: offset ?? 0,\n });\n return jsonResult(data.listInvestments);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list investments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'investments_invest')),\n {\n title: 'Invest in Opportunity',\n description:\n 'Commit an investment amount to an opportunity on behalf of an investor. Returns the created investment plus the updated opportunity funding state.',\n inputSchema: {\n opportunityId: z.string().min(1).describe('Target investment opportunity ID'),\n investorId: z.string().min(1).describe('Investor user ID'),\n amount: z.number().describe('Investment amount (must meet the opportunity minimum)'),\n },\n },\n async ({ opportunityId, investorId, amount }) => {\n try {\n const input = { opportunityId, investorId, amount };\n const data = await ctx.gql.workspace.request<{\n invest: Record<string, unknown>;\n }>(ops.INVEST, { input });\n return jsonResult(data.invest);\n } catch (error) {\n ctx.logger.error('kadaikodi investments_invest failed', { error: String(error) });\n return errorResult(\n `Failed to invest: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Kadaikodi analytics + health tools.\n *\n * Surface (3): analytics_admin, analytics_dashboard, health.\n * `health` maps to the @public kadaikodiHealth query (no auth required);\n * the analytics queries are @rbac wspace-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 registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_admin')),\n {\n title: 'Kadaikodi Admin Analytics',\n description:\n 'Marketplace-wide admin analytics: category distribution, customer growth, order trends, revenue by category, and top providers.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n kadaikodiAdminAnalytics: Record<string, unknown>;\n }>(ops.ADMIN_ANALYTICS, {});\n return jsonResult(data.kadaikodiAdminAnalytics);\n } catch (error) {\n ctx.logger.error('kadaikodi analytics_admin failed', { error: String(error) });\n return errorResult(\n `Failed to get admin analytics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_dashboard')),\n {\n title: 'Kadaikodi Dashboard Stats',\n description:\n 'Headline marketplace KPIs: active providers, active customers, total + pending orders, total revenue, and average rating.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n kadaikodiDashboardStats: Record<string, unknown>;\n }>(ops.DASHBOARD_STATS, {});\n return jsonResult(data.kadaikodiDashboardStats);\n } catch (error) {\n ctx.logger.error('kadaikodi analytics_dashboard failed', { error: String(error) });\n return errorResult(\n `Failed to get dashboard stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Kadaikodi Health Check',\n description:\n 'Public health probe for the Kadaikodi subgraph (kadaikodiHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.kadaikodiHealth });\n } catch (error) {\n ctx.logger.error('kadaikodi health failed', { error: String(error) });\n return errorResult(\n `Kadaikodi 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 { DASHBOARD_STATS, ADMIN_ANALYTICS, LIST_SERVICE_PROVIDERS } from './operations.js';\n\n/**\n * Read-only Kadaikodi 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 registerKadaikodiResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const dashboardUri = track(mcpResourceUri(ctx.productName, 'dashboard'));\n const analyticsUri = track(mcpResourceUri(ctx.productName, 'analytics'));\n const providersUri = track(mcpResourceUri(ctx.productName, 'providers'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'kadaikodi-schema',\n schemaUri,\n {\n title: 'Kadaikodi Domain Schema',\n description:\n 'Overview of the Kadaikodi marketplace 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 = `# Kadaikodi Domain (Overview)\n\nHyperlocal services + commerce + community-investment marketplace.\n\n## Entities\n- KadaikodiServiceProvider — a business/storefront (offerings, workers, investment opportunities)\n- KadaikodiProviderWorker — staff attached to a provider (has tasks)\n- KadaikodiWorkerTask — task assigned to a worker\n- KadaikodiOffering — catalog item (PRODUCT or SERVICE)\n- KadaikodiOrder (+KadaikodiOrderItem) — customer order + line items\n- KadaikodiReview — customer rating + provider response\n- KadaikodiInvestmentOpportunity — community fundraise for a provider\n- KadaikodiInvestment (+KadaikodiInvestmentTransaction) — an investor's stake + ledger\n\n## Enums\n- ServiceCategory: CLOTHING_FASHION, EDUCATION_SKILLS, FOOD_BEVERAGE, GROCERY_ESSENTIALS, HEALTH_WELLNESS, HOME_SERVICES, PERSONAL_CARE_BEAUTY, REPAIR_MAINTENANCE, RETAIL_MERCHANDISE\n- ProviderStatus: DRAFT, ACTIVE, VERIFIED, PAUSED, SUSPENDED, ARCHIVED\n- OfferingKind: PRODUCT, SERVICE\n- OrderStatus: PENDING, PLACED, CONFIRMED, PREPARING, READY, OUT_FOR_DELIVERY, DELIVERED, COMPLETED, CANCELLED\n- PaymentStatus: PENDING, PROCESSING, PAID, FAILED, REFUNDED\n- InvestmentStatus: DRAFT, ACTIVE, FUNDED, CLOSED\n- RiskLevel: LOW, MEDIUM, HIGH\n\n## Tool groups\nproviders, workers, tasks, offerings, orders, reviews, investments, analytics.\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>://dashboard — headline KPIs\n server.registerResource(\n 'kadaikodi-dashboard',\n dashboardUri,\n {\n title: 'Kadaikodi Dashboard Stats',\n description:\n 'Live headline marketplace KPIs (providers, customers, orders, revenue, rating).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${dashboardUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiDashboardStats: unknown }>(\n DASHBOARD_STATS,\n {},\n );\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify(data.kadaikodiDashboardStats, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: dashboardUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://analytics — admin analytics\n server.registerResource(\n 'kadaikodi-analytics',\n analyticsUri,\n {\n title: 'Kadaikodi Admin Analytics',\n description:\n 'Marketplace-wide analytics: category distribution, customer growth, order trends, revenue by category, top providers.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${analyticsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ kadaikodiAdminAnalytics: unknown }>(\n ADMIN_ANALYTICS,\n {},\n );\n return {\n contents: [\n {\n uri: analyticsUri,\n text: JSON.stringify(data.kadaikodiAdminAnalytics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: analyticsUri,\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>://providers — active provider directory\n server.registerResource(\n 'kadaikodi-providers',\n providersUri,\n {\n title: 'Kadaikodi Provider Directory',\n description: 'The first 50 service providers in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${providersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ listServiceProviders: unknown }>(\n LIST_SERVICE_PROVIDERS,\n { limit: 50, offset: 0 },\n );\n return {\n contents: [\n {\n uri: providersUri,\n text: JSON.stringify(data.listServiceProviders, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: providersUri,\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 * Kadaikodi MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerKadaikodiPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'provider-onboarding'));\n const opsName = track(mcpPromptName(p, 'marketplace-ops'));\n\n // <product>-provider-onboarding — stand up a provider + catalog\n server.registerPrompt(\n onboardingName,\n {\n title: 'Provider Onboarding',\n description:\n 'Guide for onboarding a new Kadaikodi service provider end to end: create the provider, add catalog offerings, and optionally open an investment opportunity.',\n argsSchema: {\n name: z.string().optional().describe('Provider/business name'),\n category: z.string().optional().describe('Service category'),\n },\n },\n ({ name, category }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { name, category });\n const nameNote = name\n ? `Use the business name \"${name}\".`\n : 'Ask the user for the business name.';\n const categoryNote = category\n ? `Use category ${category}.`\n : 'Help the user pick a ServiceCategory.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new Kadaikodi service provider.\n\n1. **Create Provider**: Use ${p}_providers_create. ${nameNote} ${categoryNote} Provide a unique slug, ownerId, and a location JSON ({ address, latitude, longitude }).\n2. **Add Offerings**: Use ${p}_offerings_create for each catalog item — set kind=PRODUCT (with stock) or kind=SERVICE (with durationMinutes), a price, and a unique slug per provider.\n3. **Verify Catalog**: Use ${p}_offerings_list filtered by the new providerId.\n4. **(Optional) Open Investment**: Use ${p}_investments_opportunities_create to raise community capital (targetAmount, minimumInvestment, expectedReturnsPct, lockInMonths, riskLevel).\n5. **Activate**: Use ${p}_providers_update with status=VERIFIED (or ACTIVE) when ready.\n\nShow results at each step and confirm before activation.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-marketplace-ops — daily operations\n server.registerPrompt(\n opsName,\n {\n title: 'Marketplace Operations',\n description:\n 'Daily operations workflow for a provider: triage the order queue, advance fulfilment, respond to reviews, and review KPIs.',\n argsSchema: {\n providerId: z.string().optional().describe('Provider ID to operate'),\n },\n },\n ({ providerId }) => {\n ctx.logger.debug(`Prompt ${opsName} called`, { providerId });\n const providerNote = providerId\n ? `Operate provider \"${providerId}\".`\n : `First list providers with ${p}_providers_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Kadaikodi marketplace operations. ${providerNote}\n\n1. **KPIs**: Use ${p}_analytics_dashboard for headline numbers and ${p}_analytics_admin for trends.\n2. **Order Queue**: Use ${p}_orders_list filtered by providerId and status=PLACED (and PENDING) to find new orders.\n3. **Advance Fulfilment**: For each order use ${p}_orders_update_status to move it through CONFIRMED → PREPARING → READY → OUT_FOR_DELIVERY → DELIVERED → COMPLETED.\n4. **Reviews**: Use ${p}_reviews_list for the provider; reply to unanswered ones with ${p}_reviews_respond.\n5. **Workforce**: Use ${p}_workers_list and ${p}_tasks_list to check worker task load.\n6. **Investments**: If fundraising, use ${p}_investments_opportunities_list to track raised vs target.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Kadaikodi module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-kadaikodi-svc grouped into per-entity\n * sub-APIs: providers, workers, tasks, offerings, orders, reviews,\n * investments, analytics. Mirrors the rich vibecontrols module's structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/wspace/kadaikodi/wspace-kadaikodi-svc/\n * (Hive service name `kadaikodi`). All operations run against the WORKSPACE\n * gateway; the @public kadaikodiHealth 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 { registerProviderTools } from './tools/providers.js';\nimport { registerWorkerTools } from './tools/workers.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerOfferingTools } from './tools/offerings.js';\nimport { registerOrderTools } from './tools/orders.js';\nimport { registerReviewTools } from './tools/reviews.js';\nimport { registerInvestmentTools } from './tools/investments.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerKadaikodiResources } from './resources.js';\nimport { registerKadaikodiPrompts } from './prompts.js';\n\nconst kadaikodiModule: McpModule = {\n id: 'kadaikodi',\n version: '0.0.1',\n displayName: 'Kadaikodi',\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 registerProviderTools(server, ctx, trackTool);\n registerWorkerTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerOfferingTools(server, ctx, trackTool);\n registerOrderTools(server, ctx, trackTool);\n registerReviewTools(server, ctx, trackTool);\n registerInvestmentTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n\n registerKadaikodiResources(server, ctx, trackResource);\n registerKadaikodiPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default kadaikodiModule;\n"]}
|