@burdenoff/mcp-libs 2026.825.2 → 2026.828.1
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-YOSQUY3M.js → chunk-BSNL65PZ.js} +2 -2
- package/dist/{chunk-YOSQUY3M.js.map → chunk-BSNL65PZ.js.map} +1 -1
- package/dist/{chunk-RHWHUY5Y.js → chunk-QQYJVKJE.js} +3 -3
- package/dist/{chunk-RHWHUY5Y.js.map → chunk-QQYJVKJE.js.map} +1 -1
- 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.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.map +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +8 -8
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +9 -9
- package/dist/modules/artistrybase/index.js.map +1 -1
- package/dist/modules/assethandler/index.cjs.map +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs.map +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs.map +1 -1
- package/dist/modules/auth/index.js +3 -3
- package/dist/modules/billing/index.cjs.map +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +13 -3
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js +14 -4
- package/dist/modules/brainyrich/index.js.map +1 -1
- package/dist/modules/buildmyiq/index.cjs.map +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs.map +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs.map +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs.map +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs.map +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs.map +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs.map +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs.map +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs.map +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +12 -6
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +13 -7
- package/dist/modules/ecoimpacthub/index.js.map +1 -1
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs.map +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs.map +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs.map +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs.map +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs.map +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs.map +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.cjs.map +1 -1
- package/dist/modules/health/index.js +1 -1
- package/dist/modules/hookmovies/index.cjs.map +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs.map +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs.map +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs.map +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs.map +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs.map +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs.map +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs.map +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs.map +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs.map +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.cjs.map +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.cjs.map +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs.map +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs.map +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs.map +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs.map +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs.map +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs.map +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs.map +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs.map +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs.map +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs.map +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs.map +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs.map +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +16 -4
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +17 -5
- package/dist/modules/theculturepost/index.js.map +1 -1
- package/dist/modules/theglobalfuel/index.cjs.map +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +18 -9
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +19 -10
- package/dist/modules/timecampus/index.js.map +1 -1
- package/dist/modules/tours/index.cjs.map +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs.map +1 -1
- package/dist/modules/vibecontrols/index.js +2 -2
- package/dist/modules/workspaces/index.cjs.map +1 -1
- package/dist/modules/workspaces/index.js +1 -1
- package/dist/{tool-name-Bvb36qmq.d.cts → tool-name-DYWaobFF.d.cts} +1 -1
- package/dist/{tool-name-BaPNMZdj.d.ts → tool-name-nso0HFYX.d.ts} +1 -1
- package/package.json +30 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/subscriberbot/operations.ts","../../../src/modules/subscriberbot/tools/shared.ts","../../../src/modules/subscriberbot/tools/providers.ts","../../../src/modules/subscriberbot/tools/plans.ts","../../../src/modules/subscriberbot/tools/relationships.ts","../../../src/modules/subscriberbot/tools/entitlements.ts","../../../src/modules/subscriberbot/tools/assets.ts","../../../src/modules/subscriberbot/tools/renewals.ts","../../../src/modules/subscriberbot/tools/payment-instruments.ts","../../../src/modules/subscriberbot/tools/invoices.ts","../../../src/modules/subscriberbot/tools/channels.ts","../../../src/modules/subscriberbot/tools/inbox.ts","../../../src/modules/subscriberbot/tools/agents.ts","../../../src/modules/subscriberbot/tools/policies.ts","../../../src/modules/subscriberbot/tools/workflows.ts","../../../src/modules/subscriberbot/tools/health.ts","../../../src/modules/subscriberbot/resources.ts","../../../src/modules/subscriberbot/prompts.ts","../../../src/modules/subscriberbot/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 Subscriber Bot MCP module.\n *\n * Subscriber Bot is the Universal Digital Relationship Operating System — the\n * federated system of record for every recurring digital relationship\n * (subscriptions / memberships / licenses / contracts), the global provider\n * registry, plans, entitlements, assets, the universal billing layer\n * (payment instruments + invoices), the universal inbox (channels + messages),\n * and the AI automation layer (agents / policies / workflows).\n *\n * Backend subgraph: ~/products/subscriberbot/wspace-subscriberbot-svc/\n * (Hive service name `subscriberbot`).\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 — Subscriber Bot inputs do NOT carry a workspaceId.\n *\n * EVERY root field is `sub`-prefixed and every type/enum/input is `Sub`-prefixed\n * (the product's GraphQL naming contract); operations call them by their REAL\n * names. Uses template-string interpolation (not gql tagged fragments) to match\n * the canonical kadaikodi/vibecontrols modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PROVIDER_FIELDS = `\n id name slug description category status industry region language\n logoFileId websiteUrl tags churnRiskScore vendorHealthScore\n workspaceId createdAt updatedAt\n`;\n\nexport const PLAN_FIELDS = `\n id name description amount currency interval features isActive\n providerId workspaceId createdAt updatedAt\n`;\n\nexport const ENTITLEMENT_FIELDS = `\n id name description type quota used unit isActive\n relationshipId workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id name type secretRef expiresAt relationshipId workspaceId\n createdAt updatedAt file { id }\n`;\n\nexport const RENEWAL_EVENT_FIELDS = `\n id eventType detail amount currency occursAt notified\n relationshipId workspaceId createdAt updatedAt\n`;\n\nexport const RELATIONSHIP_FIELDS = `\n id label kind status amount currency interval autoRenew discoverySource\n healthScore notes tags providerId planId ownerId startedAt renewsAt\n trialEndsAt cancelledAt workspaceId createdAt updatedAt\n`;\n\nexport const PAYMENT_INSTRUMENT_FIELDS = `\n id label type status brand last4 expiryMonth expiryYear isDefault\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const INVOICE_FIELDS = `\n id number status currency subtotal taxAmount total issueDate dueDate\n paidAt lineItems paymentInstrumentId relationshipId workspaceId\n createdAt updatedAt file { id }\n`;\n\nexport const CHANNEL_FIELDS = `\n id type status address label ingestEnabled verifiedAt\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const INBOX_MESSAGE_FIELDS = `\n id subject preview category categoryConfidence actionRequired isRead\n externalId receivedAt channelId relationshipId workspaceId\n createdAt updatedAt\n`;\n\nexport const AGENT_FIELDS = `\n id name description kind status config lastRunAt\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const POLICY_FIELDS = `\n id name description action condition isEnabled triggerCount\n lastTriggeredAt agentId workspaceId createdAt updatedAt\n`;\n\nexport const WORKFLOW_FIELDS = `\n id name description status triggerEvent steps runCount lastRunAt\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Providers (global registry)\n// ---------------------------------------------------------------------------\n\nexport const GET_PROVIDER = `\n query SubscriberbotGetProvider($id: ID!) {\n subProvider(id: $id) {\n ${PROVIDER_FIELDS}\n plans { ${PLAN_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROVIDERS = `\n query SubscriberbotListProviders(\n $category: SubProviderCategory\n $status: SubProviderStatus\n $search: String\n $pagination: PaginationInput\n ) {\n subListProviders(\n category: $category\n status: $status\n search: $search\n pagination: $pagination\n ) {\n items { ${PROVIDER_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PROVIDER = `\n mutation SubscriberbotCreateProvider($input: SubCreateProviderInput!) {\n subCreateProvider(input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROVIDER = `\n mutation SubscriberbotUpdateProvider($id: ID!, $input: SubUpdateProviderInput!) {\n subUpdateProvider(id: $id, input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PROVIDER = `\n mutation SubscriberbotArchiveProvider($id: ID!) {\n subArchiveProvider(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Plans\n// ---------------------------------------------------------------------------\n\nexport const LIST_PLANS = `\n query SubscriberbotListPlans($providerId: ID) {\n subListPlans(providerId: $providerId) {\n ${PLAN_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PLAN = `\n mutation SubscriberbotCreatePlan($input: SubCreatePlanInput!) {\n subCreatePlan(input: $input) {\n ${PLAN_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Relationships (the core domain)\n// ---------------------------------------------------------------------------\n\nexport const GET_RELATIONSHIP = `\n query SubscriberbotGetRelationship($id: ID!) {\n subRelationship(id: $id) {\n ${RELATIONSHIP_FIELDS}\n provider { id name slug category status }\n plan { id name amount currency interval }\n entitlements { ${ENTITLEMENT_FIELDS} }\n assets { ${ASSET_FIELDS} }\n renewalEvents { ${RENEWAL_EVENT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RELATIONSHIPS = `\n query SubscriberbotListRelationships(\n $kind: SubRelationshipKind\n $status: SubRelationshipStatus\n $ownerId: ID\n $providerId: ID\n $pagination: PaginationInput\n ) {\n subListRelationships(\n kind: $kind\n status: $status\n ownerId: $ownerId\n providerId: $providerId\n pagination: $pagination\n ) {\n items { ${RELATIONSHIP_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_RELATIONSHIP = `\n mutation SubscriberbotCreateRelationship($input: SubCreateRelationshipInput!) {\n subCreateRelationship(input: $input) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_RELATIONSHIP = `\n mutation SubscriberbotUpdateRelationship($id: ID!, $input: SubUpdateRelationshipInput!) {\n subUpdateRelationship(id: $id, input: $input) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const CANCEL_RELATIONSHIP = `\n mutation SubscriberbotCancelRelationship($id: ID!) {\n subCancelRelationship(id: $id) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_RELATIONSHIP = `\n mutation SubscriberbotTransitionRelationship($id: ID!, $status: SubRelationshipStatus!) {\n subTransitionRelationship(id: $id, status: $status) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entitlements\n// ---------------------------------------------------------------------------\n\nexport const LIST_ENTITLEMENTS = `\n query SubscriberbotListEntitlements($relationshipId: ID!) {\n subListEntitlements(relationshipId: $relationshipId) {\n ${ENTITLEMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ENTITLEMENT = `\n mutation SubscriberbotCreateEntitlement($input: SubCreateEntitlementInput!) {\n subCreateEntitlement(input: $input) {\n ${ENTITLEMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Assets\n// ---------------------------------------------------------------------------\n\nexport const LIST_ASSETS = `\n query SubscriberbotListAssets($relationshipId: ID!) {\n subListAssets(relationshipId: $relationshipId) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ASSET = `\n mutation SubscriberbotCreateAsset($input: SubCreateAssetInput!) {\n subCreateAsset(input: $input) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Renewal events\n// ---------------------------------------------------------------------------\n\nexport const LIST_RENEWAL_EVENTS = `\n query SubscriberbotListRenewalEvents($relationshipId: ID, $upcomingOnly: Boolean) {\n subListRenewalEvents(relationshipId: $relationshipId, upcomingOnly: $upcomingOnly) {\n ${RENEWAL_EVENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Payment instruments (universal billing layer)\n// ---------------------------------------------------------------------------\n\nexport const LIST_PAYMENT_INSTRUMENTS = `\n query SubscriberbotListPaymentInstruments($ownerId: ID) {\n subListPaymentInstruments(ownerId: $ownerId) {\n ${PAYMENT_INSTRUMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PAYMENT_INSTRUMENT = `\n mutation SubscriberbotCreatePaymentInstrument($input: SubCreatePaymentInstrumentInput!) {\n subCreatePaymentInstrument(input: $input) {\n ${PAYMENT_INSTRUMENT_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_PAYMENT_INSTRUMENT = `\n mutation SubscriberbotRemovePaymentInstrument($id: ID!) {\n subRemovePaymentInstrument(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Invoices\n// ---------------------------------------------------------------------------\n\nexport const LIST_INVOICES = `\n query SubscriberbotListInvoices(\n $relationshipId: ID\n $status: SubInvoiceStatus\n $pagination: PaginationInput\n ) {\n subListInvoices(relationshipId: $relationshipId, status: $status, pagination: $pagination) {\n items { ${INVOICE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_INVOICE = `\n mutation SubscriberbotCreateInvoice($input: SubCreateInvoiceInput!) {\n subCreateInvoice(input: $input) {\n ${INVOICE_FIELDS}\n }\n }\n`;\n\nexport const MARK_INVOICE_PAID = `\n mutation SubscriberbotMarkInvoicePaid($id: ID!) {\n subMarkInvoicePaid(id: $id) {\n ${INVOICE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communication channels\n// ---------------------------------------------------------------------------\n\nexport const LIST_CHANNELS = `\n query SubscriberbotListChannels($ownerId: ID) {\n subListChannels(ownerId: $ownerId) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\nexport const CREATE_CHANNEL = `\n mutation SubscriberbotCreateChannel($input: SubCreateChannelInput!) {\n subCreateChannel(input: $input) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\nexport const VERIFY_CHANNEL = `\n mutation SubscriberbotVerifyChannel($id: ID!) {\n subVerifyChannel(id: $id) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Universal inbox (messages)\n// ---------------------------------------------------------------------------\n\nexport const LIST_INBOX_MESSAGES = `\n query SubscriberbotListInboxMessages(\n $category: SubMessageCategory\n $channelId: ID\n $relationshipId: ID\n $unreadOnly: Boolean\n $pagination: PaginationInput\n ) {\n subListInboxMessages(\n category: $category\n channelId: $channelId\n relationshipId: $relationshipId\n unreadOnly: $unreadOnly\n pagination: $pagination\n ) {\n items { ${INBOX_MESSAGE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const INGEST_MESSAGE = `\n mutation SubscriberbotIngestMessage($input: SubIngestMessageInput!) {\n subIngestMessage(input: $input) {\n ${INBOX_MESSAGE_FIELDS}\n }\n }\n`;\n\nexport const MARK_MESSAGE_READ = `\n mutation SubscriberbotMarkMessageRead($id: ID!) {\n subMarkMessageRead(id: $id) {\n ${INBOX_MESSAGE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// AI agents (automation layer)\n// ---------------------------------------------------------------------------\n\nexport const GET_AGENT = `\n query SubscriberbotGetAgent($id: ID!) {\n subAgent(id: $id) {\n ${AGENT_FIELDS}\n policies { ${POLICY_FIELDS} }\n }\n }\n`;\n\nexport const LIST_AGENTS = `\n query SubscriberbotListAgents($kind: SubAgentKind, $ownerId: ID, $status: SubAgentStatus) {\n subListAgents(kind: $kind, ownerId: $ownerId, status: $status) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENT = `\n mutation SubscriberbotCreateAgent($input: SubCreateAgentInput!) {\n subCreateAgent(input: $input) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\nexport const SET_AGENT_STATUS = `\n mutation SubscriberbotSetAgentStatus($id: ID!, $status: SubAgentStatus!) {\n subSetAgentStatus(id: $id, status: $status) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Policies (autonomous rules)\n// ---------------------------------------------------------------------------\n\nexport const LIST_POLICIES = `\n query SubscriberbotListPolicies($agentId: ID) {\n subListPolicies(agentId: $agentId) {\n ${POLICY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_POLICY = `\n mutation SubscriberbotCreatePolicy($input: SubCreatePolicyInput!) {\n subCreatePolicy(input: $input) {\n ${POLICY_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workflows\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORKFLOWS = `\n query SubscriberbotListWorkflows($status: SubWorkflowStatus) {\n subListWorkflows(status: $status) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\nexport const CREATE_WORKFLOW = `\n mutation SubscriberbotCreateWorkflow($input: SubCreateWorkflowInput!) {\n subCreateWorkflow(input: $input) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\nexport const ACTIVATE_WORKFLOW = `\n mutation SubscriberbotActivateWorkflow($id: ID!) {\n subActivateWorkflow(id: $id) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query SubscriberbotHealth {\n subHealth\n }\n`;\n","/**\n * Shared zod schemas for the Subscriber Bot tool surface.\n *\n * Every backend enum (the `Sub*` enums of wspace-subscriberbot-svc) is mirrored\n * as a tight zod enum so Claude Desktop grounds tool calls against the exact\n * allowed values. JSON scalar inputs (agent `config`, policy `condition`,\n * invoice `lineItems`, workflow `steps`) are modelled as permissive object (or\n * object-or-array) records — the backend accepts arbitrary JSON, but a record\n * shape gives the LLM a typed hint.\n *\n * Backend: ~/products/subscriberbot/wspace-subscriberbot-svc/.hive-schema.graphql\n */\n\nimport { z } from 'zod';\n\nexport const SubAgentKindEnum = z\n .enum([\n 'COMPLIANCE',\n 'CONCIERGE',\n 'COST',\n 'DISCOVERY',\n 'MIGRATION',\n 'NEGOTIATION',\n 'NEWSLETTER',\n 'RENEWAL',\n 'VENDOR',\n ])\n .describe('The specialised role of an AI agent');\n\nexport const SubAgentStatusEnum = z\n .enum(['AUTONOMOUS', 'DISABLED', 'SUGGEST_ONLY'])\n .describe(\"An agent's operating posture\");\n\nexport const SubAssetTypeEnum = z\n .enum([\n 'CERTIFICATE',\n 'CONTRACT',\n 'CREDENTIAL',\n 'DOMAIN',\n 'INVOICE',\n 'LICENSE_KEY',\n 'RECEIPT',\n 'WARRANTY',\n ])\n .describe('The kind of asset attached to a relationship');\n\nexport const SubBillingIntervalEnum = z\n .enum(['DAILY', 'FREE', 'LIFETIME', 'MONTHLY', 'QUARTERLY', 'USAGE_BASED', 'WEEKLY', 'YEARLY'])\n .describe('Billing cadence of a plan or relationship');\n\nexport const SubChannelStatusEnum = z\n .enum(['DISABLED', 'PENDING', 'VERIFIED'])\n .describe('Verification status of a communication channel');\n\nexport const SubChannelTypeEnum = z\n .enum(['DISCORD', 'EMAIL', 'PUSH', 'SLACK', 'SMS', 'WEBHOOK', 'WHATSAPP'])\n .describe('Transport type of a communication channel');\n\nexport const SubDiscoverySourceEnum = z\n .enum(['AI_AGENT', 'EMAIL_SCAN', 'IMPORT', 'MANUAL', 'PAYMENT_SCAN', 'PROVIDER_CONNECT'])\n .describe('How a relationship was discovered');\n\nexport const SubEntitlementTypeEnum = z\n .enum(['CONTENT', 'DISCOUNT', 'FEATURE_ACCESS', 'SEAT', 'SUPPORT_TIER', 'USAGE_QUOTA'])\n .describe('The kind of entitlement granted by a relationship');\n\nexport const SubInvoiceStatusEnum = z\n .enum(['CANCELLED', 'DRAFT', 'FAILED', 'ISSUED', 'OVERDUE', 'PAID', 'REFUNDED'])\n .describe('Lifecycle status of an invoice');\n\nexport const SubMessageCategoryEnum = z\n .enum([\n 'BILLING',\n 'MARKETING',\n 'OTHER',\n 'PRODUCT_UPDATE',\n 'RENEWAL',\n 'REQUIRED_ACTION',\n 'SECURITY_ALERT',\n ])\n .describe('Classification of a universal-inbox message');\n\nexport const SubPaymentInstrumentStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'EXPIRING', 'REMOVED'])\n .describe('Status of a payment instrument');\n\nexport const SubPaymentInstrumentTypeEnum = z\n .enum(['BANK_ACCOUNT', 'CARD', 'OTHER', 'PAYPAL', 'UPI', 'WALLET'])\n .describe('Type of a payment instrument');\n\nexport const SubPolicyActionEnum = z\n .enum(['ALERT', 'CANCEL', 'CREATE_TASK', 'DOWNGRADE', 'PAUSE', 'RENEW', 'UPGRADE'])\n .describe('The action an autonomous policy takes when triggered');\n\nexport const SubProviderCategoryEnum = z\n .enum([\n 'AI_SERVICE',\n 'ASSOCIATION',\n 'COMMUNITY',\n 'CONTRACT',\n 'EDUCATION',\n 'FINANCIAL',\n 'INSURANCE',\n 'LICENSE',\n 'MEMBERSHIP',\n 'NEWSLETTER',\n 'NEWS_DIGEST',\n 'OTHER',\n 'SAAS',\n 'STREAMING',\n 'TELECOM',\n 'UTILITY',\n ])\n .describe('Category of a provider in the global registry');\n\nexport const SubProviderStatusEnum = z\n .enum(['CLAIMED', 'DEPRECATED', 'UNVERIFIED', 'VERIFIED'])\n .describe('Lifecycle/trust status of a provider');\n\nexport const SubRelationshipKindEnum = z\n .enum([\n 'CONTRACT',\n 'ENROLLMENT',\n 'LICENSE',\n 'MEMBERSHIP',\n 'NEWSLETTER',\n 'RECURRING_PAYMENT',\n 'SUBSCRIPTION',\n 'TRIAL',\n ])\n .describe('The kind of recurring relationship');\n\nexport const SubRelationshipStatusEnum = z\n .enum(['ACTIVE', 'CANCELLED', 'EXPIRED', 'LAPSED', 'PAST_DUE', 'PAUSED', 'TRIAL'])\n .describe('Lifecycle status of a relationship');\n\nexport const SubWorkflowStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Lifecycle status of an automation workflow');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** JSON scalar inputs that may be either an object or an array. */\nexport const JsonValue = z.union([JsonObject, z.array(z.unknown())]);\n","/**\n * Subscriber Bot provider tools — the global provider registry.\n *\n * Surface (5): providers_{get,list,create,update,archive}.\n * Backed by the real root fields subProvider / subListProviders /\n * subCreateProvider / subUpdateProvider / subArchiveProvider.\n * `subListProviders` returns a SubProviderConnection ({ items, pageInfo }).\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';\nimport { SubProviderCategoryEnum, SubProviderStatusEnum } from './shared.js';\nimport { z } from 'zod';\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 Provider',\n description: 'Fetch a single provider from the global registry by ID, including its plans.',\n inputSchema: { id: z.string().describe('Provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subProvider: Record<string, unknown> | null;\n }>(ops.GET_PROVIDER, { id });\n if (!data.subProvider) return errorResult(`Provider ${id} not found`);\n return jsonResult(data.subProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_get failed', { error: String(error) });\n return errorResult(\n `Failed to get 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 Providers',\n description:\n 'Discovery: search/browse the global provider registry with optional category/status/text filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: SubProviderCategoryEnum.optional().describe('Filter by category'),\n status: SubProviderStatusEnum.optional().describe('Filter by trust/lifecycle status'),\n search: z.string().optional().describe('Free-text search across provider 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 cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ category, status, search, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListProviders: unknown }>(\n ops.LIST_PROVIDERS,\n {\n category,\n status,\n search,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListProviders);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list 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 Provider',\n description:\n 'Register a new provider in the global registry. Only `name` is required; `slug` should be unique within the workspace.',\n inputSchema: {\n name: z.string().min(1).describe('Provider display name'),\n slug: z.string().optional().describe('URL slug, unique within the workspace'),\n category: SubProviderCategoryEnum.optional().describe('Provider category (default OTHER)'),\n status: SubProviderStatusEnum.optional().describe(\n 'Trust/lifecycle status (default UNVERIFIED)',\n ),\n description: z.string().optional().describe('Provider description'),\n industry: z.string().optional().describe('Industry'),\n region: z.string().optional().describe('Region'),\n language: z.string().optional().describe('Primary language'),\n websiteUrl: z.string().optional().describe('Provider website URL'),\n logoFileId: z.string().optional().describe('wspace-files-svc File ID for the logo'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n slug,\n category,\n status,\n description,\n industry,\n region,\n language,\n websiteUrl,\n logoFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (slug !== undefined) input.slug = slug;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (industry !== undefined) input.industry = industry;\n if (region !== undefined) input.region = region;\n if (language !== undefined) input.language = language;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n subCreateProvider: Record<string, unknown>;\n }>(ops.CREATE_PROVIDER, { input });\n return jsonResult(data.subCreateProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_create failed', { error: String(error) });\n return errorResult(\n `Failed to create 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 Provider',\n description:\n 'Update a provider. At least one mutable field must be provided. Use `status` to verify/claim/deprecate; set churn/vendor-health scores for vendor intelligence.',\n inputSchema: {\n id: z.string().describe('Provider ID'),\n name: z.string().optional().describe('Updated display name'),\n slug: z.string().optional().describe('Updated slug'),\n category: SubProviderCategoryEnum.optional().describe('Updated category'),\n status: SubProviderStatusEnum.optional().describe('Updated trust/lifecycle status'),\n description: z.string().optional().describe('Updated description'),\n industry: z.string().optional().describe('Updated industry'),\n region: z.string().optional().describe('Updated region'),\n language: z.string().optional().describe('Updated language'),\n websiteUrl: z.string().optional().describe('Updated website URL'),\n logoFileId: z.string().optional().describe('Updated logo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n churnRiskScore: z.number().int().optional().describe('Churn-risk score (0-100)'),\n vendorHealthScore: z.number().int().optional().describe('Vendor-health score (0-100)'),\n },\n },\n async ({\n id,\n name,\n slug,\n category,\n status,\n description,\n industry,\n region,\n language,\n websiteUrl,\n logoFileId,\n tags,\n churnRiskScore,\n vendorHealthScore,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (slug !== undefined) input.slug = slug;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (industry !== undefined) input.industry = industry;\n if (region !== undefined) input.region = region;\n if (language !== undefined) input.language = language;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (tags !== undefined) input.tags = tags;\n if (churnRiskScore !== undefined) input.churnRiskScore = churnRiskScore;\n if (vendorHealthScore !== undefined) input.vendorHealthScore = vendorHealthScore;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable provider field');\n }\n\n const data = await ctx.gql.workspace.request<{\n subUpdateProvider: Record<string, unknown>;\n }>(ops.UPDATE_PROVIDER, { id, input });\n return jsonResult(data.subUpdateProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_update failed', { error: String(error) });\n return errorResult(\n `Failed to update provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_archive')),\n {\n title: 'Archive Provider',\n description: 'Archive (soft-delete) a provider. Returns true on success.',\n inputSchema: { id: z.string().describe('Provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ subArchiveProvider: boolean }>(\n ops.ARCHIVE_PROVIDER,\n { id },\n );\n return jsonResult({ archived: data.subArchiveProvider, id });\n } catch (error) {\n ctx.logger.error('subscriberbot providers_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot plan tools — provider plan catalog.\n *\n * Surface (2): plans_{list,create}.\n * Backed by the real root fields subListPlans / subCreatePlan.\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';\nimport { SubBillingIntervalEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPlanTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'plans_list')),\n {\n title: 'List Plans',\n description: 'List plans, optionally filtered by provider.',\n inputSchema: {\n providerId: z.string().optional().describe('Filter by provider ID'),\n },\n },\n async ({ providerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPlans: Array<Record<string, unknown>>;\n }>(ops.LIST_PLANS, { providerId });\n return jsonResult(data.subListPlans);\n } catch (error) {\n ctx.logger.error('subscriberbot plans_list failed', { error: String(error) });\n return errorResult(\n `Failed to list plans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'plans_create')),\n {\n title: 'Create Plan',\n description: 'Create a plan for a provider.',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider ID this plan belongs to'),\n name: z.string().min(1).describe('Plan name'),\n amount: z.number().optional().describe('Plan amount'),\n currency: z.string().optional().describe('ISO currency code'),\n interval: SubBillingIntervalEnum.optional().describe('Billing interval (default MONTHLY)'),\n description: z.string().optional().describe('Plan description'),\n features: z.array(z.string()).optional().describe('Feature list'),\n },\n },\n async ({ providerId, name, amount, currency, interval, description, features }) => {\n try {\n const input: Record<string, unknown> = { providerId, name };\n if (amount !== undefined) input.amount = amount;\n if (currency !== undefined) input.currency = currency;\n if (interval !== undefined) input.interval = interval;\n if (description !== undefined) input.description = description;\n if (features !== undefined) input.features = features;\n\n const data = await ctx.gql.workspace.request<{ subCreatePlan: Record<string, unknown> }>(\n ops.CREATE_PLAN,\n { input },\n );\n return jsonResult(data.subCreatePlan);\n } catch (error) {\n ctx.logger.error('subscriberbot plans_create failed', { error: String(error) });\n return errorResult(\n `Failed to create plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot relationship tools — the core domain object (subscriptions /\n * memberships / licenses / contracts).\n *\n * Surface (6): relationships_{get,list,create,update,cancel,transition}.\n * Backed by subRelationship / subListRelationships / subCreateRelationship /\n * subUpdateRelationship / subCancelRelationship / subTransitionRelationship.\n * `subListRelationships` returns a SubRelationshipConnection ({ items, pageInfo }).\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';\nimport {\n SubBillingIntervalEnum,\n SubDiscoverySourceEnum,\n SubRelationshipKindEnum,\n SubRelationshipStatusEnum,\n} from './shared.js';\nimport { z } from 'zod';\n\nexport function registerRelationshipTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_get')),\n {\n title: 'Get Relationship',\n description:\n 'Fetch a single relationship by ID, including its provider, plan, entitlements, assets, and renewal events.',\n inputSchema: { id: z.string().describe('Relationship ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subRelationship: Record<string, unknown> | null;\n }>(ops.GET_RELATIONSHIP, { id });\n if (!data.subRelationship) return errorResult(`Relationship ${id} not found`);\n return jsonResult(data.subRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_get failed', { error: String(error) });\n return errorResult(\n `Failed to get relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_list')),\n {\n title: 'List Relationships',\n description:\n 'List recurring relationships with optional kind/status/owner/provider filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n kind: SubRelationshipKindEnum.optional().describe('Filter by relationship kind'),\n status: SubRelationshipStatusEnum.optional().describe('Filter by lifecycle status'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n providerId: z.string().optional().describe('Filter by 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 cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ kind, status, ownerId, providerId, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListRelationships: unknown }>(\n ops.LIST_RELATIONSHIPS,\n {\n kind,\n status,\n ownerId,\n providerId,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListRelationships);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_list failed', { error: String(error) });\n return errorResult(\n `Failed to list relationships: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_create')),\n {\n title: 'Create Relationship',\n description:\n 'Create a recurring relationship (subscription / membership / license / contract). Only `label` is required.',\n inputSchema: {\n label: z.string().min(1).describe('Human-readable label'),\n kind: SubRelationshipKindEnum.optional().describe(\n 'Relationship kind (default SUBSCRIPTION)',\n ),\n status: SubRelationshipStatusEnum.optional().describe('Initial status (default ACTIVE)'),\n providerId: z.string().optional().describe('Provider ID'),\n planId: z.string().optional().describe('Plan ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n amount: z.number().optional().describe('Recurring amount'),\n currency: z.string().optional().describe('ISO currency code'),\n interval: SubBillingIntervalEnum.optional().describe('Billing interval (default MONTHLY)'),\n autoRenew: z\n .boolean()\n .optional()\n .describe('Whether the relationship auto-renews (default true)'),\n discoverySource: SubDiscoverySourceEnum.optional().describe(\n 'How it was discovered (default MANUAL)',\n ),\n notes: z.string().optional().describe('Free-form notes'),\n tags: z.array(z.string()).optional().describe('Tags'),\n startedAt: z.string().optional().describe('Start datetime (ISO 8601)'),\n renewsAt: z.string().optional().describe('Next renewal datetime (ISO 8601)'),\n trialEndsAt: z.string().optional().describe('Trial-end datetime (ISO 8601)'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { label: args.label };\n const optional: Array<keyof typeof args> = [\n 'kind',\n 'status',\n 'providerId',\n 'planId',\n 'ownerId',\n 'amount',\n 'currency',\n 'interval',\n 'autoRenew',\n 'discoverySource',\n 'notes',\n 'tags',\n 'startedAt',\n 'renewsAt',\n 'trialEndsAt',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subCreateRelationship: Record<string, unknown>;\n }>(ops.CREATE_RELATIONSHIP, { input });\n return jsonResult(data.subCreateRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_create failed', { error: String(error) });\n return errorResult(\n `Failed to create relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_update')),\n {\n title: 'Update Relationship',\n description: 'Update a relationship. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Relationship ID'),\n label: z.string().optional().describe('Updated label'),\n kind: SubRelationshipKindEnum.optional().describe('Updated kind'),\n providerId: z.string().optional().describe('Updated provider ID'),\n planId: z.string().optional().describe('Updated plan ID'),\n amount: z.number().optional().describe('Updated amount'),\n currency: z.string().optional().describe('Updated currency'),\n interval: SubBillingIntervalEnum.optional().describe('Updated billing interval'),\n autoRenew: z.boolean().optional().describe('Updated auto-renew flag'),\n healthScore: z.number().int().optional().describe('Relationship health score (0-100)'),\n notes: z.string().optional().describe('Updated notes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n startedAt: z.string().optional().describe('Updated start datetime (ISO 8601)'),\n renewsAt: z.string().optional().describe('Updated renewal datetime (ISO 8601)'),\n trialEndsAt: z.string().optional().describe('Updated trial-end datetime (ISO 8601)'),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rest)) {\n if (value !== undefined) input[key] = value;\n }\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable relationship field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n subUpdateRelationship: Record<string, unknown>;\n }>(ops.UPDATE_RELATIONSHIP, { id, input });\n return jsonResult(data.subUpdateRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_update failed', { error: String(error) });\n return errorResult(\n `Failed to update relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_cancel')),\n {\n title: 'Cancel Relationship',\n description: 'Cancel a relationship (sets status CANCELLED and stamps cancelledAt).',\n inputSchema: { id: z.string().describe('Relationship ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subCancelRelationship: Record<string, unknown>;\n }>(ops.CANCEL_RELATIONSHIP, { id });\n return jsonResult(data.subCancelRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_cancel failed', { error: String(error) });\n return errorResult(\n `Failed to cancel relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_transition')),\n {\n title: 'Transition Relationship',\n description:\n 'Advance a relationship through its lifecycle with a validated status transition.',\n inputSchema: {\n id: z.string().describe('Relationship ID'),\n status: SubRelationshipStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subTransitionRelationship: Record<string, unknown>;\n }>(ops.TRANSITION_RELATIONSHIP, { id, status });\n return jsonResult(data.subTransitionRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot entitlement tools — what a relationship grants (seats, quotas,\n * feature access, support tiers, …).\n *\n * Surface (2): entitlements_{list,create}.\n * Backed by subListEntitlements / subCreateEntitlement.\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';\nimport { SubEntitlementTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerEntitlementTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entitlements_list')),\n {\n title: 'List Entitlements',\n description: 'List the entitlements granted by a relationship.',\n inputSchema: { relationshipId: z.string().describe('Relationship ID (required)') },\n },\n async ({ relationshipId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListEntitlements: Array<Record<string, unknown>>;\n }>(ops.LIST_ENTITLEMENTS, { relationshipId });\n return jsonResult(data.subListEntitlements);\n } catch (error) {\n ctx.logger.error('subscriberbot entitlements_list failed', { error: String(error) });\n return errorResult(\n `Failed to list entitlements: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entitlements_create')),\n {\n title: 'Create Entitlement',\n description: 'Add an entitlement to a relationship.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n name: z.string().min(1).describe('Entitlement name'),\n type: SubEntitlementTypeEnum.optional().describe(\n 'Entitlement type (default FEATURE_ACCESS)',\n ),\n description: z.string().optional().describe('Description'),\n quota: z.number().int().optional().describe('Quota count'),\n unit: z.string().optional().describe('Quota unit (e.g. \"seats\", \"GB\")'),\n },\n },\n async ({ relationshipId, name, type, description, quota, unit }) => {\n try {\n const input: Record<string, unknown> = { relationshipId, name };\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (quota !== undefined) input.quota = quota;\n if (unit !== undefined) input.unit = unit;\n\n const data = await ctx.gql.workspace.request<{\n subCreateEntitlement: Record<string, unknown>;\n }>(ops.CREATE_ENTITLEMENT, { input });\n return jsonResult(data.subCreateEntitlement);\n } catch (error) {\n ctx.logger.error('subscriberbot entitlements_create failed', { error: String(error) });\n return errorResult(\n `Failed to create entitlement: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot asset tools — documents/credentials attached to a relationship\n * (contracts, receipts, license keys, certificates, …). Blobs live in\n * wspace-files-svc; assets only reference a File by id.\n *\n * Surface (2): assets_{list,create}.\n * Backed by subListAssets / subCreateAsset.\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';\nimport { SubAssetTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerAssetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_list')),\n {\n title: 'List Assets',\n description: 'List the assets attached to a relationship.',\n inputSchema: { relationshipId: z.string().describe('Relationship ID (required)') },\n },\n async ({ relationshipId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListAssets: Array<Record<string, unknown>>;\n }>(ops.LIST_ASSETS, { relationshipId });\n return jsonResult(data.subListAssets);\n } catch (error) {\n ctx.logger.error('subscriberbot assets_list failed', { error: String(error) });\n return errorResult(\n `Failed to list assets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_create')),\n {\n title: 'Create Asset',\n description:\n 'Attach an asset to a relationship. `fileId` references a wspace-files-svc File; `secretRef` references a vault secret for credentials.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n name: z.string().min(1).describe('Asset name'),\n type: SubAssetTypeEnum.optional().describe('Asset type (default RECEIPT)'),\n fileId: z.string().optional().describe('wspace-files-svc File ID'),\n secretRef: z.string().optional().describe('Vault secret reference for credentials'),\n expiresAt: z.string().optional().describe('Expiry datetime (ISO 8601)'),\n },\n },\n async ({ relationshipId, name, type, fileId, secretRef, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { relationshipId, name };\n if (type !== undefined) input.type = type;\n if (fileId !== undefined) input.fileId = fileId;\n if (secretRef !== undefined) input.secretRef = secretRef;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n subCreateAsset: Record<string, unknown>;\n }>(ops.CREATE_ASSET, { input });\n return jsonResult(data.subCreateAsset);\n } catch (error) {\n ctx.logger.error('subscriberbot assets_create failed', { error: String(error) });\n return errorResult(\n `Failed to create asset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot renewal-event tools — the timeline of upcoming/past renewal,\n * trial-end, price-change and cancellation events.\n *\n * Surface (1): renewal_events_list.\n * Backed by subListRenewalEvents.\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';\nimport { z } from 'zod';\n\nexport function registerRenewalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'renewal_events_list')),\n {\n title: 'List Renewal Events',\n description:\n 'List renewal events, optionally scoped to a relationship and/or filtered to upcoming events only.',\n inputSchema: {\n relationshipId: z.string().optional().describe('Filter by relationship ID'),\n upcomingOnly: z\n .boolean()\n .optional()\n .describe('Only return events that have not yet occurred'),\n },\n },\n async ({ relationshipId, upcomingOnly }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListRenewalEvents: Array<Record<string, unknown>>;\n }>(ops.LIST_RENEWAL_EVENTS, { relationshipId, upcomingOnly });\n return jsonResult(data.subListRenewalEvents);\n } catch (error) {\n ctx.logger.error('subscriberbot renewals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list renewal events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot payment-instrument tools — the universal billing layer's\n * stored cards / bank accounts / wallets.\n *\n * Surface (3): payment_instruments_{list,create,remove}.\n * Backed by subListPaymentInstruments / subCreatePaymentInstrument /\n * subRemovePaymentInstrument.\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';\nimport { SubPaymentInstrumentTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPaymentInstrumentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_list')),\n {\n title: 'List Payment Instruments',\n description: 'List stored payment instruments, optionally filtered by owner.',\n inputSchema: { ownerId: z.string().optional().describe('Filter by owner user ID') },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPaymentInstruments: Array<Record<string, unknown>>;\n }>(ops.LIST_PAYMENT_INSTRUMENTS, { ownerId });\n return jsonResult(data.subListPaymentInstruments);\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list payment instruments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_create')),\n {\n title: 'Create Payment Instrument',\n description:\n 'Store a payment instrument. Never send raw card numbers — use `processorToken` from your PSP plus display-only fields (brand, last4, expiry).',\n inputSchema: {\n label: z.string().min(1).describe('Display label (e.g. \"Personal Visa\")'),\n type: SubPaymentInstrumentTypeEnum.optional().describe('Instrument type (default CARD)'),\n ownerId: z.string().optional().describe('Owner user ID'),\n brand: z.string().optional().describe('Card/wallet brand (e.g. \"Visa\")'),\n last4: z.string().optional().describe('Last 4 digits (display only)'),\n expiryMonth: z.number().int().optional().describe('Expiry month (1-12)'),\n expiryYear: z.number().int().optional().describe('Expiry year (4-digit)'),\n isDefault: z\n .boolean()\n .optional()\n .describe('Mark as the default instrument (default false)'),\n processorToken: z.string().optional().describe('Opaque PSP token (never a raw PAN)'),\n },\n },\n async ({\n label,\n type,\n ownerId,\n brand,\n last4,\n expiryMonth,\n expiryYear,\n isDefault,\n processorToken,\n }) => {\n try {\n const input: Record<string, unknown> = { label };\n if (type !== undefined) input.type = type;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (brand !== undefined) input.brand = brand;\n if (last4 !== undefined) input.last4 = last4;\n if (expiryMonth !== undefined) input.expiryMonth = expiryMonth;\n if (expiryYear !== undefined) input.expiryYear = expiryYear;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (processorToken !== undefined) input.processorToken = processorToken;\n\n const data = await ctx.gql.workspace.request<{\n subCreatePaymentInstrument: Record<string, unknown>;\n }>(ops.CREATE_PAYMENT_INSTRUMENT, { input });\n return jsonResult(data.subCreatePaymentInstrument);\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create payment instrument: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_remove')),\n {\n title: 'Remove Payment Instrument',\n description: 'Remove a stored payment instrument. Returns true on success.',\n inputSchema: { id: z.string().describe('Payment instrument ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ subRemovePaymentInstrument: boolean }>(\n ops.REMOVE_PAYMENT_INSTRUMENT,\n { id },\n );\n return jsonResult({ removed: data.subRemovePaymentInstrument, id });\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_remove failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to remove payment instrument: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot invoice tools — the universal billing layer's invoice ledger.\n *\n * Surface (3): invoices_{list,create,mark_paid}.\n * Backed by subListInvoices / subCreateInvoice / subMarkInvoicePaid.\n * `subListInvoices` returns a SubInvoiceConnection ({ items, pageInfo }).\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';\nimport { SubInvoiceStatusEnum, JsonValue } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerInvoiceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_list')),\n {\n title: 'List Invoices',\n description:\n 'List invoices with optional relationship/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n relationshipId: z.string().optional().describe('Filter by relationship ID'),\n status: SubInvoiceStatusEnum.optional().describe('Filter by invoice status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ relationshipId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListInvoices: unknown }>(\n ops.LIST_INVOICES,\n {\n relationshipId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListInvoices);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_list failed', { error: String(error) });\n return errorResult(\n `Failed to list invoices: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_create')),\n {\n title: 'Create Invoice',\n description:\n 'Create an invoice against a relationship. `lineItems` is arbitrary JSON; `fileId` references a wspace-files-svc File holding the PDF.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n number: z.string().optional().describe('Invoice number'),\n status: SubInvoiceStatusEnum.optional().describe('Invoice status (default ISSUED)'),\n currency: z.string().optional().describe('ISO currency code'),\n subtotal: z.number().optional().describe('Subtotal amount'),\n taxAmount: z.number().optional().describe('Tax amount'),\n total: z.number().optional().describe('Total amount'),\n issueDate: z.string().optional().describe('Issue datetime (ISO 8601)'),\n dueDate: z.string().optional().describe('Due datetime (ISO 8601)'),\n lineItems: JsonValue.optional().describe('Line items as JSON (object or array)'),\n paymentInstrumentId: z.string().optional().describe('Payment instrument ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the invoice PDF'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { relationshipId: args.relationshipId };\n const optional: Array<keyof typeof args> = [\n 'number',\n 'status',\n 'currency',\n 'subtotal',\n 'taxAmount',\n 'total',\n 'issueDate',\n 'dueDate',\n 'lineItems',\n 'paymentInstrumentId',\n 'fileId',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subCreateInvoice: Record<string, unknown>;\n }>(ops.CREATE_INVOICE, { input });\n return jsonResult(data.subCreateInvoice);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_create failed', { error: String(error) });\n return errorResult(\n `Failed to create invoice: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_mark_paid')),\n {\n title: 'Mark Invoice Paid',\n description: 'Mark an invoice as paid (sets status PAID and stamps paidAt).',\n inputSchema: { id: z.string().describe('Invoice ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subMarkInvoicePaid: Record<string, unknown>;\n }>(ops.MARK_INVOICE_PAID, { id });\n return jsonResult(data.subMarkInvoicePaid);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_mark_paid failed', { error: String(error) });\n return errorResult(\n `Failed to mark invoice paid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot communication-channel tools — the inbound/outbound channels\n * (email, SMS, Slack, webhook, …) feeding the universal inbox.\n *\n * Surface (3): channels_{list,create,verify}.\n * Backed by subListChannels / subCreateChannel / subVerifyChannel.\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';\nimport { SubChannelTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerChannelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_list')),\n {\n title: 'List Channels',\n description: 'List communication channels, optionally filtered by owner.',\n inputSchema: { ownerId: z.string().optional().describe('Filter by owner user ID') },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListChannels: Array<Record<string, unknown>>;\n }>(ops.LIST_CHANNELS, { ownerId });\n return jsonResult(data.subListChannels);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_list failed', { error: String(error) });\n return errorResult(\n `Failed to list channels: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_create')),\n {\n title: 'Create Channel',\n description:\n 'Register a communication channel. `address` is the endpoint (email address, phone number, webhook URL, …).',\n inputSchema: {\n address: z.string().min(1).describe('Channel endpoint (email/phone/URL)'),\n type: SubChannelTypeEnum.optional().describe('Channel type (default EMAIL)'),\n label: z.string().optional().describe('Display label'),\n ownerId: z.string().optional().describe('Owner user ID'),\n ingestEnabled: z\n .boolean()\n .optional()\n .describe('Whether inbound ingestion is enabled (default true)'),\n },\n },\n async ({ address, type, label, ownerId, ingestEnabled }) => {\n try {\n const input: Record<string, unknown> = { address };\n if (type !== undefined) input.type = type;\n if (label !== undefined) input.label = label;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (ingestEnabled !== undefined) input.ingestEnabled = ingestEnabled;\n\n const data = await ctx.gql.workspace.request<{\n subCreateChannel: Record<string, unknown>;\n }>(ops.CREATE_CHANNEL, { input });\n return jsonResult(data.subCreateChannel);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_create failed', { error: String(error) });\n return errorResult(\n `Failed to create channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_verify')),\n {\n title: 'Verify Channel',\n description:\n 'Mark a communication channel as verified (sets status VERIFIED, stamps verifiedAt).',\n inputSchema: { id: z.string().describe('Channel ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subVerifyChannel: Record<string, unknown>;\n }>(ops.VERIFY_CHANNEL, { id });\n return jsonResult(data.subVerifyChannel);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot universal-inbox tools — every merged subscription\n * communication, classified and linked to its relationship.\n *\n * Surface (3): inbox_{list,ingest,mark_read}.\n * Backed by subListInboxMessages / subIngestMessage / subMarkMessageRead.\n * `subListInboxMessages` returns a SubInboxMessageConnection ({ items, pageInfo }).\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';\nimport { SubMessageCategoryEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerInboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_list')),\n {\n title: 'List Inbox Messages',\n description:\n 'The Universal Inbox — list merged subscription communications with optional category/channel/relationship/unread filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: SubMessageCategoryEnum.optional().describe('Filter by message category'),\n channelId: z.string().optional().describe('Filter by source channel ID'),\n relationshipId: z.string().optional().describe('Filter by linked relationship ID'),\n unreadOnly: z.boolean().optional().describe('Only return unread messages'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ category, channelId, relationshipId, unreadOnly, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListInboxMessages: unknown }>(\n ops.LIST_INBOX_MESSAGES,\n {\n category,\n channelId,\n relationshipId,\n unreadOnly,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListInboxMessages);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_list failed', { error: String(error) });\n return errorResult(\n `Failed to list inbox messages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_ingest')),\n {\n title: 'Ingest Inbox Message',\n description:\n 'Ingest a new communication into the universal inbox from a channel. `receivedAt` and `channelId` are required.',\n inputSchema: {\n channelId: z.string().min(1).describe('Source channel ID'),\n receivedAt: z.string().describe('When the message was received (ISO 8601)'),\n category: SubMessageCategoryEnum.optional().describe('Message category (default OTHER)'),\n categoryConfidence: z.number().int().optional().describe('Classifier confidence (0-100)'),\n actionRequired: z\n .boolean()\n .optional()\n .describe('Whether the message requires action (default false)'),\n subject: z.string().optional().describe('Message subject'),\n preview: z.string().optional().describe('Short preview/snippet'),\n externalId: z.string().optional().describe('External message ID (for de-dup)'),\n relationshipId: z.string().optional().describe('Linked relationship ID'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = {\n channelId: args.channelId,\n receivedAt: args.receivedAt,\n };\n const optional: Array<keyof typeof args> = [\n 'category',\n 'categoryConfidence',\n 'actionRequired',\n 'subject',\n 'preview',\n 'externalId',\n 'relationshipId',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subIngestMessage: Record<string, unknown>;\n }>(ops.INGEST_MESSAGE, { input });\n return jsonResult(data.subIngestMessage);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_ingest failed', { error: String(error) });\n return errorResult(\n `Failed to ingest message: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_mark_read')),\n {\n title: 'Mark Message Read',\n description: 'Mark a universal-inbox message as read.',\n inputSchema: { id: z.string().describe('Inbox message ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subMarkMessageRead: Record<string, unknown>;\n }>(ops.MARK_MESSAGE_READ, { id });\n return jsonResult(data.subMarkMessageRead);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_mark_read failed', { error: String(error) });\n return errorResult(\n `Failed to mark message read: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot AI-agent tools — the automation layer's specialised agents\n * (discovery, renewal, cost, negotiation, …).\n *\n * Surface (4): agents_{get,list,create,set_status}.\n * Backed by subAgent / subListAgents / subCreateAgent / subSetAgentStatus.\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';\nimport { SubAgentKindEnum, SubAgentStatusEnum, JsonObject } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerAgentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_get')),\n {\n title: 'Get Agent',\n description: 'Fetch a single AI agent by ID, including its policies.',\n inputSchema: { id: z.string().describe('Agent ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subAgent: Record<string, unknown> | null;\n }>(ops.GET_AGENT, { id });\n if (!data.subAgent) return errorResult(`Agent ${id} not found`);\n return jsonResult(data.subAgent);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_get failed', { error: String(error) });\n return errorResult(\n `Failed to get agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_list')),\n {\n title: 'List Agents',\n description: 'List AI agents with optional kind/owner/status filters.',\n inputSchema: {\n kind: SubAgentKindEnum.optional().describe('Filter by agent kind'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n status: SubAgentStatusEnum.optional().describe('Filter by operating posture'),\n },\n },\n async ({ kind, ownerId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListAgents: Array<Record<string, unknown>>;\n }>(ops.LIST_AGENTS, { kind, ownerId, status });\n return jsonResult(data.subListAgents);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_list failed', { error: String(error) });\n return errorResult(\n `Failed to list agents: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_create')),\n {\n title: 'Create Agent',\n description:\n 'Create an AI agent. Defaults to kind=DISCOVERY and status=SUGGEST_ONLY (no autonomous action until promoted).',\n inputSchema: {\n name: z.string().min(1).describe('Agent name'),\n kind: SubAgentKindEnum.optional().describe('Agent kind (default DISCOVERY)'),\n status: SubAgentStatusEnum.optional().describe('Operating posture (default SUGGEST_ONLY)'),\n description: z.string().optional().describe('Agent description'),\n ownerId: z.string().optional().describe('Owner user ID'),\n config: JsonObject.optional().describe('Agent configuration as JSON'),\n },\n },\n async ({ name, kind, status, description, ownerId, config }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (kind !== undefined) input.kind = kind;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (config !== undefined) input.config = config;\n\n const data = await ctx.gql.workspace.request<{\n subCreateAgent: Record<string, unknown>;\n }>(ops.CREATE_AGENT, { input });\n return jsonResult(data.subCreateAgent);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_create failed', { error: String(error) });\n return errorResult(\n `Failed to create agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_set_status')),\n {\n title: 'Set Agent Status',\n description: \"Change an agent's operating posture (DISABLED / SUGGEST_ONLY / AUTONOMOUS).\",\n inputSchema: {\n id: z.string().describe('Agent ID'),\n status: SubAgentStatusEnum.describe('Target operating posture'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subSetAgentStatus: Record<string, unknown>;\n }>(ops.SET_AGENT_STATUS, { id, status });\n return jsonResult(data.subSetAgentStatus);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_set_status failed', { error: String(error) });\n return errorResult(\n `Failed to set agent status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot policy tools — the autonomous rules an agent evaluates\n * (condition → action).\n *\n * Surface (2): policies_{list,create}.\n * Backed by subListPolicies / subCreatePolicy.\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';\nimport { SubPolicyActionEnum, JsonObject } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPolicyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'policies_list')),\n {\n title: 'List Policies',\n description: 'List autonomous policies, optionally filtered by agent.',\n inputSchema: { agentId: z.string().optional().describe('Filter by agent ID') },\n },\n async ({ agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPolicies: Array<Record<string, unknown>>;\n }>(ops.LIST_POLICIES, { agentId });\n return jsonResult(data.subListPolicies);\n } catch (error) {\n ctx.logger.error('subscriberbot policies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list policies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'policies_create')),\n {\n title: 'Create Policy',\n description:\n 'Create an autonomous policy for an agent. `condition` is arbitrary JSON evaluated to decide whether `action` fires.',\n inputSchema: {\n agentId: z.string().min(1).describe('Agent ID this policy belongs to'),\n name: z.string().min(1).describe('Policy name'),\n action: SubPolicyActionEnum.optional().describe('Action when triggered (default ALERT)'),\n description: z.string().optional().describe('Policy description'),\n condition: JsonObject.optional().describe('Trigger condition as JSON'),\n isEnabled: z.boolean().optional().describe('Whether the policy is enabled (default true)'),\n },\n },\n async ({ agentId, name, action, description, condition, isEnabled }) => {\n try {\n const input: Record<string, unknown> = { agentId, name };\n if (action !== undefined) input.action = action;\n if (description !== undefined) input.description = description;\n if (condition !== undefined) input.condition = condition;\n if (isEnabled !== undefined) input.isEnabled = isEnabled;\n\n const data = await ctx.gql.workspace.request<{\n subCreatePolicy: Record<string, unknown>;\n }>(ops.CREATE_POLICY, { input });\n return jsonResult(data.subCreatePolicy);\n } catch (error) {\n ctx.logger.error('subscriberbot policies_create failed', { error: String(error) });\n return errorResult(\n `Failed to create policy: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot workflow tools — event-triggered automation workflows.\n *\n * Surface (3): workflows_{list,create,activate}.\n * Backed by subListWorkflows / subCreateWorkflow / subActivateWorkflow.\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';\nimport { SubWorkflowStatusEnum, JsonValue } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerWorkflowTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list')),\n {\n title: 'List Workflows',\n description: 'List automation workflows, optionally filtered by status.',\n inputSchema: {\n status: SubWorkflowStatusEnum.optional().describe('Filter by workflow status'),\n },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListWorkflows: Array<Record<string, unknown>>;\n }>(ops.LIST_WORKFLOWS, { status });\n return jsonResult(data.subListWorkflows);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_list failed', { error: String(error) });\n return errorResult(\n `Failed to list workflows: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_create')),\n {\n title: 'Create Workflow',\n description:\n 'Create an event-triggered automation workflow. `triggerEvent` names the event; `steps` is arbitrary JSON describing the step graph.',\n inputSchema: {\n name: z.string().min(1).describe('Workflow name'),\n triggerEvent: z.string().min(1).describe('Event name that triggers the workflow'),\n description: z.string().optional().describe('Workflow description'),\n steps: JsonValue.optional().describe('Step definition as JSON (object or array)'),\n },\n },\n async ({ name, triggerEvent, description, steps }) => {\n try {\n const input: Record<string, unknown> = { name, triggerEvent };\n if (description !== undefined) input.description = description;\n if (steps !== undefined) input.steps = steps;\n\n const data = await ctx.gql.workspace.request<{\n subCreateWorkflow: Record<string, unknown>;\n }>(ops.CREATE_WORKFLOW, { input });\n return jsonResult(data.subCreateWorkflow);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_create failed', { error: String(error) });\n return errorResult(\n `Failed to create workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_activate')),\n {\n title: 'Activate Workflow',\n description: 'Activate a workflow (sets status ACTIVE).',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subActivateWorkflow: Record<string, unknown>;\n }>(ops.ACTIVATE_WORKFLOW, { id });\n return jsonResult(data.subActivateWorkflow);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot health tool.\n *\n * Surface (1): health.\n * `health` maps to the @public subHealth query (no auth required) — a\n * liveness/identity probe for the Subscriber Bot subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Subscriber Bot Health Check',\n description:\n 'Public liveness/identity probe for the Subscriber Bot subgraph (subHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ subHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.subHealth });\n } catch (error) {\n ctx.logger.error('subscriberbot health failed', { error: String(error) });\n return errorResult(\n `Subscriber Bot health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_PROVIDERS, LIST_RELATIONSHIPS, LIST_INBOX_MESSAGES } from './operations.js';\n\n/**\n * Read-only Subscriber Bot 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 registerSubscriberbotResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const providersUri = track(mcpResourceUri(ctx.productName, 'providers'));\n const relationshipsUri = track(mcpResourceUri(ctx.productName, 'relationships'));\n const inboxUri = track(mcpResourceUri(ctx.productName, 'inbox'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'subscriberbot-schema',\n schemaUri,\n {\n title: 'Subscriber Bot Domain Schema',\n description:\n 'Overview of the Subscriber Bot domain — the Universal Digital Relationship OS: 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 = `# Subscriber Bot Domain (Overview)\n\nThe Universal Digital Relationship Operating System — system of record for every\nrecurring digital relationship.\n\n## Entities\n- SubProvider — a provider in the global discovery registry (has plans)\n- SubPlan — a provider's pricing plan\n- SubRelationship — the core object: a subscription / membership / license / contract\n- SubEntitlement — what a relationship grants (seats, quotas, feature access, …)\n- SubAsset — documents/credentials attached to a relationship (refs wspace-files File)\n- SubRenewalEvent — renewal / trial-end / price-change / cancellation timeline events\n- SubPaymentInstrument — stored card / bank / wallet (universal billing layer)\n- SubInvoice — invoice ledger entry (refs wspace-files File for the PDF)\n- SubCommunicationChannel — inbound/outbound channel feeding the inbox\n- SubInboxMessage — a merged subscription communication (the Universal Inbox)\n- SubAiAgent — an automation-layer specialised agent (has policies)\n- SubPolicy — an autonomous rule (condition → action) evaluated by an agent\n- SubWorkflow — an event-triggered automation workflow\n\n## Key enums\n- SubRelationshipKind: SUBSCRIPTION, MEMBERSHIP, LICENSE, CONTRACT, TRIAL, NEWSLETTER, ENROLLMENT, RECURRING_PAYMENT\n- SubRelationshipStatus: ACTIVE, TRIAL, PAST_DUE, PAUSED, LAPSED, EXPIRED, CANCELLED\n- SubBillingInterval: DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, LIFETIME, USAGE_BASED, FREE\n- SubProviderCategory: SAAS, STREAMING, TELECOM, UTILITY, FINANCIAL, INSURANCE, NEWSLETTER, MEMBERSHIP, AI_SERVICE, … (16)\n- SubInvoiceStatus: DRAFT, ISSUED, PAID, OVERDUE, FAILED, REFUNDED, CANCELLED\n- SubMessageCategory: BILLING, RENEWAL, REQUIRED_ACTION, SECURITY_ALERT, PRODUCT_UPDATE, MARKETING, OTHER\n- SubAgentKind: DISCOVERY, RENEWAL, COST, NEGOTIATION, MIGRATION, COMPLIANCE, CONCIERGE, VENDOR, NEWSLETTER\n- SubAgentStatus: DISABLED, SUGGEST_ONLY, AUTONOMOUS\n\n## Tool groups\nproviders, plans, relationships, entitlements, assets, renewal_events,\npayment_instruments, invoices, channels, inbox, agents, policies, workflows, health.\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>://providers — provider registry\n server.registerResource(\n 'subscriberbot-providers',\n providersUri,\n {\n title: 'Subscriber Bot Provider Registry',\n description: 'The first 50 providers in the bound workspace registry.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${providersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListProviders: unknown }>(\n LIST_PROVIDERS,\n {\n pagination: { limit: 50, offset: 0 },\n },\n );\n return {\n contents: [\n {\n uri: providersUri,\n text: JSON.stringify(data.subListProviders, 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 // <product>://relationships — active relationships\n server.registerResource(\n 'subscriberbot-relationships',\n relationshipsUri,\n {\n title: 'Subscriber Bot Relationships',\n description: 'The first 50 recurring relationships in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${relationshipsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListRelationships: unknown }>(\n LIST_RELATIONSHIPS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: relationshipsUri,\n text: JSON.stringify(data.subListRelationships, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: relationshipsUri,\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>://inbox — the universal inbox\n server.registerResource(\n 'subscriberbot-inbox',\n inboxUri,\n {\n title: 'Subscriber Bot Universal Inbox',\n description: 'The first 50 merged subscription communications in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${inboxUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListInboxMessages: unknown }>(\n LIST_INBOX_MESSAGES,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: inboxUri,\n text: JSON.stringify(data.subListInboxMessages, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: inboxUri,\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 * Subscriber Bot MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerSubscriberbotPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'relationship-onboarding'));\n const triageName = track(mcpPromptName(p, 'inbox-triage'));\n\n // <product>-relationship-onboarding — stand up a provider + relationship\n server.registerPrompt(\n onboardingName,\n {\n title: 'Relationship Onboarding',\n description:\n 'Guide for onboarding a new recurring relationship end to end: find/create the provider and plan, create the relationship, and capture its entitlements, assets, and renewal cadence.',\n argsSchema: {\n providerName: z.string().optional().describe('Provider/vendor name'),\n label: z.string().optional().describe('Label for the relationship'),\n },\n },\n ({ providerName, label }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { providerName, label });\n const providerNote = providerName\n ? `Search the registry for \"${providerName}\" with ${p}_providers_list; create it with ${p}_providers_create if missing.`\n : `Ask the user for the provider name, then search with ${p}_providers_list (create with ${p}_providers_create if missing).`;\n const labelNote = label\n ? `Use the label \"${label}\".`\n : 'Ask the user for a label for the relationship.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new recurring relationship in Subscriber Bot.\n\n1. **Provider**: ${providerNote}\n2. **Plan**: Use ${p}_plans_list for the provider; create one with ${p}_plans_create (amount, currency, interval) if needed.\n3. **Create Relationship**: Use ${p}_relationships_create. ${labelNote} Set kind (SUBSCRIPTION / MEMBERSHIP / LICENSE / CONTRACT), providerId, planId, amount/currency/interval, autoRenew, and renewsAt.\n4. **Entitlements**: Use ${p}_entitlements_create for each seat/quota/feature the relationship grants.\n5. **Assets**: Use ${p}_assets_create to attach contracts/receipts/license keys (reference a wspace-files File via fileId).\n6. **Confirm**: Re-read with ${p}_relationships_get and summarise the renewal cadence.\n\nShow results at each step and confirm before finishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-inbox-triage — daily inbox + renewal operations\n server.registerPrompt(\n triageName,\n {\n title: 'Inbox & Renewal Triage',\n description:\n 'Daily triage workflow: work the universal inbox, mark actioned messages read, handle upcoming renewals, settle invoices, and tune automation agents/policies.',\n argsSchema: {\n relationshipId: z.string().optional().describe('Relationship ID to focus on'),\n },\n },\n ({ relationshipId }) => {\n ctx.logger.debug(`Prompt ${triageName} called`, { relationshipId });\n const scopeNote = relationshipId\n ? `Focus on relationship \"${relationshipId}\".`\n : `Work across all relationships (use ${p}_relationships_list to pick).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Subscriber Bot triage. ${scopeNote}\n\n1. **Required actions**: Use ${p}_inbox_list with category=REQUIRED_ACTION (and unreadOnly=true) to find messages needing attention; mark handled ones with ${p}_inbox_mark_read.\n2. **Renewals**: Use ${p}_renewal_events_list with upcomingOnly=true to find imminent renewals/trial-ends; for each decide renew vs cancel (${p}_relationships_transition / ${p}_relationships_cancel).\n3. **Billing**: Use ${p}_invoices_list with status=ISSUED or OVERDUE; settle paid ones with ${p}_invoices_mark_paid.\n4. **Security**: Use ${p}_inbox_list with category=SECURITY_ALERT and escalate.\n5. **Automation**: Use ${p}_agents_list and ${p}_policies_list to review autonomous coverage; promote a trusted agent with ${p}_agents_set_status (SUGGEST_ONLY → AUTONOMOUS) where appropriate.\n\nSummarise what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Subscriber Bot module — domain module for the future-products ecosystem\n * program.\n *\n * Covers all 13 @key entities of wspace-subscriberbot-svc grouped into\n * per-entity sub-APIs across the product's four domains:\n * - registry: providers, plans\n * - relationships: relationships, entitlements, assets, renewal events\n * - payments: payment instruments, invoices, channels, the universal inbox\n * - automation: AI agents, policies, workflows\n * plus the @public subHealth probe. Mirrors the kadaikodi module's structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/subscriberbot/wspace-subscriberbot-svc/\n * (Hive service name `subscriberbot`). All operations run against the WORKSPACE\n * gateway; the @public subHealth 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 { registerPlanTools } from './tools/plans.js';\nimport { registerRelationshipTools } from './tools/relationships.js';\nimport { registerEntitlementTools } from './tools/entitlements.js';\nimport { registerAssetTools } from './tools/assets.js';\nimport { registerRenewalTools } from './tools/renewals.js';\nimport { registerPaymentInstrumentTools } from './tools/payment-instruments.js';\nimport { registerInvoiceTools } from './tools/invoices.js';\nimport { registerChannelTools } from './tools/channels.js';\nimport { registerInboxTools } from './tools/inbox.js';\nimport { registerAgentTools } from './tools/agents.js';\nimport { registerPolicyTools } from './tools/policies.js';\nimport { registerWorkflowTools } from './tools/workflows.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerSubscriberbotResources } from './resources.js';\nimport { registerSubscriberbotPrompts } from './prompts.js';\n\nconst subscriberbotModule: McpModule = {\n id: 'subscriberbot',\n version: '0.0.1',\n displayName: 'Subscriber Bot',\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 registerPlanTools(server, ctx, trackTool);\n registerRelationshipTools(server, ctx, trackTool);\n registerEntitlementTools(server, ctx, trackTool);\n registerAssetTools(server, ctx, trackTool);\n registerRenewalTools(server, ctx, trackTool);\n registerPaymentInstrumentTools(server, ctx, trackTool);\n registerInvoiceTools(server, ctx, trackTool);\n registerChannelTools(server, ctx, trackTool);\n registerInboxTools(server, ctx, trackTool);\n registerAgentTools(server, ctx, trackTool);\n registerPolicyTools(server, ctx, trackTool);\n registerWorkflowTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerSubscriberbotResources(server, ctx, trackResource);\n registerSubscriberbotPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default subscriberbotModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/subscriberbot/operations.ts","../../../src/modules/subscriberbot/tools/shared.ts","../../../src/modules/subscriberbot/tools/providers.ts","../../../src/modules/subscriberbot/tools/plans.ts","../../../src/modules/subscriberbot/tools/relationships.ts","../../../src/modules/subscriberbot/tools/entitlements.ts","../../../src/modules/subscriberbot/tools/assets.ts","../../../src/modules/subscriberbot/tools/renewals.ts","../../../src/modules/subscriberbot/tools/payment-instruments.ts","../../../src/modules/subscriberbot/tools/invoices.ts","../../../src/modules/subscriberbot/tools/channels.ts","../../../src/modules/subscriberbot/tools/inbox.ts","../../../src/modules/subscriberbot/tools/agents.ts","../../../src/modules/subscriberbot/tools/policies.ts","../../../src/modules/subscriberbot/tools/workflows.ts","../../../src/modules/subscriberbot/tools/health.ts","../../../src/modules/subscriberbot/resources.ts","../../../src/modules/subscriberbot/prompts.ts","../../../src/modules/subscriberbot/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 } } | 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 Subscriber Bot MCP module.\n *\n * Subscriber Bot is the Universal Digital Relationship Operating System — the\n * federated system of record for every recurring digital relationship\n * (subscriptions / memberships / licenses / contracts), the global provider\n * registry, plans, entitlements, assets, the universal billing layer\n * (payment instruments + invoices), the universal inbox (channels + messages),\n * and the AI automation layer (agents / policies / workflows).\n *\n * Backend subgraph: ~/products/subscriberbot/wspace-subscriberbot-svc/\n * (Hive service name `subscriberbot`).\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 — Subscriber Bot inputs do NOT carry a workspaceId.\n *\n * EVERY root field is `sub`-prefixed and every type/enum/input is `Sub`-prefixed\n * (the product's GraphQL naming contract); operations call them by their REAL\n * names. Uses template-string interpolation (not gql tagged fragments) to match\n * the canonical kadaikodi/vibecontrols modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PROVIDER_FIELDS = `\n id name slug description category status industry region language\n logoFileId websiteUrl tags churnRiskScore vendorHealthScore\n workspaceId createdAt updatedAt\n`;\n\nexport const PLAN_FIELDS = `\n id name description amount currency interval features isActive\n providerId workspaceId createdAt updatedAt\n`;\n\nexport const ENTITLEMENT_FIELDS = `\n id name description type quota used unit isActive\n relationshipId workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id name type secretRef expiresAt relationshipId workspaceId\n createdAt updatedAt file { id }\n`;\n\nexport const RENEWAL_EVENT_FIELDS = `\n id eventType detail amount currency occursAt notified\n relationshipId workspaceId createdAt updatedAt\n`;\n\nexport const RELATIONSHIP_FIELDS = `\n id label kind status amount currency interval autoRenew discoverySource\n healthScore notes tags providerId planId ownerId startedAt renewsAt\n trialEndsAt cancelledAt workspaceId createdAt updatedAt\n`;\n\nexport const PAYMENT_INSTRUMENT_FIELDS = `\n id label type status brand last4 expiryMonth expiryYear isDefault\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const INVOICE_FIELDS = `\n id number status currency subtotal taxAmount total issueDate dueDate\n paidAt lineItems paymentInstrumentId relationshipId workspaceId\n createdAt updatedAt file { id }\n`;\n\nexport const CHANNEL_FIELDS = `\n id type status address label ingestEnabled verifiedAt\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const INBOX_MESSAGE_FIELDS = `\n id subject preview category categoryConfidence actionRequired isRead\n externalId receivedAt channelId relationshipId workspaceId\n createdAt updatedAt\n`;\n\nexport const AGENT_FIELDS = `\n id name description kind status config lastRunAt\n ownerId workspaceId createdAt updatedAt\n`;\n\nexport const POLICY_FIELDS = `\n id name description action condition isEnabled triggerCount\n lastTriggeredAt agentId workspaceId createdAt updatedAt\n`;\n\nexport const WORKFLOW_FIELDS = `\n id name description status triggerEvent steps runCount lastRunAt\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Providers (global registry)\n// ---------------------------------------------------------------------------\n\nexport const GET_PROVIDER = `\n query SubscriberbotGetProvider($id: ID!) {\n subProvider(id: $id) {\n ${PROVIDER_FIELDS}\n plans { ${PLAN_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROVIDERS = `\n query SubscriberbotListProviders(\n $category: SubProviderCategory\n $status: SubProviderStatus\n $search: String\n $pagination: PaginationInput\n ) {\n subListProviders(\n category: $category\n status: $status\n search: $search\n pagination: $pagination\n ) {\n items { ${PROVIDER_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PROVIDER = `\n mutation SubscriberbotCreateProvider($input: SubCreateProviderInput!) {\n subCreateProvider(input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROVIDER = `\n mutation SubscriberbotUpdateProvider($id: ID!, $input: SubUpdateProviderInput!) {\n subUpdateProvider(id: $id, input: $input) {\n ${PROVIDER_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PROVIDER = `\n mutation SubscriberbotArchiveProvider($id: ID!) {\n subArchiveProvider(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Plans\n// ---------------------------------------------------------------------------\n\nexport const LIST_PLANS = `\n query SubscriberbotListPlans($providerId: ID) {\n subListPlans(providerId: $providerId) {\n ${PLAN_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PLAN = `\n mutation SubscriberbotCreatePlan($input: SubCreatePlanInput!) {\n subCreatePlan(input: $input) {\n ${PLAN_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Relationships (the core domain)\n// ---------------------------------------------------------------------------\n\nexport const GET_RELATIONSHIP = `\n query SubscriberbotGetRelationship($id: ID!) {\n subRelationship(id: $id) {\n ${RELATIONSHIP_FIELDS}\n provider { id name slug category status }\n plan { id name amount currency interval }\n entitlements { ${ENTITLEMENT_FIELDS} }\n assets { ${ASSET_FIELDS} }\n renewalEvents { ${RENEWAL_EVENT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RELATIONSHIPS = `\n query SubscriberbotListRelationships(\n $kind: SubRelationshipKind\n $status: SubRelationshipStatus\n $ownerId: ID\n $providerId: ID\n $pagination: PaginationInput\n ) {\n subListRelationships(\n kind: $kind\n status: $status\n ownerId: $ownerId\n providerId: $providerId\n pagination: $pagination\n ) {\n items { ${RELATIONSHIP_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_RELATIONSHIP = `\n mutation SubscriberbotCreateRelationship($input: SubCreateRelationshipInput!) {\n subCreateRelationship(input: $input) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_RELATIONSHIP = `\n mutation SubscriberbotUpdateRelationship($id: ID!, $input: SubUpdateRelationshipInput!) {\n subUpdateRelationship(id: $id, input: $input) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const CANCEL_RELATIONSHIP = `\n mutation SubscriberbotCancelRelationship($id: ID!) {\n subCancelRelationship(id: $id) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_RELATIONSHIP = `\n mutation SubscriberbotTransitionRelationship($id: ID!, $status: SubRelationshipStatus!) {\n subTransitionRelationship(id: $id, status: $status) {\n ${RELATIONSHIP_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entitlements\n// ---------------------------------------------------------------------------\n\nexport const LIST_ENTITLEMENTS = `\n query SubscriberbotListEntitlements($relationshipId: ID!) {\n subListEntitlements(relationshipId: $relationshipId) {\n ${ENTITLEMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ENTITLEMENT = `\n mutation SubscriberbotCreateEntitlement($input: SubCreateEntitlementInput!) {\n subCreateEntitlement(input: $input) {\n ${ENTITLEMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Assets\n// ---------------------------------------------------------------------------\n\nexport const LIST_ASSETS = `\n query SubscriberbotListAssets($relationshipId: ID!) {\n subListAssets(relationshipId: $relationshipId) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ASSET = `\n mutation SubscriberbotCreateAsset($input: SubCreateAssetInput!) {\n subCreateAsset(input: $input) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Renewal events\n// ---------------------------------------------------------------------------\n\nexport const LIST_RENEWAL_EVENTS = `\n query SubscriberbotListRenewalEvents($relationshipId: ID, $upcomingOnly: Boolean) {\n subListRenewalEvents(relationshipId: $relationshipId, upcomingOnly: $upcomingOnly) {\n ${RENEWAL_EVENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Payment instruments (universal billing layer)\n// ---------------------------------------------------------------------------\n\nexport const LIST_PAYMENT_INSTRUMENTS = `\n query SubscriberbotListPaymentInstruments($ownerId: ID) {\n subListPaymentInstruments(ownerId: $ownerId) {\n ${PAYMENT_INSTRUMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PAYMENT_INSTRUMENT = `\n mutation SubscriberbotCreatePaymentInstrument($input: SubCreatePaymentInstrumentInput!) {\n subCreatePaymentInstrument(input: $input) {\n ${PAYMENT_INSTRUMENT_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_PAYMENT_INSTRUMENT = `\n mutation SubscriberbotRemovePaymentInstrument($id: ID!) {\n subRemovePaymentInstrument(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Invoices\n// ---------------------------------------------------------------------------\n\nexport const LIST_INVOICES = `\n query SubscriberbotListInvoices(\n $relationshipId: ID\n $status: SubInvoiceStatus\n $pagination: PaginationInput\n ) {\n subListInvoices(relationshipId: $relationshipId, status: $status, pagination: $pagination) {\n items { ${INVOICE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_INVOICE = `\n mutation SubscriberbotCreateInvoice($input: SubCreateInvoiceInput!) {\n subCreateInvoice(input: $input) {\n ${INVOICE_FIELDS}\n }\n }\n`;\n\nexport const MARK_INVOICE_PAID = `\n mutation SubscriberbotMarkInvoicePaid($id: ID!) {\n subMarkInvoicePaid(id: $id) {\n ${INVOICE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communication channels\n// ---------------------------------------------------------------------------\n\nexport const LIST_CHANNELS = `\n query SubscriberbotListChannels($ownerId: ID) {\n subListChannels(ownerId: $ownerId) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\nexport const CREATE_CHANNEL = `\n mutation SubscriberbotCreateChannel($input: SubCreateChannelInput!) {\n subCreateChannel(input: $input) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\nexport const VERIFY_CHANNEL = `\n mutation SubscriberbotVerifyChannel($id: ID!) {\n subVerifyChannel(id: $id) {\n ${CHANNEL_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Universal inbox (messages)\n// ---------------------------------------------------------------------------\n\nexport const LIST_INBOX_MESSAGES = `\n query SubscriberbotListInboxMessages(\n $category: SubMessageCategory\n $channelId: ID\n $relationshipId: ID\n $unreadOnly: Boolean\n $pagination: PaginationInput\n ) {\n subListInboxMessages(\n category: $category\n channelId: $channelId\n relationshipId: $relationshipId\n unreadOnly: $unreadOnly\n pagination: $pagination\n ) {\n items { ${INBOX_MESSAGE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const INGEST_MESSAGE = `\n mutation SubscriberbotIngestMessage($input: SubIngestMessageInput!) {\n subIngestMessage(input: $input) {\n ${INBOX_MESSAGE_FIELDS}\n }\n }\n`;\n\nexport const MARK_MESSAGE_READ = `\n mutation SubscriberbotMarkMessageRead($id: ID!) {\n subMarkMessageRead(id: $id) {\n ${INBOX_MESSAGE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// AI agents (automation layer)\n// ---------------------------------------------------------------------------\n\nexport const GET_AGENT = `\n query SubscriberbotGetAgent($id: ID!) {\n subAgent(id: $id) {\n ${AGENT_FIELDS}\n policies { ${POLICY_FIELDS} }\n }\n }\n`;\n\nexport const LIST_AGENTS = `\n query SubscriberbotListAgents($kind: SubAgentKind, $ownerId: ID, $status: SubAgentStatus) {\n subListAgents(kind: $kind, ownerId: $ownerId, status: $status) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENT = `\n mutation SubscriberbotCreateAgent($input: SubCreateAgentInput!) {\n subCreateAgent(input: $input) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\nexport const SET_AGENT_STATUS = `\n mutation SubscriberbotSetAgentStatus($id: ID!, $status: SubAgentStatus!) {\n subSetAgentStatus(id: $id, status: $status) {\n ${AGENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Policies (autonomous rules)\n// ---------------------------------------------------------------------------\n\nexport const LIST_POLICIES = `\n query SubscriberbotListPolicies($agentId: ID) {\n subListPolicies(agentId: $agentId) {\n ${POLICY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_POLICY = `\n mutation SubscriberbotCreatePolicy($input: SubCreatePolicyInput!) {\n subCreatePolicy(input: $input) {\n ${POLICY_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Workflows\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORKFLOWS = `\n query SubscriberbotListWorkflows($status: SubWorkflowStatus) {\n subListWorkflows(status: $status) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\nexport const CREATE_WORKFLOW = `\n mutation SubscriberbotCreateWorkflow($input: SubCreateWorkflowInput!) {\n subCreateWorkflow(input: $input) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\nexport const ACTIVATE_WORKFLOW = `\n mutation SubscriberbotActivateWorkflow($id: ID!) {\n subActivateWorkflow(id: $id) {\n ${WORKFLOW_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query SubscriberbotHealth {\n subHealth\n }\n`;\n","/**\n * Shared zod schemas for the Subscriber Bot tool surface.\n *\n * Every backend enum (the `Sub*` enums of wspace-subscriberbot-svc) is mirrored\n * as a tight zod enum so Claude Desktop grounds tool calls against the exact\n * allowed values. JSON scalar inputs (agent `config`, policy `condition`,\n * invoice `lineItems`, workflow `steps`) are modelled as permissive object (or\n * object-or-array) records — the backend accepts arbitrary JSON, but a record\n * shape gives the LLM a typed hint.\n *\n * Backend: ~/products/subscriberbot/wspace-subscriberbot-svc/.hive-schema.graphql\n */\n\nimport { z } from 'zod';\n\nexport const SubAgentKindEnum = z\n .enum([\n 'COMPLIANCE',\n 'CONCIERGE',\n 'COST',\n 'DISCOVERY',\n 'MIGRATION',\n 'NEGOTIATION',\n 'NEWSLETTER',\n 'RENEWAL',\n 'VENDOR',\n ])\n .describe('The specialised role of an AI agent');\n\nexport const SubAgentStatusEnum = z\n .enum(['AUTONOMOUS', 'DISABLED', 'SUGGEST_ONLY'])\n .describe(\"An agent's operating posture\");\n\nexport const SubAssetTypeEnum = z\n .enum([\n 'CERTIFICATE',\n 'CONTRACT',\n 'CREDENTIAL',\n 'DOMAIN',\n 'INVOICE',\n 'LICENSE_KEY',\n 'RECEIPT',\n 'WARRANTY',\n ])\n .describe('The kind of asset attached to a relationship');\n\nexport const SubBillingIntervalEnum = z\n .enum(['DAILY', 'FREE', 'LIFETIME', 'MONTHLY', 'QUARTERLY', 'USAGE_BASED', 'WEEKLY', 'YEARLY'])\n .describe('Billing cadence of a plan or relationship');\n\nexport const SubChannelStatusEnum = z\n .enum(['DISABLED', 'PENDING', 'VERIFIED'])\n .describe('Verification status of a communication channel');\n\nexport const SubChannelTypeEnum = z\n .enum(['DISCORD', 'EMAIL', 'PUSH', 'SLACK', 'SMS', 'WEBHOOK', 'WHATSAPP'])\n .describe('Transport type of a communication channel');\n\nexport const SubDiscoverySourceEnum = z\n .enum(['AI_AGENT', 'EMAIL_SCAN', 'IMPORT', 'MANUAL', 'PAYMENT_SCAN', 'PROVIDER_CONNECT'])\n .describe('How a relationship was discovered');\n\nexport const SubEntitlementTypeEnum = z\n .enum(['CONTENT', 'DISCOUNT', 'FEATURE_ACCESS', 'SEAT', 'SUPPORT_TIER', 'USAGE_QUOTA'])\n .describe('The kind of entitlement granted by a relationship');\n\nexport const SubInvoiceStatusEnum = z\n .enum(['CANCELLED', 'DRAFT', 'FAILED', 'ISSUED', 'OVERDUE', 'PAID', 'REFUNDED'])\n .describe('Lifecycle status of an invoice');\n\nexport const SubMessageCategoryEnum = z\n .enum([\n 'BILLING',\n 'MARKETING',\n 'OTHER',\n 'PRODUCT_UPDATE',\n 'RENEWAL',\n 'REQUIRED_ACTION',\n 'SECURITY_ALERT',\n ])\n .describe('Classification of a universal-inbox message');\n\nexport const SubPaymentInstrumentStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'EXPIRING', 'REMOVED'])\n .describe('Status of a payment instrument');\n\nexport const SubPaymentInstrumentTypeEnum = z\n .enum(['BANK_ACCOUNT', 'CARD', 'OTHER', 'PAYPAL', 'UPI', 'WALLET'])\n .describe('Type of a payment instrument');\n\nexport const SubPolicyActionEnum = z\n .enum(['ALERT', 'CANCEL', 'CREATE_TASK', 'DOWNGRADE', 'PAUSE', 'RENEW', 'UPGRADE'])\n .describe('The action an autonomous policy takes when triggered');\n\nexport const SubProviderCategoryEnum = z\n .enum([\n 'AI_SERVICE',\n 'ASSOCIATION',\n 'COMMUNITY',\n 'CONTRACT',\n 'EDUCATION',\n 'FINANCIAL',\n 'INSURANCE',\n 'LICENSE',\n 'MEMBERSHIP',\n 'NEWSLETTER',\n 'NEWS_DIGEST',\n 'OTHER',\n 'SAAS',\n 'STREAMING',\n 'TELECOM',\n 'UTILITY',\n ])\n .describe('Category of a provider in the global registry');\n\nexport const SubProviderStatusEnum = z\n .enum(['CLAIMED', 'DEPRECATED', 'UNVERIFIED', 'VERIFIED'])\n .describe('Lifecycle/trust status of a provider');\n\nexport const SubRelationshipKindEnum = z\n .enum([\n 'CONTRACT',\n 'ENROLLMENT',\n 'LICENSE',\n 'MEMBERSHIP',\n 'NEWSLETTER',\n 'RECURRING_PAYMENT',\n 'SUBSCRIPTION',\n 'TRIAL',\n ])\n .describe('The kind of recurring relationship');\n\nexport const SubRelationshipStatusEnum = z\n .enum(['ACTIVE', 'CANCELLED', 'EXPIRED', 'LAPSED', 'PAST_DUE', 'PAUSED', 'TRIAL'])\n .describe('Lifecycle status of a relationship');\n\nexport const SubWorkflowStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Lifecycle status of an automation workflow');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** JSON scalar inputs that may be either an object or an array. */\nexport const JsonValue = z.union([JsonObject, z.array(z.unknown())]);\n","/**\n * Subscriber Bot provider tools — the global provider registry.\n *\n * Surface (5): providers_{get,list,create,update,archive}.\n * Backed by the real root fields subProvider / subListProviders /\n * subCreateProvider / subUpdateProvider / subArchiveProvider.\n * `subListProviders` returns a SubProviderConnection ({ items, pageInfo }).\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';\nimport { SubProviderCategoryEnum, SubProviderStatusEnum } from './shared.js';\nimport { z } from 'zod';\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 Provider',\n description: 'Fetch a single provider from the global registry by ID, including its plans.',\n inputSchema: { id: z.string().describe('Provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subProvider: Record<string, unknown> | null;\n }>(ops.GET_PROVIDER, { id });\n if (!data.subProvider) return errorResult(`Provider ${id} not found`);\n return jsonResult(data.subProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_get failed', { error: String(error) });\n return errorResult(\n `Failed to get 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 Providers',\n description:\n 'Discovery: search/browse the global provider registry with optional category/status/text filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: SubProviderCategoryEnum.optional().describe('Filter by category'),\n status: SubProviderStatusEnum.optional().describe('Filter by trust/lifecycle status'),\n search: z.string().optional().describe('Free-text search across provider 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 cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ category, status, search, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListProviders: unknown }>(\n ops.LIST_PROVIDERS,\n {\n category,\n status,\n search,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListProviders);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_list failed', { error: String(error) });\n return errorResult(\n `Failed to list 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 Provider',\n description:\n 'Register a new provider in the global registry. Only `name` is required; `slug` should be unique within the workspace.',\n inputSchema: {\n name: z.string().min(1).describe('Provider display name'),\n slug: z.string().optional().describe('URL slug, unique within the workspace'),\n category: SubProviderCategoryEnum.optional().describe('Provider category (default OTHER)'),\n status: SubProviderStatusEnum.optional().describe(\n 'Trust/lifecycle status (default UNVERIFIED)',\n ),\n description: z.string().optional().describe('Provider description'),\n industry: z.string().optional().describe('Industry'),\n region: z.string().optional().describe('Region'),\n language: z.string().optional().describe('Primary language'),\n websiteUrl: z.string().optional().describe('Provider website URL'),\n logoFileId: z.string().optional().describe('wspace-files-svc File ID for the logo'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n slug,\n category,\n status,\n description,\n industry,\n region,\n language,\n websiteUrl,\n logoFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (slug !== undefined) input.slug = slug;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (industry !== undefined) input.industry = industry;\n if (region !== undefined) input.region = region;\n if (language !== undefined) input.language = language;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n subCreateProvider: Record<string, unknown>;\n }>(ops.CREATE_PROVIDER, { input });\n return jsonResult(data.subCreateProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_create failed', { error: String(error) });\n return errorResult(\n `Failed to create 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 Provider',\n description:\n 'Update a provider. At least one mutable field must be provided. Use `status` to verify/claim/deprecate; set churn/vendor-health scores for vendor intelligence.',\n inputSchema: {\n id: z.string().describe('Provider ID'),\n name: z.string().optional().describe('Updated display name'),\n slug: z.string().optional().describe('Updated slug'),\n category: SubProviderCategoryEnum.optional().describe('Updated category'),\n status: SubProviderStatusEnum.optional().describe('Updated trust/lifecycle status'),\n description: z.string().optional().describe('Updated description'),\n industry: z.string().optional().describe('Updated industry'),\n region: z.string().optional().describe('Updated region'),\n language: z.string().optional().describe('Updated language'),\n websiteUrl: z.string().optional().describe('Updated website URL'),\n logoFileId: z.string().optional().describe('Updated logo File ID'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n churnRiskScore: z.number().int().optional().describe('Churn-risk score (0-100)'),\n vendorHealthScore: z.number().int().optional().describe('Vendor-health score (0-100)'),\n },\n },\n async ({\n id,\n name,\n slug,\n category,\n status,\n description,\n industry,\n region,\n language,\n websiteUrl,\n logoFileId,\n tags,\n churnRiskScore,\n vendorHealthScore,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (slug !== undefined) input.slug = slug;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (industry !== undefined) input.industry = industry;\n if (region !== undefined) input.region = region;\n if (language !== undefined) input.language = language;\n if (websiteUrl !== undefined) input.websiteUrl = websiteUrl;\n if (logoFileId !== undefined) input.logoFileId = logoFileId;\n if (tags !== undefined) input.tags = tags;\n if (churnRiskScore !== undefined) input.churnRiskScore = churnRiskScore;\n if (vendorHealthScore !== undefined) input.vendorHealthScore = vendorHealthScore;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable provider field');\n }\n\n const data = await ctx.gql.workspace.request<{\n subUpdateProvider: Record<string, unknown>;\n }>(ops.UPDATE_PROVIDER, { id, input });\n return jsonResult(data.subUpdateProvider);\n } catch (error) {\n ctx.logger.error('subscriberbot providers_update failed', { error: String(error) });\n return errorResult(\n `Failed to update provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'providers_archive')),\n {\n title: 'Archive Provider',\n description: 'Archive (soft-delete) a provider. Returns true on success.',\n inputSchema: { id: z.string().describe('Provider ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ subArchiveProvider: boolean }>(\n ops.ARCHIVE_PROVIDER,\n { id },\n );\n return jsonResult({ archived: data.subArchiveProvider, id });\n } catch (error) {\n ctx.logger.error('subscriberbot providers_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot plan tools — provider plan catalog.\n *\n * Surface (2): plans_{list,create}.\n * Backed by the real root fields subListPlans / subCreatePlan.\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';\nimport { SubBillingIntervalEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPlanTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'plans_list')),\n {\n title: 'List Plans',\n description: 'List plans, optionally filtered by provider.',\n inputSchema: {\n providerId: z.string().optional().describe('Filter by provider ID'),\n },\n },\n async ({ providerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPlans: Array<Record<string, unknown>>;\n }>(ops.LIST_PLANS, { providerId });\n return jsonResult(data.subListPlans);\n } catch (error) {\n ctx.logger.error('subscriberbot plans_list failed', { error: String(error) });\n return errorResult(\n `Failed to list plans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'plans_create')),\n {\n title: 'Create Plan',\n description: 'Create a plan for a provider.',\n inputSchema: {\n providerId: z.string().min(1).describe('Provider ID this plan belongs to'),\n name: z.string().min(1).describe('Plan name'),\n amount: z.number().optional().describe('Plan amount'),\n currency: z.string().optional().describe('ISO currency code'),\n interval: SubBillingIntervalEnum.optional().describe('Billing interval (default MONTHLY)'),\n description: z.string().optional().describe('Plan description'),\n features: z.array(z.string()).optional().describe('Feature list'),\n },\n },\n async ({ providerId, name, amount, currency, interval, description, features }) => {\n try {\n const input: Record<string, unknown> = { providerId, name };\n if (amount !== undefined) input.amount = amount;\n if (currency !== undefined) input.currency = currency;\n if (interval !== undefined) input.interval = interval;\n if (description !== undefined) input.description = description;\n if (features !== undefined) input.features = features;\n\n const data = await ctx.gql.workspace.request<{ subCreatePlan: Record<string, unknown> }>(\n ops.CREATE_PLAN,\n { input },\n );\n return jsonResult(data.subCreatePlan);\n } catch (error) {\n ctx.logger.error('subscriberbot plans_create failed', { error: String(error) });\n return errorResult(\n `Failed to create plan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot relationship tools — the core domain object (subscriptions /\n * memberships / licenses / contracts).\n *\n * Surface (6): relationships_{get,list,create,update,cancel,transition}.\n * Backed by subRelationship / subListRelationships / subCreateRelationship /\n * subUpdateRelationship / subCancelRelationship / subTransitionRelationship.\n * `subListRelationships` returns a SubRelationshipConnection ({ items, pageInfo }).\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';\nimport {\n SubBillingIntervalEnum,\n SubDiscoverySourceEnum,\n SubRelationshipKindEnum,\n SubRelationshipStatusEnum,\n} from './shared.js';\nimport { z } from 'zod';\n\nexport function registerRelationshipTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_get')),\n {\n title: 'Get Relationship',\n description:\n 'Fetch a single relationship by ID, including its provider, plan, entitlements, assets, and renewal events.',\n inputSchema: { id: z.string().describe('Relationship ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subRelationship: Record<string, unknown> | null;\n }>(ops.GET_RELATIONSHIP, { id });\n if (!data.subRelationship) return errorResult(`Relationship ${id} not found`);\n return jsonResult(data.subRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_get failed', { error: String(error) });\n return errorResult(\n `Failed to get relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_list')),\n {\n title: 'List Relationships',\n description:\n 'List recurring relationships with optional kind/status/owner/provider filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n kind: SubRelationshipKindEnum.optional().describe('Filter by relationship kind'),\n status: SubRelationshipStatusEnum.optional().describe('Filter by lifecycle status'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n providerId: z.string().optional().describe('Filter by 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 cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ kind, status, ownerId, providerId, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListRelationships: unknown }>(\n ops.LIST_RELATIONSHIPS,\n {\n kind,\n status,\n ownerId,\n providerId,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListRelationships);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_list failed', { error: String(error) });\n return errorResult(\n `Failed to list relationships: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_create')),\n {\n title: 'Create Relationship',\n description:\n 'Create a recurring relationship (subscription / membership / license / contract). Only `label` is required.',\n inputSchema: {\n label: z.string().min(1).describe('Human-readable label'),\n kind: SubRelationshipKindEnum.optional().describe(\n 'Relationship kind (default SUBSCRIPTION)',\n ),\n status: SubRelationshipStatusEnum.optional().describe('Initial status (default ACTIVE)'),\n providerId: z.string().optional().describe('Provider ID'),\n planId: z.string().optional().describe('Plan ID'),\n ownerId: z.string().optional().describe('Owner user ID'),\n amount: z.number().optional().describe('Recurring amount'),\n currency: z.string().optional().describe('ISO currency code'),\n interval: SubBillingIntervalEnum.optional().describe('Billing interval (default MONTHLY)'),\n autoRenew: z\n .boolean()\n .optional()\n .describe('Whether the relationship auto-renews (default true)'),\n discoverySource: SubDiscoverySourceEnum.optional().describe(\n 'How it was discovered (default MANUAL)',\n ),\n notes: z.string().optional().describe('Free-form notes'),\n tags: z.array(z.string()).optional().describe('Tags'),\n startedAt: z.string().optional().describe('Start datetime (ISO 8601)'),\n renewsAt: z.string().optional().describe('Next renewal datetime (ISO 8601)'),\n trialEndsAt: z.string().optional().describe('Trial-end datetime (ISO 8601)'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { label: args.label };\n const optional: Array<keyof typeof args> = [\n 'kind',\n 'status',\n 'providerId',\n 'planId',\n 'ownerId',\n 'amount',\n 'currency',\n 'interval',\n 'autoRenew',\n 'discoverySource',\n 'notes',\n 'tags',\n 'startedAt',\n 'renewsAt',\n 'trialEndsAt',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subCreateRelationship: Record<string, unknown>;\n }>(ops.CREATE_RELATIONSHIP, { input });\n return jsonResult(data.subCreateRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_create failed', { error: String(error) });\n return errorResult(\n `Failed to create relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_update')),\n {\n title: 'Update Relationship',\n description: 'Update a relationship. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Relationship ID'),\n label: z.string().optional().describe('Updated label'),\n kind: SubRelationshipKindEnum.optional().describe('Updated kind'),\n providerId: z.string().optional().describe('Updated provider ID'),\n planId: z.string().optional().describe('Updated plan ID'),\n amount: z.number().optional().describe('Updated amount'),\n currency: z.string().optional().describe('Updated currency'),\n interval: SubBillingIntervalEnum.optional().describe('Updated billing interval'),\n autoRenew: z.boolean().optional().describe('Updated auto-renew flag'),\n healthScore: z.number().int().optional().describe('Relationship health score (0-100)'),\n notes: z.string().optional().describe('Updated notes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n startedAt: z.string().optional().describe('Updated start datetime (ISO 8601)'),\n renewsAt: z.string().optional().describe('Updated renewal datetime (ISO 8601)'),\n trialEndsAt: z.string().optional().describe('Updated trial-end datetime (ISO 8601)'),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rest)) {\n if (value !== undefined) input[key] = value;\n }\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one mutable relationship field',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n subUpdateRelationship: Record<string, unknown>;\n }>(ops.UPDATE_RELATIONSHIP, { id, input });\n return jsonResult(data.subUpdateRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_update failed', { error: String(error) });\n return errorResult(\n `Failed to update relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_cancel')),\n {\n title: 'Cancel Relationship',\n description: 'Cancel a relationship (sets status CANCELLED and stamps cancelledAt).',\n inputSchema: { id: z.string().describe('Relationship ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subCancelRelationship: Record<string, unknown>;\n }>(ops.CANCEL_RELATIONSHIP, { id });\n return jsonResult(data.subCancelRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_cancel failed', { error: String(error) });\n return errorResult(\n `Failed to cancel relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'relationships_transition')),\n {\n title: 'Transition Relationship',\n description:\n 'Advance a relationship through its lifecycle with a validated status transition.',\n inputSchema: {\n id: z.string().describe('Relationship ID'),\n status: SubRelationshipStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subTransitionRelationship: Record<string, unknown>;\n }>(ops.TRANSITION_RELATIONSHIP, { id, status });\n return jsonResult(data.subTransitionRelationship);\n } catch (error) {\n ctx.logger.error('subscriberbot relationships_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition relationship: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot entitlement tools — what a relationship grants (seats, quotas,\n * feature access, support tiers, …).\n *\n * Surface (2): entitlements_{list,create}.\n * Backed by subListEntitlements / subCreateEntitlement.\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';\nimport { SubEntitlementTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerEntitlementTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entitlements_list')),\n {\n title: 'List Entitlements',\n description: 'List the entitlements granted by a relationship.',\n inputSchema: { relationshipId: z.string().describe('Relationship ID (required)') },\n },\n async ({ relationshipId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListEntitlements: Array<Record<string, unknown>>;\n }>(ops.LIST_ENTITLEMENTS, { relationshipId });\n return jsonResult(data.subListEntitlements);\n } catch (error) {\n ctx.logger.error('subscriberbot entitlements_list failed', { error: String(error) });\n return errorResult(\n `Failed to list entitlements: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entitlements_create')),\n {\n title: 'Create Entitlement',\n description: 'Add an entitlement to a relationship.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n name: z.string().min(1).describe('Entitlement name'),\n type: SubEntitlementTypeEnum.optional().describe(\n 'Entitlement type (default FEATURE_ACCESS)',\n ),\n description: z.string().optional().describe('Description'),\n quota: z.number().int().optional().describe('Quota count'),\n unit: z.string().optional().describe('Quota unit (e.g. \"seats\", \"GB\")'),\n },\n },\n async ({ relationshipId, name, type, description, quota, unit }) => {\n try {\n const input: Record<string, unknown> = { relationshipId, name };\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (quota !== undefined) input.quota = quota;\n if (unit !== undefined) input.unit = unit;\n\n const data = await ctx.gql.workspace.request<{\n subCreateEntitlement: Record<string, unknown>;\n }>(ops.CREATE_ENTITLEMENT, { input });\n return jsonResult(data.subCreateEntitlement);\n } catch (error) {\n ctx.logger.error('subscriberbot entitlements_create failed', { error: String(error) });\n return errorResult(\n `Failed to create entitlement: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot asset tools — documents/credentials attached to a relationship\n * (contracts, receipts, license keys, certificates, …). Blobs live in\n * wspace-files-svc; assets only reference a File by id.\n *\n * Surface (2): assets_{list,create}.\n * Backed by subListAssets / subCreateAsset.\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';\nimport { SubAssetTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerAssetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_list')),\n {\n title: 'List Assets',\n description: 'List the assets attached to a relationship.',\n inputSchema: { relationshipId: z.string().describe('Relationship ID (required)') },\n },\n async ({ relationshipId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListAssets: Array<Record<string, unknown>>;\n }>(ops.LIST_ASSETS, { relationshipId });\n return jsonResult(data.subListAssets);\n } catch (error) {\n ctx.logger.error('subscriberbot assets_list failed', { error: String(error) });\n return errorResult(\n `Failed to list assets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assets_create')),\n {\n title: 'Create Asset',\n description:\n 'Attach an asset to a relationship. `fileId` references a wspace-files-svc File; `secretRef` references a vault secret for credentials.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n name: z.string().min(1).describe('Asset name'),\n type: SubAssetTypeEnum.optional().describe('Asset type (default RECEIPT)'),\n fileId: z.string().optional().describe('wspace-files-svc File ID'),\n secretRef: z.string().optional().describe('Vault secret reference for credentials'),\n expiresAt: z.string().optional().describe('Expiry datetime (ISO 8601)'),\n },\n },\n async ({ relationshipId, name, type, fileId, secretRef, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { relationshipId, name };\n if (type !== undefined) input.type = type;\n if (fileId !== undefined) input.fileId = fileId;\n if (secretRef !== undefined) input.secretRef = secretRef;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n subCreateAsset: Record<string, unknown>;\n }>(ops.CREATE_ASSET, { input });\n return jsonResult(data.subCreateAsset);\n } catch (error) {\n ctx.logger.error('subscriberbot assets_create failed', { error: String(error) });\n return errorResult(\n `Failed to create asset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot renewal-event tools — the timeline of upcoming/past renewal,\n * trial-end, price-change and cancellation events.\n *\n * Surface (1): renewal_events_list.\n * Backed by subListRenewalEvents.\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';\nimport { z } from 'zod';\n\nexport function registerRenewalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'renewal_events_list')),\n {\n title: 'List Renewal Events',\n description:\n 'List renewal events, optionally scoped to a relationship and/or filtered to upcoming events only.',\n inputSchema: {\n relationshipId: z.string().optional().describe('Filter by relationship ID'),\n upcomingOnly: z\n .boolean()\n .optional()\n .describe('Only return events that have not yet occurred'),\n },\n },\n async ({ relationshipId, upcomingOnly }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListRenewalEvents: Array<Record<string, unknown>>;\n }>(ops.LIST_RENEWAL_EVENTS, { relationshipId, upcomingOnly });\n return jsonResult(data.subListRenewalEvents);\n } catch (error) {\n ctx.logger.error('subscriberbot renewals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list renewal events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot payment-instrument tools — the universal billing layer's\n * stored cards / bank accounts / wallets.\n *\n * Surface (3): payment_instruments_{list,create,remove}.\n * Backed by subListPaymentInstruments / subCreatePaymentInstrument /\n * subRemovePaymentInstrument.\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';\nimport { SubPaymentInstrumentTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPaymentInstrumentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_list')),\n {\n title: 'List Payment Instruments',\n description: 'List stored payment instruments, optionally filtered by owner.',\n inputSchema: { ownerId: z.string().optional().describe('Filter by owner user ID') },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPaymentInstruments: Array<Record<string, unknown>>;\n }>(ops.LIST_PAYMENT_INSTRUMENTS, { ownerId });\n return jsonResult(data.subListPaymentInstruments);\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list payment instruments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_create')),\n {\n title: 'Create Payment Instrument',\n description:\n 'Store a payment instrument. Never send raw card numbers — use `processorToken` from your PSP plus display-only fields (brand, last4, expiry).',\n inputSchema: {\n label: z.string().min(1).describe('Display label (e.g. \"Personal Visa\")'),\n type: SubPaymentInstrumentTypeEnum.optional().describe('Instrument type (default CARD)'),\n ownerId: z.string().optional().describe('Owner user ID'),\n brand: z.string().optional().describe('Card/wallet brand (e.g. \"Visa\")'),\n last4: z.string().optional().describe('Last 4 digits (display only)'),\n expiryMonth: z.number().int().optional().describe('Expiry month (1-12)'),\n expiryYear: z.number().int().optional().describe('Expiry year (4-digit)'),\n isDefault: z\n .boolean()\n .optional()\n .describe('Mark as the default instrument (default false)'),\n processorToken: z.string().optional().describe('Opaque PSP token (never a raw PAN)'),\n },\n },\n async ({\n label,\n type,\n ownerId,\n brand,\n last4,\n expiryMonth,\n expiryYear,\n isDefault,\n processorToken,\n }) => {\n try {\n const input: Record<string, unknown> = { label };\n if (type !== undefined) input.type = type;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (brand !== undefined) input.brand = brand;\n if (last4 !== undefined) input.last4 = last4;\n if (expiryMonth !== undefined) input.expiryMonth = expiryMonth;\n if (expiryYear !== undefined) input.expiryYear = expiryYear;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (processorToken !== undefined) input.processorToken = processorToken;\n\n const data = await ctx.gql.workspace.request<{\n subCreatePaymentInstrument: Record<string, unknown>;\n }>(ops.CREATE_PAYMENT_INSTRUMENT, { input });\n return jsonResult(data.subCreatePaymentInstrument);\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_create failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to create payment instrument: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'payment_instruments_remove')),\n {\n title: 'Remove Payment Instrument',\n description: 'Remove a stored payment instrument. Returns true on success.',\n inputSchema: { id: z.string().describe('Payment instrument ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ subRemovePaymentInstrument: boolean }>(\n ops.REMOVE_PAYMENT_INSTRUMENT,\n { id },\n );\n return jsonResult({ removed: data.subRemovePaymentInstrument, id });\n } catch (error) {\n ctx.logger.error('subscriberbot payment_instruments_remove failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to remove payment instrument: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot invoice tools — the universal billing layer's invoice ledger.\n *\n * Surface (3): invoices_{list,create,mark_paid}.\n * Backed by subListInvoices / subCreateInvoice / subMarkInvoicePaid.\n * `subListInvoices` returns a SubInvoiceConnection ({ items, pageInfo }).\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';\nimport { SubInvoiceStatusEnum, JsonValue } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerInvoiceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_list')),\n {\n title: 'List Invoices',\n description:\n 'List invoices with optional relationship/status filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n relationshipId: z.string().optional().describe('Filter by relationship ID'),\n status: SubInvoiceStatusEnum.optional().describe('Filter by invoice status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ relationshipId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListInvoices: unknown }>(\n ops.LIST_INVOICES,\n {\n relationshipId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListInvoices);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_list failed', { error: String(error) });\n return errorResult(\n `Failed to list invoices: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_create')),\n {\n title: 'Create Invoice',\n description:\n 'Create an invoice against a relationship. `lineItems` is arbitrary JSON; `fileId` references a wspace-files-svc File holding the PDF.',\n inputSchema: {\n relationshipId: z.string().min(1).describe('Relationship ID'),\n number: z.string().optional().describe('Invoice number'),\n status: SubInvoiceStatusEnum.optional().describe('Invoice status (default ISSUED)'),\n currency: z.string().optional().describe('ISO currency code'),\n subtotal: z.number().optional().describe('Subtotal amount'),\n taxAmount: z.number().optional().describe('Tax amount'),\n total: z.number().optional().describe('Total amount'),\n issueDate: z.string().optional().describe('Issue datetime (ISO 8601)'),\n dueDate: z.string().optional().describe('Due datetime (ISO 8601)'),\n lineItems: JsonValue.optional().describe('Line items as JSON (object or array)'),\n paymentInstrumentId: z.string().optional().describe('Payment instrument ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the invoice PDF'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { relationshipId: args.relationshipId };\n const optional: Array<keyof typeof args> = [\n 'number',\n 'status',\n 'currency',\n 'subtotal',\n 'taxAmount',\n 'total',\n 'issueDate',\n 'dueDate',\n 'lineItems',\n 'paymentInstrumentId',\n 'fileId',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subCreateInvoice: Record<string, unknown>;\n }>(ops.CREATE_INVOICE, { input });\n return jsonResult(data.subCreateInvoice);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_create failed', { error: String(error) });\n return errorResult(\n `Failed to create invoice: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'invoices_mark_paid')),\n {\n title: 'Mark Invoice Paid',\n description: 'Mark an invoice as paid (sets status PAID and stamps paidAt).',\n inputSchema: { id: z.string().describe('Invoice ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subMarkInvoicePaid: Record<string, unknown>;\n }>(ops.MARK_INVOICE_PAID, { id });\n return jsonResult(data.subMarkInvoicePaid);\n } catch (error) {\n ctx.logger.error('subscriberbot invoices_mark_paid failed', { error: String(error) });\n return errorResult(\n `Failed to mark invoice paid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot communication-channel tools — the inbound/outbound channels\n * (email, SMS, Slack, webhook, …) feeding the universal inbox.\n *\n * Surface (3): channels_{list,create,verify}.\n * Backed by subListChannels / subCreateChannel / subVerifyChannel.\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';\nimport { SubChannelTypeEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerChannelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_list')),\n {\n title: 'List Channels',\n description: 'List communication channels, optionally filtered by owner.',\n inputSchema: { ownerId: z.string().optional().describe('Filter by owner user ID') },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListChannels: Array<Record<string, unknown>>;\n }>(ops.LIST_CHANNELS, { ownerId });\n return jsonResult(data.subListChannels);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_list failed', { error: String(error) });\n return errorResult(\n `Failed to list channels: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_create')),\n {\n title: 'Create Channel',\n description:\n 'Register a communication channel. `address` is the endpoint (email address, phone number, webhook URL, …).',\n inputSchema: {\n address: z.string().min(1).describe('Channel endpoint (email/phone/URL)'),\n type: SubChannelTypeEnum.optional().describe('Channel type (default EMAIL)'),\n label: z.string().optional().describe('Display label'),\n ownerId: z.string().optional().describe('Owner user ID'),\n ingestEnabled: z\n .boolean()\n .optional()\n .describe('Whether inbound ingestion is enabled (default true)'),\n },\n },\n async ({ address, type, label, ownerId, ingestEnabled }) => {\n try {\n const input: Record<string, unknown> = { address };\n if (type !== undefined) input.type = type;\n if (label !== undefined) input.label = label;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (ingestEnabled !== undefined) input.ingestEnabled = ingestEnabled;\n\n const data = await ctx.gql.workspace.request<{\n subCreateChannel: Record<string, unknown>;\n }>(ops.CREATE_CHANNEL, { input });\n return jsonResult(data.subCreateChannel);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_create failed', { error: String(error) });\n return errorResult(\n `Failed to create channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'channels_verify')),\n {\n title: 'Verify Channel',\n description:\n 'Mark a communication channel as verified (sets status VERIFIED, stamps verifiedAt).',\n inputSchema: { id: z.string().describe('Channel ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subVerifyChannel: Record<string, unknown>;\n }>(ops.VERIFY_CHANNEL, { id });\n return jsonResult(data.subVerifyChannel);\n } catch (error) {\n ctx.logger.error('subscriberbot channels_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify channel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot universal-inbox tools — every merged subscription\n * communication, classified and linked to its relationship.\n *\n * Surface (3): inbox_{list,ingest,mark_read}.\n * Backed by subListInboxMessages / subIngestMessage / subMarkMessageRead.\n * `subListInboxMessages` returns a SubInboxMessageConnection ({ items, pageInfo }).\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';\nimport { SubMessageCategoryEnum } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerInboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_list')),\n {\n title: 'List Inbox Messages',\n description:\n 'The Universal Inbox — list merged subscription communications with optional category/channel/relationship/unread filters and pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: SubMessageCategoryEnum.optional().describe('Filter by message category'),\n channelId: z.string().optional().describe('Filter by source channel ID'),\n relationshipId: z.string().optional().describe('Filter by linked relationship ID'),\n unreadOnly: z.boolean().optional().describe('Only return unread messages'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ category, channelId, relationshipId, unreadOnly, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{ subListInboxMessages: unknown }>(\n ops.LIST_INBOX_MESSAGES,\n {\n category,\n channelId,\n relationshipId,\n unreadOnly,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.subListInboxMessages);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_list failed', { error: String(error) });\n return errorResult(\n `Failed to list inbox messages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_ingest')),\n {\n title: 'Ingest Inbox Message',\n description:\n 'Ingest a new communication into the universal inbox from a channel. `receivedAt` and `channelId` are required.',\n inputSchema: {\n channelId: z.string().min(1).describe('Source channel ID'),\n receivedAt: z.string().describe('When the message was received (ISO 8601)'),\n category: SubMessageCategoryEnum.optional().describe('Message category (default OTHER)'),\n categoryConfidence: z.number().int().optional().describe('Classifier confidence (0-100)'),\n actionRequired: z\n .boolean()\n .optional()\n .describe('Whether the message requires action (default false)'),\n subject: z.string().optional().describe('Message subject'),\n preview: z.string().optional().describe('Short preview/snippet'),\n externalId: z.string().optional().describe('External message ID (for de-dup)'),\n relationshipId: z.string().optional().describe('Linked relationship ID'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = {\n channelId: args.channelId,\n receivedAt: args.receivedAt,\n };\n const optional: Array<keyof typeof args> = [\n 'category',\n 'categoryConfidence',\n 'actionRequired',\n 'subject',\n 'preview',\n 'externalId',\n 'relationshipId',\n ];\n for (const key of optional) {\n if (args[key] !== undefined) input[key] = args[key];\n }\n\n const data = await ctx.gql.workspace.request<{\n subIngestMessage: Record<string, unknown>;\n }>(ops.INGEST_MESSAGE, { input });\n return jsonResult(data.subIngestMessage);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_ingest failed', { error: String(error) });\n return errorResult(\n `Failed to ingest message: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'inbox_mark_read')),\n {\n title: 'Mark Message Read',\n description: 'Mark a universal-inbox message as read.',\n inputSchema: { id: z.string().describe('Inbox message ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subMarkMessageRead: Record<string, unknown>;\n }>(ops.MARK_MESSAGE_READ, { id });\n return jsonResult(data.subMarkMessageRead);\n } catch (error) {\n ctx.logger.error('subscriberbot inbox_mark_read failed', { error: String(error) });\n return errorResult(\n `Failed to mark message read: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot AI-agent tools — the automation layer's specialised agents\n * (discovery, renewal, cost, negotiation, …).\n *\n * Surface (4): agents_{get,list,create,set_status}.\n * Backed by subAgent / subListAgents / subCreateAgent / subSetAgentStatus.\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';\nimport { SubAgentKindEnum, SubAgentStatusEnum, JsonObject } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerAgentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_get')),\n {\n title: 'Get Agent',\n description: 'Fetch a single AI agent by ID, including its policies.',\n inputSchema: { id: z.string().describe('Agent ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subAgent: Record<string, unknown> | null;\n }>(ops.GET_AGENT, { id });\n if (!data.subAgent) return errorResult(`Agent ${id} not found`);\n return jsonResult(data.subAgent);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_get failed', { error: String(error) });\n return errorResult(\n `Failed to get agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_list')),\n {\n title: 'List Agents',\n description: 'List AI agents with optional kind/owner/status filters.',\n inputSchema: {\n kind: SubAgentKindEnum.optional().describe('Filter by agent kind'),\n ownerId: z.string().optional().describe('Filter by owner user ID'),\n status: SubAgentStatusEnum.optional().describe('Filter by operating posture'),\n },\n },\n async ({ kind, ownerId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListAgents: Array<Record<string, unknown>>;\n }>(ops.LIST_AGENTS, { kind, ownerId, status });\n return jsonResult(data.subListAgents);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_list failed', { error: String(error) });\n return errorResult(\n `Failed to list agents: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_create')),\n {\n title: 'Create Agent',\n description:\n 'Create an AI agent. Defaults to kind=DISCOVERY and status=SUGGEST_ONLY (no autonomous action until promoted).',\n inputSchema: {\n name: z.string().min(1).describe('Agent name'),\n kind: SubAgentKindEnum.optional().describe('Agent kind (default DISCOVERY)'),\n status: SubAgentStatusEnum.optional().describe('Operating posture (default SUGGEST_ONLY)'),\n description: z.string().optional().describe('Agent description'),\n ownerId: z.string().optional().describe('Owner user ID'),\n config: JsonObject.optional().describe('Agent configuration as JSON'),\n },\n },\n async ({ name, kind, status, description, ownerId, config }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (kind !== undefined) input.kind = kind;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (config !== undefined) input.config = config;\n\n const data = await ctx.gql.workspace.request<{\n subCreateAgent: Record<string, unknown>;\n }>(ops.CREATE_AGENT, { input });\n return jsonResult(data.subCreateAgent);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_create failed', { error: String(error) });\n return errorResult(\n `Failed to create agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_set_status')),\n {\n title: 'Set Agent Status',\n description: \"Change an agent's operating posture (DISABLED / SUGGEST_ONLY / AUTONOMOUS).\",\n inputSchema: {\n id: z.string().describe('Agent ID'),\n status: SubAgentStatusEnum.describe('Target operating posture'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subSetAgentStatus: Record<string, unknown>;\n }>(ops.SET_AGENT_STATUS, { id, status });\n return jsonResult(data.subSetAgentStatus);\n } catch (error) {\n ctx.logger.error('subscriberbot agents_set_status failed', { error: String(error) });\n return errorResult(\n `Failed to set agent status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot policy tools — the autonomous rules an agent evaluates\n * (condition → action).\n *\n * Surface (2): policies_{list,create}.\n * Backed by subListPolicies / subCreatePolicy.\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';\nimport { SubPolicyActionEnum, JsonObject } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerPolicyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'policies_list')),\n {\n title: 'List Policies',\n description: 'List autonomous policies, optionally filtered by agent.',\n inputSchema: { agentId: z.string().optional().describe('Filter by agent ID') },\n },\n async ({ agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListPolicies: Array<Record<string, unknown>>;\n }>(ops.LIST_POLICIES, { agentId });\n return jsonResult(data.subListPolicies);\n } catch (error) {\n ctx.logger.error('subscriberbot policies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list policies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'policies_create')),\n {\n title: 'Create Policy',\n description:\n 'Create an autonomous policy for an agent. `condition` is arbitrary JSON evaluated to decide whether `action` fires.',\n inputSchema: {\n agentId: z.string().min(1).describe('Agent ID this policy belongs to'),\n name: z.string().min(1).describe('Policy name'),\n action: SubPolicyActionEnum.optional().describe('Action when triggered (default ALERT)'),\n description: z.string().optional().describe('Policy description'),\n condition: JsonObject.optional().describe('Trigger condition as JSON'),\n isEnabled: z.boolean().optional().describe('Whether the policy is enabled (default true)'),\n },\n },\n async ({ agentId, name, action, description, condition, isEnabled }) => {\n try {\n const input: Record<string, unknown> = { agentId, name };\n if (action !== undefined) input.action = action;\n if (description !== undefined) input.description = description;\n if (condition !== undefined) input.condition = condition;\n if (isEnabled !== undefined) input.isEnabled = isEnabled;\n\n const data = await ctx.gql.workspace.request<{\n subCreatePolicy: Record<string, unknown>;\n }>(ops.CREATE_POLICY, { input });\n return jsonResult(data.subCreatePolicy);\n } catch (error) {\n ctx.logger.error('subscriberbot policies_create failed', { error: String(error) });\n return errorResult(\n `Failed to create policy: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot workflow tools — event-triggered automation workflows.\n *\n * Surface (3): workflows_{list,create,activate}.\n * Backed by subListWorkflows / subCreateWorkflow / subActivateWorkflow.\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';\nimport { SubWorkflowStatusEnum, JsonValue } from './shared.js';\nimport { z } from 'zod';\n\nexport function registerWorkflowTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_list')),\n {\n title: 'List Workflows',\n description: 'List automation workflows, optionally filtered by status.',\n inputSchema: {\n status: SubWorkflowStatusEnum.optional().describe('Filter by workflow status'),\n },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subListWorkflows: Array<Record<string, unknown>>;\n }>(ops.LIST_WORKFLOWS, { status });\n return jsonResult(data.subListWorkflows);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_list failed', { error: String(error) });\n return errorResult(\n `Failed to list workflows: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_create')),\n {\n title: 'Create Workflow',\n description:\n 'Create an event-triggered automation workflow. `triggerEvent` names the event; `steps` is arbitrary JSON describing the step graph.',\n inputSchema: {\n name: z.string().min(1).describe('Workflow name'),\n triggerEvent: z.string().min(1).describe('Event name that triggers the workflow'),\n description: z.string().optional().describe('Workflow description'),\n steps: JsonValue.optional().describe('Step definition as JSON (object or array)'),\n },\n },\n async ({ name, triggerEvent, description, steps }) => {\n try {\n const input: Record<string, unknown> = { name, triggerEvent };\n if (description !== undefined) input.description = description;\n if (steps !== undefined) input.steps = steps;\n\n const data = await ctx.gql.workspace.request<{\n subCreateWorkflow: Record<string, unknown>;\n }>(ops.CREATE_WORKFLOW, { input });\n return jsonResult(data.subCreateWorkflow);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_create failed', { error: String(error) });\n return errorResult(\n `Failed to create workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'workflows_activate')),\n {\n title: 'Activate Workflow',\n description: 'Activate a workflow (sets status ACTIVE).',\n inputSchema: { id: z.string().describe('Workflow ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n subActivateWorkflow: Record<string, unknown>;\n }>(ops.ACTIVATE_WORKFLOW, { id });\n return jsonResult(data.subActivateWorkflow);\n } catch (error) {\n ctx.logger.error('subscriberbot workflows_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Subscriber Bot health tool.\n *\n * Surface (1): health.\n * `health` maps to the @public subHealth query (no auth required) — a\n * liveness/identity probe for the Subscriber Bot subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Subscriber Bot Health Check',\n description:\n 'Public liveness/identity probe for the Subscriber Bot subgraph (subHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ subHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.subHealth });\n } catch (error) {\n ctx.logger.error('subscriberbot health failed', { error: String(error) });\n return errorResult(\n `Subscriber Bot health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_PROVIDERS, LIST_RELATIONSHIPS, LIST_INBOX_MESSAGES } from './operations.js';\n\n/**\n * Read-only Subscriber Bot 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 registerSubscriberbotResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const providersUri = track(mcpResourceUri(ctx.productName, 'providers'));\n const relationshipsUri = track(mcpResourceUri(ctx.productName, 'relationships'));\n const inboxUri = track(mcpResourceUri(ctx.productName, 'inbox'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'subscriberbot-schema',\n schemaUri,\n {\n title: 'Subscriber Bot Domain Schema',\n description:\n 'Overview of the Subscriber Bot domain — the Universal Digital Relationship OS: 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 = `# Subscriber Bot Domain (Overview)\n\nThe Universal Digital Relationship Operating System — system of record for every\nrecurring digital relationship.\n\n## Entities\n- SubProvider — a provider in the global discovery registry (has plans)\n- SubPlan — a provider's pricing plan\n- SubRelationship — the core object: a subscription / membership / license / contract\n- SubEntitlement — what a relationship grants (seats, quotas, feature access, …)\n- SubAsset — documents/credentials attached to a relationship (refs wspace-files File)\n- SubRenewalEvent — renewal / trial-end / price-change / cancellation timeline events\n- SubPaymentInstrument — stored card / bank / wallet (universal billing layer)\n- SubInvoice — invoice ledger entry (refs wspace-files File for the PDF)\n- SubCommunicationChannel — inbound/outbound channel feeding the inbox\n- SubInboxMessage — a merged subscription communication (the Universal Inbox)\n- SubAiAgent — an automation-layer specialised agent (has policies)\n- SubPolicy — an autonomous rule (condition → action) evaluated by an agent\n- SubWorkflow — an event-triggered automation workflow\n\n## Key enums\n- SubRelationshipKind: SUBSCRIPTION, MEMBERSHIP, LICENSE, CONTRACT, TRIAL, NEWSLETTER, ENROLLMENT, RECURRING_PAYMENT\n- SubRelationshipStatus: ACTIVE, TRIAL, PAST_DUE, PAUSED, LAPSED, EXPIRED, CANCELLED\n- SubBillingInterval: DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, LIFETIME, USAGE_BASED, FREE\n- SubProviderCategory: SAAS, STREAMING, TELECOM, UTILITY, FINANCIAL, INSURANCE, NEWSLETTER, MEMBERSHIP, AI_SERVICE, … (16)\n- SubInvoiceStatus: DRAFT, ISSUED, PAID, OVERDUE, FAILED, REFUNDED, CANCELLED\n- SubMessageCategory: BILLING, RENEWAL, REQUIRED_ACTION, SECURITY_ALERT, PRODUCT_UPDATE, MARKETING, OTHER\n- SubAgentKind: DISCOVERY, RENEWAL, COST, NEGOTIATION, MIGRATION, COMPLIANCE, CONCIERGE, VENDOR, NEWSLETTER\n- SubAgentStatus: DISABLED, SUGGEST_ONLY, AUTONOMOUS\n\n## Tool groups\nproviders, plans, relationships, entitlements, assets, renewal_events,\npayment_instruments, invoices, channels, inbox, agents, policies, workflows, health.\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>://providers — provider registry\n server.registerResource(\n 'subscriberbot-providers',\n providersUri,\n {\n title: 'Subscriber Bot Provider Registry',\n description: 'The first 50 providers in the bound workspace registry.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${providersUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListProviders: unknown }>(\n LIST_PROVIDERS,\n {\n pagination: { limit: 50, offset: 0 },\n },\n );\n return {\n contents: [\n {\n uri: providersUri,\n text: JSON.stringify(data.subListProviders, 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 // <product>://relationships — active relationships\n server.registerResource(\n 'subscriberbot-relationships',\n relationshipsUri,\n {\n title: 'Subscriber Bot Relationships',\n description: 'The first 50 recurring relationships in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${relationshipsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListRelationships: unknown }>(\n LIST_RELATIONSHIPS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: relationshipsUri,\n text: JSON.stringify(data.subListRelationships, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: relationshipsUri,\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>://inbox — the universal inbox\n server.registerResource(\n 'subscriberbot-inbox',\n inboxUri,\n {\n title: 'Subscriber Bot Universal Inbox',\n description: 'The first 50 merged subscription communications in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${inboxUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ subListInboxMessages: unknown }>(\n LIST_INBOX_MESSAGES,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: inboxUri,\n text: JSON.stringify(data.subListInboxMessages, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: inboxUri,\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 * Subscriber Bot MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerSubscriberbotPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'relationship-onboarding'));\n const triageName = track(mcpPromptName(p, 'inbox-triage'));\n\n // <product>-relationship-onboarding — stand up a provider + relationship\n server.registerPrompt(\n onboardingName,\n {\n title: 'Relationship Onboarding',\n description:\n 'Guide for onboarding a new recurring relationship end to end: find/create the provider and plan, create the relationship, and capture its entitlements, assets, and renewal cadence.',\n argsSchema: {\n providerName: z.string().optional().describe('Provider/vendor name'),\n label: z.string().optional().describe('Label for the relationship'),\n },\n },\n ({ providerName, label }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { providerName, label });\n const providerNote = providerName\n ? `Search the registry for \"${providerName}\" with ${p}_providers_list; create it with ${p}_providers_create if missing.`\n : `Ask the user for the provider name, then search with ${p}_providers_list (create with ${p}_providers_create if missing).`;\n const labelNote = label\n ? `Use the label \"${label}\".`\n : 'Ask the user for a label for the relationship.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new recurring relationship in Subscriber Bot.\n\n1. **Provider**: ${providerNote}\n2. **Plan**: Use ${p}_plans_list for the provider; create one with ${p}_plans_create (amount, currency, interval) if needed.\n3. **Create Relationship**: Use ${p}_relationships_create. ${labelNote} Set kind (SUBSCRIPTION / MEMBERSHIP / LICENSE / CONTRACT), providerId, planId, amount/currency/interval, autoRenew, and renewsAt.\n4. **Entitlements**: Use ${p}_entitlements_create for each seat/quota/feature the relationship grants.\n5. **Assets**: Use ${p}_assets_create to attach contracts/receipts/license keys (reference a wspace-files File via fileId).\n6. **Confirm**: Re-read with ${p}_relationships_get and summarise the renewal cadence.\n\nShow results at each step and confirm before finishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-inbox-triage — daily inbox + renewal operations\n server.registerPrompt(\n triageName,\n {\n title: 'Inbox & Renewal Triage',\n description:\n 'Daily triage workflow: work the universal inbox, mark actioned messages read, handle upcoming renewals, settle invoices, and tune automation agents/policies.',\n argsSchema: {\n relationshipId: z.string().optional().describe('Relationship ID to focus on'),\n },\n },\n ({ relationshipId }) => {\n ctx.logger.debug(`Prompt ${triageName} called`, { relationshipId });\n const scopeNote = relationshipId\n ? `Focus on relationship \"${relationshipId}\".`\n : `Work across all relationships (use ${p}_relationships_list to pick).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run daily Subscriber Bot triage. ${scopeNote}\n\n1. **Required actions**: Use ${p}_inbox_list with category=REQUIRED_ACTION (and unreadOnly=true) to find messages needing attention; mark handled ones with ${p}_inbox_mark_read.\n2. **Renewals**: Use ${p}_renewal_events_list with upcomingOnly=true to find imminent renewals/trial-ends; for each decide renew vs cancel (${p}_relationships_transition / ${p}_relationships_cancel).\n3. **Billing**: Use ${p}_invoices_list with status=ISSUED or OVERDUE; settle paid ones with ${p}_invoices_mark_paid.\n4. **Security**: Use ${p}_inbox_list with category=SECURITY_ALERT and escalate.\n5. **Automation**: Use ${p}_agents_list and ${p}_policies_list to review autonomous coverage; promote a trusted agent with ${p}_agents_set_status (SUGGEST_ONLY → AUTONOMOUS) where appropriate.\n\nSummarise what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Subscriber Bot module — domain module for the future-products ecosystem\n * program.\n *\n * Covers all 13 @key entities of wspace-subscriberbot-svc grouped into\n * per-entity sub-APIs across the product's four domains:\n * - registry: providers, plans\n * - relationships: relationships, entitlements, assets, renewal events\n * - payments: payment instruments, invoices, channels, the universal inbox\n * - automation: AI agents, policies, workflows\n * plus the @public subHealth probe. Mirrors the kadaikodi module's structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/subscriberbot/wspace-subscriberbot-svc/\n * (Hive service name `subscriberbot`). All operations run against the WORKSPACE\n * gateway; the @public subHealth 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 { registerPlanTools } from './tools/plans.js';\nimport { registerRelationshipTools } from './tools/relationships.js';\nimport { registerEntitlementTools } from './tools/entitlements.js';\nimport { registerAssetTools } from './tools/assets.js';\nimport { registerRenewalTools } from './tools/renewals.js';\nimport { registerPaymentInstrumentTools } from './tools/payment-instruments.js';\nimport { registerInvoiceTools } from './tools/invoices.js';\nimport { registerChannelTools } from './tools/channels.js';\nimport { registerInboxTools } from './tools/inbox.js';\nimport { registerAgentTools } from './tools/agents.js';\nimport { registerPolicyTools } from './tools/policies.js';\nimport { registerWorkflowTools } from './tools/workflows.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerSubscriberbotResources } from './resources.js';\nimport { registerSubscriberbotPrompts } from './prompts.js';\n\nconst subscriberbotModule: McpModule = {\n id: 'subscriberbot',\n version: '0.0.1',\n displayName: 'Subscriber Bot',\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 registerPlanTools(server, ctx, trackTool);\n registerRelationshipTools(server, ctx, trackTool);\n registerEntitlementTools(server, ctx, trackTool);\n registerAssetTools(server, ctx, trackTool);\n registerRenewalTools(server, ctx, trackTool);\n registerPaymentInstrumentTools(server, ctx, trackTool);\n registerInvoiceTools(server, ctx, trackTool);\n registerChannelTools(server, ctx, trackTool);\n registerInboxTools(server, ctx, trackTool);\n registerAgentTools(server, ctx, trackTool);\n registerPolicyTools(server, ctx, trackTool);\n registerWorkflowTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerSubscriberbotResources(server, ctx, trackResource);\n registerSubscriberbotPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default subscriberbotModule;\n"]}
|