@burdenoff/mcp-libs 2026.627.2 → 2026.627.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/modules/artistrybase/index.cjs +2112 -0
  2. package/dist/modules/artistrybase/index.cjs.map +1 -0
  3. package/dist/modules/artistrybase/index.d.cts +8 -0
  4. package/dist/modules/artistrybase/index.d.ts +8 -0
  5. package/dist/modules/artistrybase/index.js +2051 -0
  6. package/dist/modules/artistrybase/index.js.map +1 -0
  7. package/dist/modules/brainyrich/index.cjs +2148 -0
  8. package/dist/modules/brainyrich/index.cjs.map +1 -0
  9. package/dist/modules/brainyrich/index.d.cts +8 -0
  10. package/dist/modules/brainyrich/index.d.ts +8 -0
  11. package/dist/modules/brainyrich/index.js +2087 -0
  12. package/dist/modules/brainyrich/index.js.map +1 -0
  13. package/dist/modules/buildmyiq/index.cjs +1562 -0
  14. package/dist/modules/buildmyiq/index.cjs.map +1 -0
  15. package/dist/modules/buildmyiq/index.d.cts +8 -0
  16. package/dist/modules/buildmyiq/index.d.ts +8 -0
  17. package/dist/modules/buildmyiq/index.js +1501 -0
  18. package/dist/modules/buildmyiq/index.js.map +1 -0
  19. package/dist/modules/collabkin/index.cjs +1577 -0
  20. package/dist/modules/collabkin/index.cjs.map +1 -0
  21. package/dist/modules/collabkin/index.d.cts +8 -0
  22. package/dist/modules/collabkin/index.d.ts +8 -0
  23. package/dist/modules/collabkin/index.js +1516 -0
  24. package/dist/modules/collabkin/index.js.map +1 -0
  25. package/dist/modules/comradecircle/index.cjs +1817 -0
  26. package/dist/modules/comradecircle/index.cjs.map +1 -0
  27. package/dist/modules/comradecircle/index.d.cts +8 -0
  28. package/dist/modules/comradecircle/index.d.ts +8 -0
  29. package/dist/modules/comradecircle/index.js +1756 -0
  30. package/dist/modules/comradecircle/index.js.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/brainyrich/operations.ts","../../../src/modules/brainyrich/tools/shared.ts","../../../src/modules/brainyrich/tools/accounts.ts","../../../src/modules/brainyrich/tools/portfolios.ts","../../../src/modules/brainyrich/tools/holdings.ts","../../../src/modules/brainyrich/tools/transactions.ts","../../../src/modules/brainyrich/tools/goals.ts","../../../src/modules/brainyrich/tools/households.ts","../../../src/modules/brainyrich/tools/modelPortfolios.ts","../../../src/modules/brainyrich/tools/rebalance.ts","../../../src/modules/brainyrich/tools/insights.ts","../../../src/modules/brainyrich/tools/analytics.ts","../../../src/modules/brainyrich/resources.ts","../../../src/modules/brainyrich/prompts.ts","../../../src/modules/brainyrich/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the Brainyrich MCP module.\n *\n * Brainyrich is the wealth-management platform (future-products ecosystem).\n * Backend subgraph: ~/products/wspace/brainyrich/wspace-brainyrich-svc/\n * (Hive service name `brainyrich`).\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 — Brainyrich inputs do NOT carry a workspaceId.\n *\n * The backend prefixes EVERY type/enum/input with `Bra` and EVERY root field\n * with `bra` (the greenfield product-naming contract). Operations are called\n * by their REAL names. Pagination uses the shared `PaginationInput`\n * ({ limit, offset, cursor }); connection lists return { items, pageInfo }.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols/kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PAGE_INFO = `pageInfo { cursor hasMore }`;\n\nexport const ACCOUNT_FIELDS = `\n id name type status currency cashBalance accountMask institution isManual\n householdId ownerId workspaceId createdAt updatedAt\n`;\n\nexport const HOLDING_FIELDS = `\n id accountId portfolioId symbol name assetClass quantity costBasis lastPrice\n marketValue currency asOf workspaceId createdAt updatedAt\n`;\n\nexport const TRANSACTION_FIELDS = `\n id accountId holdingId type symbol quantity price amount fee currency\n tradeDate settleDate notes workspaceId createdAt updatedAt\n`;\n\nexport const PORTFOLIO_FIELDS = `\n id name description ownerId householdId modelPortfolioId baseCurrency status\n driftThresholdPct targetAllocation tags workspaceId createdAt updatedAt\n`;\n\nexport const GOAL_FIELDS = `\n id name type status priority targetAmount targetDate monthlyContribution\n currency projection ownerId householdId notes tags workspaceId\n createdAt updatedAt\n`;\n\nexport const GOAL_FUNDING_FIELDS = `\n id goalId accountId allocationPct fixedAmount workspaceId createdAt updatedAt\n`;\n\nexport const HOUSEHOLD_FIELDS = `\n id name status riskProfile aum currency advisorId primaryContactName\n primaryContactEmail notes tags workspaceId createdAt updatedAt\n`;\n\nexport const MODEL_ALLOCATION_FIELDS = `\n id modelPortfolioId assetClass targetPct workspaceId createdAt updatedAt\n`;\n\nexport const MODEL_PORTFOLIO_FIELDS = `\n id name description baseCurrency riskProfile isActive workspaceId\n createdAt updatedAt\n`;\n\nexport const REBALANCE_FIELDS = `\n id portfolioId householdId status driftPct rationale trades proposedById\n approvedById executedAt workspaceId createdAt updatedAt\n`;\n\nexport const INSIGHT_FIELDS = `\n id type severity status title detail subjectType subjectId metrics ownerId\n acknowledgedById resolvedAt workspaceId createdAt updatedAt\n`;\n\nexport const NET_WORTH_SUMMARY_FIELDS = `\n ownerId workspaceId currency totalNetWorth totalMarketValue totalCash\n accountCount byAssetClass { assetClass marketValue }\n`;\n\n// ---------------------------------------------------------------------------\n// Accounts\n// ---------------------------------------------------------------------------\n\nexport const GET_ACCOUNT = `\n query BrainyrichGetAccount($id: ID!) {\n braAccount(id: $id) {\n ${ACCOUNT_FIELDS}\n holdings { id symbol name assetClass quantity marketValue currency }\n transactions { id type symbol amount quantity price tradeDate }\n }\n }\n`;\n\nexport const LIST_ACCOUNTS = `\n query BrainyrichListAccounts(\n $householdId: ID\n $status: BraAccountStatus\n $pagination: PaginationInput\n ) {\n braListAccounts(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${ACCOUNT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_ACCOUNT = `\n mutation BrainyrichCreateAccount($input: BraCreateAccountInput!) {\n braCreateAccount(input: $input) {\n ${ACCOUNT_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ACCOUNT = `\n mutation BrainyrichUpdateAccount($id: ID!, $input: BraUpdateAccountInput!) {\n braUpdateAccount(id: $id, input: $input) {\n ${ACCOUNT_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_ACCOUNT = `\n mutation BrainyrichArchiveAccount($id: ID!) {\n braArchiveAccount(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Portfolios\n// ---------------------------------------------------------------------------\n\nexport const GET_PORTFOLIO = `\n query BrainyrichGetPortfolio($id: ID!) {\n braPortfolio(id: $id) {\n ${PORTFOLIO_FIELDS}\n holdings { id symbol name assetClass quantity marketValue currency }\n }\n }\n`;\n\nexport const LIST_PORTFOLIOS = `\n query BrainyrichListPortfolios(\n $householdId: ID\n $status: BraPortfolioStatus\n $pagination: PaginationInput\n ) {\n braListPortfolios(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${PORTFOLIO_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_PORTFOLIO = `\n mutation BrainyrichCreatePortfolio($input: BraCreatePortfolioInput!) {\n braCreatePortfolio(input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PORTFOLIO = `\n mutation BrainyrichUpdatePortfolio($id: ID!, $input: BraUpdatePortfolioInput!) {\n braUpdatePortfolio(id: $id, input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PORTFOLIO = `\n mutation BrainyrichArchivePortfolio($id: ID!) {\n braArchivePortfolio(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Holdings\n// ---------------------------------------------------------------------------\n\nexport const LIST_HOLDINGS = `\n query BrainyrichListHoldings($accountId: ID, $portfolioId: ID) {\n braListHoldings(accountId: $accountId, portfolioId: $portfolioId) {\n ${HOLDING_FIELDS}\n }\n }\n`;\n\nexport const CREATE_HOLDING = `\n mutation BrainyrichCreateHolding($input: BraCreateHoldingInput!) {\n braCreateHolding(input: $input) {\n ${HOLDING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_HOLDING = `\n mutation BrainyrichUpdateHolding($id: ID!, $input: BraUpdateHoldingInput!) {\n braUpdateHolding(id: $id, input: $input) {\n ${HOLDING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_HOLDING = `\n mutation BrainyrichDeleteHolding($id: ID!) {\n braDeleteHolding(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Transactions\n// ---------------------------------------------------------------------------\n\nexport const LIST_TRANSACTIONS = `\n query BrainyrichListTransactions(\n $accountId: ID\n $type: BraTransactionType\n $pagination: PaginationInput\n ) {\n braListTransactions(accountId: $accountId, type: $type, pagination: $pagination) {\n items { ${TRANSACTION_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const RECORD_TRANSACTION = `\n mutation BrainyrichRecordTransaction($input: BraCreateTransactionInput!) {\n braRecordTransaction(input: $input) {\n ${TRANSACTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Goals (+ goal fundings)\n// ---------------------------------------------------------------------------\n\nexport const GET_GOAL = `\n query BrainyrichGetGoal($id: ID!) {\n braGoal(id: $id) {\n ${GOAL_FIELDS}\n fundings { ${GOAL_FUNDING_FIELDS} }\n }\n }\n`;\n\nexport const LIST_GOALS = `\n query BrainyrichListGoals(\n $householdId: ID\n $status: BraGoalStatus\n $pagination: PaginationInput\n ) {\n braListGoals(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${GOAL_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_GOAL = `\n mutation BrainyrichCreateGoal($input: BraCreateGoalInput!) {\n braCreateGoal(input: $input) {\n ${GOAL_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_GOAL = `\n mutation BrainyrichUpdateGoal($id: ID!, $input: BraUpdateGoalInput!) {\n braUpdateGoal(id: $id, input: $input) {\n ${GOAL_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_GOAL = `\n mutation BrainyrichArchiveGoal($id: ID!) {\n braArchiveGoal(id: $id)\n }\n`;\n\nexport const RECALC_GOAL_PROJECTION = `\n mutation BrainyrichRecalcGoalProjection($id: ID!, $fundedAmount: Float!) {\n braRecalcGoalProjection(id: $id, fundedAmount: $fundedAmount) {\n ${GOAL_FIELDS}\n }\n }\n`;\n\nexport const LIST_GOAL_FUNDINGS = `\n query BrainyrichListGoalFundings($goalId: ID!) {\n braListGoalFundings(goalId: $goalId) {\n ${GOAL_FUNDING_FIELDS}\n }\n }\n`;\n\nexport const LINK_GOAL_FUNDING = `\n mutation BrainyrichLinkGoalFunding($input: BraLinkGoalFundingInput!) {\n braLinkGoalFunding(input: $input) {\n ${GOAL_FUNDING_FIELDS}\n }\n }\n`;\n\nexport const UNLINK_GOAL_FUNDING = `\n mutation BrainyrichUnlinkGoalFunding($id: ID!) {\n braUnlinkGoalFunding(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Households\n// ---------------------------------------------------------------------------\n\nexport const GET_HOUSEHOLD = `\n query BrainyrichGetHousehold($id: ID!) {\n braHousehold(id: $id) {\n ${HOUSEHOLD_FIELDS}\n }\n }\n`;\n\nexport const LIST_HOUSEHOLDS = `\n query BrainyrichListHouseholds(\n $status: BraHouseholdStatus\n $pagination: PaginationInput\n ) {\n braListHouseholds(status: $status, pagination: $pagination) {\n items { ${HOUSEHOLD_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_HOUSEHOLD = `\n mutation BrainyrichCreateHousehold($input: BraCreateHouseholdInput!) {\n braCreateHousehold(input: $input) {\n ${HOUSEHOLD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_HOUSEHOLD = `\n mutation BrainyrichUpdateHousehold($id: ID!, $input: BraUpdateHouseholdInput!) {\n braUpdateHousehold(id: $id, input: $input) {\n ${HOUSEHOLD_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_HOUSEHOLD = `\n mutation BrainyrichArchiveHousehold($id: ID!) {\n braArchiveHousehold(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Model portfolios (+ allocations)\n// ---------------------------------------------------------------------------\n\nexport const GET_MODEL_PORTFOLIO = `\n query BrainyrichGetModelPortfolio($id: ID!) {\n braModelPortfolio(id: $id) {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MODEL_PORTFOLIOS = `\n query BrainyrichListModelPortfolios {\n braListModelPortfolios {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_MODEL_PORTFOLIO = `\n mutation BrainyrichCreateModelPortfolio($input: BraCreateModelPortfolioInput!) {\n braCreateModelPortfolio(input: $input) {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Rebalance proposals\n// ---------------------------------------------------------------------------\n\nexport const LIST_REBALANCE_PROPOSALS = `\n query BrainyrichListRebalanceProposals(\n $householdId: ID\n $portfolioId: ID\n $status: BraRebalanceStatus\n ) {\n braListRebalanceProposals(householdId: $householdId, portfolioId: $portfolioId, status: $status) {\n ${REBALANCE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_REBALANCE_PROPOSAL = `\n mutation BrainyrichCreateRebalanceProposal($input: BraCreateRebalanceProposalInput!) {\n braCreateRebalanceProposal(input: $input) {\n ${REBALANCE_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_REBALANCE_PROPOSAL = `\n mutation BrainyrichTransitionRebalanceProposal($id: ID!, $status: BraRebalanceStatus!) {\n braTransitionRebalanceProposal(id: $id, status: $status) {\n ${REBALANCE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Insights\n// ---------------------------------------------------------------------------\n\nexport const GET_INSIGHT = `\n query BrainyrichGetInsight($id: ID!) {\n braInsight(id: $id) {\n ${INSIGHT_FIELDS}\n }\n }\n`;\n\nexport const LIST_INSIGHTS = `\n query BrainyrichListInsights(\n $severity: BraInsightSeverity\n $status: BraInsightStatus\n $subjectId: ID\n $subjectType: String\n $pagination: PaginationInput\n ) {\n braListInsights(\n severity: $severity\n status: $status\n subjectId: $subjectId\n subjectType: $subjectType\n pagination: $pagination\n ) {\n items { ${INSIGHT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_INSIGHT = `\n mutation BrainyrichCreateInsight($input: BraCreateInsightInput!) {\n braCreateInsight(input: $input) {\n ${INSIGHT_FIELDS}\n }\n }\n`;\n\nexport const ACKNOWLEDGE_INSIGHT = `\n mutation BrainyrichAcknowledgeInsight($id: ID!) {\n braAcknowledgeInsight(id: $id) {\n ${INSIGHT_FIELDS}\n }\n }\n`;\n\nexport const RESOLVE_INSIGHT = `\n mutation BrainyrichResolveInsight($id: ID!) {\n braResolveInsight(id: $id) {\n ${INSIGHT_FIELDS}\n }\n }\n`;\n\nexport const DISMISS_INSIGHT = `\n mutation BrainyrichDismissInsight($id: ID!) {\n braDismissInsight(id: $id) {\n ${INSIGHT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analytics + health\n// ---------------------------------------------------------------------------\n\nexport const NET_WORTH_SUMMARY = `\n query BrainyrichNetWorthSummary($ownerId: ID) {\n braNetWorthSummary(ownerId: $ownerId) {\n ${NET_WORTH_SUMMARY_FIELDS}\n }\n }\n`;\n\nexport const HEALTH = `\n query BrainyrichHealth {\n braHealth\n }\n`;\n","/**\n * Shared zod schemas for the Brainyrich tool surface.\n *\n * Every backend enum (the `Bra*` family) is mirrored as a tight zod enum so\n * Claude Desktop grounds tool calls against the exact allowed values. JSON\n * scalar inputs (targetAllocation, trades, metrics) are modelled as permissive\n * object records — the backend accepts arbitrary JSON, but a record shape\n * gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const AccountStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'CLOSED'])\n .describe('Lifecycle status of a financial account');\n\nexport const AccountTypeEnum = z\n .enum([\n 'ALTERNATIVE',\n 'BANK',\n 'BROKERAGE',\n 'CASH',\n 'CRYPTO',\n 'LIABILITY',\n 'REAL_ESTATE',\n 'RETIREMENT',\n ])\n .describe('Type/classification of a financial account');\n\nexport const AssetClassEnum = z\n .enum(['ALTERNATIVE', 'CASH', 'COMMODITY', 'CRYPTO', 'EQUITY', 'FIXED_INCOME', 'REAL_ESTATE'])\n .describe('Asset class of a holding or model allocation');\n\nexport const GoalStatusEnum = z\n .enum(['ABANDONED', 'ACHIEVED', 'ACTIVE', 'ON_HOLD'])\n .describe('Lifecycle status of a financial goal');\n\nexport const GoalTypeEnum = z\n .enum([\n 'CUSTOM',\n 'EDUCATION',\n 'EMERGENCY_FUND',\n 'HOME',\n 'MAJOR_PURCHASE',\n 'RETIREMENT',\n 'WEALTH_GROWTH',\n ])\n .describe('Category of a financial goal');\n\nexport const HouseholdStatusEnum = z\n .enum(['ACTIVE', 'INACTIVE', 'ONBOARDING', 'PROSPECT'])\n .describe('Lifecycle status of an advisory household');\n\nexport const InsightSeverityEnum = z\n .enum(['CRITICAL', 'HIGH', 'INFO', 'LOW', 'MEDIUM'])\n .describe('Severity of a proactive insight');\n\nexport const InsightStatusEnum = z\n .enum(['ACKNOWLEDGED', 'DISMISSED', 'OPEN', 'RESOLVED'])\n .describe('Lifecycle status of a proactive insight');\n\nexport const InsightTypeEnum = z\n .enum([\n 'CASH_DRAG',\n 'CONCENTRATION_RISK',\n 'DRIFT',\n 'FEE_ANOMALY',\n 'GOAL_AT_RISK',\n 'REBALANCE_DUE',\n 'TAX_OPPORTUNITY',\n ])\n .describe('Category of a proactive insight signal');\n\nexport const PortfolioStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT'])\n .describe('Lifecycle status of an investment portfolio');\n\nexport const RebalanceStatusEnum = z\n .enum(['APPROVED', 'CANCELLED', 'DRAFT', 'EXECUTED', 'PROPOSED', 'REJECTED'])\n .describe('Review-lifecycle status of a rebalance proposal');\n\nexport const RiskProfileEnum = z\n .enum(['AGGRESSIVE', 'BALANCED', 'CONSERVATIVE', 'GROWTH', 'MODERATE'])\n .describe('Risk profile of a household or model portfolio');\n\nexport const TransactionTypeEnum = z\n .enum(['BUY', 'DEPOSIT', 'DIVIDEND', 'FEE', 'INTEREST', 'SELL', 'TRANSFER', 'WITHDRAWAL'])\n .describe('Type of an account transaction');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Brainyrich account tools — financial-account directory CRUD.\n *\n * Surface (5): accounts_{get,list,create,update,archive}.\n * Backed by braAccount / braListAccounts / braCreateAccount /\n * braUpdateAccount / braArchiveAccount — all called by their real names.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { AccountStatusEnum, AccountTypeEnum } from './shared.js';\n\nexport function registerAccountTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'accounts_get')),\n {\n title: 'Get Account',\n description:\n 'Fetch a single Brainyrich financial account by ID, including its holdings and recent transactions.',\n inputSchema: { id: z.string().describe('Account ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braAccount: Record<string, unknown> | null;\n }>(ops.GET_ACCOUNT, { id });\n if (!data.braAccount) return errorResult(`Account ${id} not found`);\n return jsonResult(data.braAccount);\n } catch (error) {\n ctx.logger.error('brainyrich accounts_get failed', { error: String(error) });\n return errorResult(\n `Failed to get account: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'accounts_list')),\n {\n title: 'List Accounts',\n description:\n 'List financial accounts in the bound workspace with optional household/status filters and pagination.',\n inputSchema: {\n householdId: z.string().optional().describe('Filter by household ID'),\n status: AccountStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ householdId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListAccounts: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ACCOUNTS, {\n householdId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListAccounts);\n } catch (error) {\n ctx.logger.error('brainyrich accounts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list accounts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'accounts_create')),\n {\n title: 'Create Account',\n description:\n 'Open a new financial account. `name` is required; `type` defaults to BROKERAGE and `status` to ACTIVE.',\n inputSchema: {\n name: z.string().min(1).describe('Account display name'),\n type: AccountTypeEnum.optional().describe('Account type (default BROKERAGE)'),\n status: AccountStatusEnum.optional().describe('Lifecycle status (default ACTIVE)'),\n currency: z.string().optional().describe('ISO currency code (default workspace currency)'),\n cashBalance: z.number().optional().describe('Opening cash balance'),\n accountMask: z.string().optional().describe('Masked account number, e.g. \"****1234\"'),\n institution: z.string().optional().describe('Custodian / institution name'),\n isManual: z.boolean().optional().describe('Whether the account is manually tracked'),\n householdId: z.string().optional().describe('Owning household ID'),\n ownerId: z.string().optional().describe('Owning user ID (defaults to the caller)'),\n },\n },\n async ({\n name,\n type,\n status,\n currency,\n cashBalance,\n accountMask,\n institution,\n isManual,\n householdId,\n ownerId,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (currency !== undefined) input.currency = currency;\n if (cashBalance !== undefined) input.cashBalance = cashBalance;\n if (accountMask !== undefined) input.accountMask = accountMask;\n if (institution !== undefined) input.institution = institution;\n if (isManual !== undefined) input.isManual = isManual;\n if (householdId !== undefined) input.householdId = householdId;\n if (ownerId !== undefined) input.ownerId = ownerId;\n\n const data = await ctx.gql.workspace.request<{\n braCreateAccount: Record<string, unknown>;\n }>(ops.CREATE_ACCOUNT, { input });\n return jsonResult(data.braCreateAccount);\n } catch (error) {\n ctx.logger.error('brainyrich accounts_create failed', { error: String(error) });\n return errorResult(\n `Failed to create account: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'accounts_update')),\n {\n title: 'Update Account',\n description: 'Update a financial account. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Account ID'),\n name: z.string().optional().describe('Updated display name'),\n type: AccountTypeEnum.optional().describe('Updated account type'),\n status: AccountStatusEnum.optional().describe('Updated lifecycle status'),\n currency: z.string().optional().describe('Updated currency code'),\n cashBalance: z.number().optional().describe('Updated cash balance'),\n accountMask: z.string().optional().describe('Updated masked account number'),\n institution: z.string().optional().describe('Updated institution name'),\n householdId: z.string().optional().describe('Updated owning household ID'),\n },\n },\n async ({\n id,\n name,\n type,\n status,\n currency,\n cashBalance,\n accountMask,\n institution,\n householdId,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (currency !== undefined) input.currency = currency;\n if (cashBalance !== undefined) input.cashBalance = cashBalance;\n if (accountMask !== undefined) input.accountMask = accountMask;\n if (institution !== undefined) input.institution = institution;\n if (householdId !== undefined) input.householdId = householdId;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/type/status/currency/cashBalance/accountMask/institution/householdId',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n braUpdateAccount: Record<string, unknown>;\n }>(ops.UPDATE_ACCOUNT, { id, input });\n return jsonResult(data.braUpdateAccount);\n } catch (error) {\n ctx.logger.error('brainyrich accounts_update failed', { error: String(error) });\n return errorResult(\n `Failed to update account: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'accounts_archive')),\n {\n title: 'Archive Account',\n description: 'Archive (soft-delete) a financial account by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Account ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braArchiveAccount: boolean }>(\n ops.ARCHIVE_ACCOUNT,\n { id },\n );\n return jsonResult({ archived: data.braArchiveAccount, id });\n } catch (error) {\n ctx.logger.error('brainyrich accounts_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive account: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich portfolio tools — investment-portfolio CRUD.\n *\n * Surface (5): portfolios_{get,list,create,update,archive}.\n * Backed by braPortfolio / braListPortfolios / braCreatePortfolio /\n * braUpdatePortfolio / braArchivePortfolio.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { PortfolioStatusEnum, JsonObject } from './shared.js';\n\nexport function registerPortfolioTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_get')),\n {\n title: 'Get Portfolio',\n description: 'Fetch a single investment portfolio by ID, including its holdings.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braPortfolio: Record<string, unknown> | null;\n }>(ops.GET_PORTFOLIO, { id });\n if (!data.braPortfolio) return errorResult(`Portfolio ${id} not found`);\n return jsonResult(data.braPortfolio);\n } catch (error) {\n ctx.logger.error('brainyrich portfolios_get failed', { error: String(error) });\n return errorResult(\n `Failed to get portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_list')),\n {\n title: 'List Portfolios',\n description:\n 'List investment portfolios with optional household/status filters and pagination.',\n inputSchema: {\n householdId: z.string().optional().describe('Filter by household ID'),\n status: PortfolioStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ householdId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListPortfolios: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PORTFOLIOS, {\n householdId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListPortfolios);\n } catch (error) {\n ctx.logger.error('brainyrich portfolios_list failed', { error: String(error) });\n return errorResult(\n `Failed to list portfolios: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_create')),\n {\n title: 'Create Portfolio',\n description:\n 'Create an investment portfolio. `name` is required. Optionally bind a model portfolio (`modelPortfolioId`) and a target allocation JSON.',\n inputSchema: {\n name: z.string().min(1).describe('Portfolio display name'),\n description: z.string().optional().describe('Portfolio description'),\n ownerId: z.string().optional().describe('Owning user ID (defaults to the caller)'),\n householdId: z.string().optional().describe('Owning household ID'),\n modelPortfolioId: z.string().optional().describe('Model portfolio to track'),\n baseCurrency: z.string().optional().describe('Base currency code'),\n driftThresholdPct: z\n .number()\n .optional()\n .describe('Drift threshold percentage that triggers rebalance signals'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n targetAllocation: JsonObject.optional().describe(\n 'Target allocation JSON (asset-class → target percentage)',\n ),\n },\n },\n async ({\n name,\n description,\n ownerId,\n householdId,\n modelPortfolioId,\n baseCurrency,\n driftThresholdPct,\n tags,\n targetAllocation,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (householdId !== undefined) input.householdId = householdId;\n if (modelPortfolioId !== undefined) input.modelPortfolioId = modelPortfolioId;\n if (baseCurrency !== undefined) input.baseCurrency = baseCurrency;\n if (driftThresholdPct !== undefined) input.driftThresholdPct = driftThresholdPct;\n if (tags !== undefined) input.tags = tags;\n if (targetAllocation !== undefined) input.targetAllocation = targetAllocation;\n\n const data = await ctx.gql.workspace.request<{\n braCreatePortfolio: Record<string, unknown>;\n }>(ops.CREATE_PORTFOLIO, { input });\n return jsonResult(data.braCreatePortfolio);\n } catch (error) {\n ctx.logger.error('brainyrich portfolios_create failed', { error: String(error) });\n return errorResult(\n `Failed to create portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_update')),\n {\n title: 'Update Portfolio',\n description: 'Update an investment portfolio. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Portfolio ID'),\n name: z.string().optional().describe('Updated display name'),\n description: z.string().optional().describe('Updated description'),\n status: PortfolioStatusEnum.optional().describe('Updated lifecycle status'),\n baseCurrency: z.string().optional().describe('Updated base currency'),\n modelPortfolioId: z.string().optional().describe('Updated model portfolio binding'),\n driftThresholdPct: z.number().optional().describe('Updated drift threshold percentage'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n targetAllocation: JsonObject.optional().describe('Updated target allocation JSON'),\n },\n },\n async ({\n id,\n name,\n description,\n status,\n baseCurrency,\n modelPortfolioId,\n driftThresholdPct,\n tags,\n targetAllocation,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (baseCurrency !== undefined) input.baseCurrency = baseCurrency;\n if (modelPortfolioId !== undefined) input.modelPortfolioId = modelPortfolioId;\n if (driftThresholdPct !== undefined) input.driftThresholdPct = driftThresholdPct;\n if (tags !== undefined) input.tags = tags;\n if (targetAllocation !== undefined) input.targetAllocation = targetAllocation;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/status/baseCurrency/modelPortfolioId/driftThresholdPct/tags/targetAllocation',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n braUpdatePortfolio: Record<string, unknown>;\n }>(ops.UPDATE_PORTFOLIO, { id, input });\n return jsonResult(data.braUpdatePortfolio);\n } catch (error) {\n ctx.logger.error('brainyrich portfolios_update failed', { error: String(error) });\n return errorResult(\n `Failed to update portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_archive')),\n {\n title: 'Archive Portfolio',\n description: 'Archive (soft-delete) a portfolio by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braArchivePortfolio: boolean }>(\n ops.ARCHIVE_PORTFOLIO,\n { id },\n );\n return jsonResult({ archived: data.braArchivePortfolio, id });\n } catch (error) {\n ctx.logger.error('brainyrich portfolios_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich holding tools — positions within accounts/portfolios.\n *\n * Surface (4): holdings_{list,create,update,delete}.\n * Backed by braListHoldings / braCreateHolding / braUpdateHolding /\n * braDeleteHolding. braListHoldings returns a plain array (no pagination).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { AssetClassEnum } from './shared.js';\n\nexport function registerHoldingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'holdings_list')),\n {\n title: 'List Holdings',\n description:\n 'List holdings (positions), optionally filtered by account and/or portfolio. Each holding includes a server-derived marketValue.',\n inputSchema: {\n accountId: z.string().optional().describe('Filter by account ID'),\n portfolioId: z.string().optional().describe('Filter by portfolio ID'),\n },\n },\n async ({ accountId, portfolioId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListHoldings: Array<Record<string, unknown>>;\n }>(ops.LIST_HOLDINGS, { accountId, portfolioId });\n return jsonResult(data.braListHoldings);\n } catch (error) {\n ctx.logger.error('brainyrich holdings_list failed', { error: String(error) });\n return errorResult(\n `Failed to list holdings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'holdings_create')),\n {\n title: 'Create Holding',\n description:\n 'Add a holding (position) to an account. `accountId` and `symbol` are required; `assetClass` defaults to EQUITY.',\n inputSchema: {\n accountId: z.string().min(1).describe('Owning account ID'),\n symbol: z.string().min(1).describe('Instrument symbol/ticker'),\n name: z.string().optional().describe('Instrument display name'),\n assetClass: AssetClassEnum.optional().describe('Asset class (default EQUITY)'),\n quantity: z.number().optional().describe('Units held'),\n costBasis: z.number().optional().describe('Total cost basis'),\n lastPrice: z.number().optional().describe('Last known unit price'),\n currency: z.string().optional().describe('Currency code'),\n portfolioId: z.string().optional().describe('Portfolio this holding belongs to'),\n asOf: z.string().optional().describe('As-of timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({\n accountId,\n symbol,\n name,\n assetClass,\n quantity,\n costBasis,\n lastPrice,\n currency,\n portfolioId,\n asOf,\n }) => {\n try {\n const input: Record<string, unknown> = { accountId, symbol };\n if (name !== undefined) input.name = name;\n if (assetClass !== undefined) input.assetClass = assetClass;\n if (quantity !== undefined) input.quantity = quantity;\n if (costBasis !== undefined) input.costBasis = costBasis;\n if (lastPrice !== undefined) input.lastPrice = lastPrice;\n if (currency !== undefined) input.currency = currency;\n if (portfolioId !== undefined) input.portfolioId = portfolioId;\n if (asOf !== undefined) input.asOf = asOf;\n\n const data = await ctx.gql.workspace.request<{\n braCreateHolding: Record<string, unknown>;\n }>(ops.CREATE_HOLDING, { input });\n return jsonResult(data.braCreateHolding);\n } catch (error) {\n ctx.logger.error('brainyrich holdings_create failed', { error: String(error) });\n return errorResult(\n `Failed to create holding: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'holdings_update')),\n {\n title: 'Update Holding',\n description:\n 'Update a holding (e.g. mark price, quantity, cost basis). At least one mutable field required.',\n inputSchema: {\n id: z.string().describe('Holding ID'),\n name: z.string().optional().describe('Updated instrument name'),\n assetClass: AssetClassEnum.optional().describe('Updated asset class'),\n quantity: z.number().optional().describe('Updated units held'),\n costBasis: z.number().optional().describe('Updated cost basis'),\n lastPrice: z.number().optional().describe('Updated last price'),\n portfolioId: z.string().optional().describe('Updated portfolio binding'),\n asOf: z.string().optional().describe('Updated as-of timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({ id, name, assetClass, quantity, costBasis, lastPrice, portfolioId, asOf }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (assetClass !== undefined) input.assetClass = assetClass;\n if (quantity !== undefined) input.quantity = quantity;\n if (costBasis !== undefined) input.costBasis = costBasis;\n if (lastPrice !== undefined) input.lastPrice = lastPrice;\n if (portfolioId !== undefined) input.portfolioId = portfolioId;\n if (asOf !== undefined) input.asOf = asOf;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/assetClass/quantity/costBasis/lastPrice/portfolioId/asOf',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n braUpdateHolding: Record<string, unknown>;\n }>(ops.UPDATE_HOLDING, { id, input });\n return jsonResult(data.braUpdateHolding);\n } catch (error) {\n ctx.logger.error('brainyrich holdings_update failed', { error: String(error) });\n return errorResult(\n `Failed to update holding: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'holdings_delete')),\n {\n title: 'Delete Holding',\n description: 'Delete a holding by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Holding ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braDeleteHolding: boolean }>(\n ops.DELETE_HOLDING,\n { id },\n );\n return jsonResult({ deleted: data.braDeleteHolding, id });\n } catch (error) {\n ctx.logger.error('brainyrich holdings_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete holding: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich transaction tools — account-ledger entries.\n *\n * Surface (2): transactions_list, transactions_record.\n * Backed by braListTransactions (connection) and braRecordTransaction.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { TransactionTypeEnum } from './shared.js';\n\nexport function registerTransactionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'transactions_list')),\n {\n title: 'List Transactions',\n description:\n 'List account transactions, optionally filtered by account and/or type, with pagination.',\n inputSchema: {\n accountId: z.string().optional().describe('Filter by account ID'),\n type: TransactionTypeEnum.optional().describe('Filter by transaction type'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ accountId, type, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListTransactions: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_TRANSACTIONS, {\n accountId,\n type,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListTransactions);\n } catch (error) {\n ctx.logger.error('brainyrich transactions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list transactions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'transactions_record')),\n {\n title: 'Record Transaction',\n description:\n 'Record a transaction against an account. `accountId`, `type`, and `tradeDate` are required. Trade types (BUY/SELL/etc.) may carry symbol/quantity/price; cash types (DEPOSIT/WITHDRAWAL/etc.) carry amount.',\n inputSchema: {\n accountId: z.string().min(1).describe('Account the transaction posts to'),\n type: TransactionTypeEnum.describe('Transaction type'),\n tradeDate: z.string().min(1).describe('Trade date (ISO-8601 DateTime)'),\n symbol: z.string().optional().describe('Instrument symbol (trades)'),\n holdingId: z.string().optional().describe('Related holding ID (trades)'),\n quantity: z.number().optional().describe('Units transacted'),\n price: z.number().optional().describe('Unit price'),\n amount: z.number().optional().describe('Cash amount (cash transactions)'),\n fee: z.number().optional().describe('Transaction fee'),\n currency: z.string().optional().describe('Currency code'),\n settleDate: z.string().optional().describe('Settlement date (ISO-8601 DateTime)'),\n notes: z.string().optional().describe('Free-form notes'),\n },\n },\n async ({\n accountId,\n type,\n tradeDate,\n symbol,\n holdingId,\n quantity,\n price,\n amount,\n fee,\n currency,\n settleDate,\n notes,\n }) => {\n try {\n const input: Record<string, unknown> = { accountId, type, tradeDate };\n if (symbol !== undefined) input.symbol = symbol;\n if (holdingId !== undefined) input.holdingId = holdingId;\n if (quantity !== undefined) input.quantity = quantity;\n if (price !== undefined) input.price = price;\n if (amount !== undefined) input.amount = amount;\n if (fee !== undefined) input.fee = fee;\n if (currency !== undefined) input.currency = currency;\n if (settleDate !== undefined) input.settleDate = settleDate;\n if (notes !== undefined) input.notes = notes;\n\n const data = await ctx.gql.workspace.request<{\n braRecordTransaction: Record<string, unknown>;\n }>(ops.RECORD_TRANSACTION, { input });\n return jsonResult(data.braRecordTransaction);\n } catch (error) {\n ctx.logger.error('brainyrich transactions_record failed', { error: String(error) });\n return errorResult(\n `Failed to record transaction: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich goal tools — financial goals + their funding links + projection.\n *\n * Surface (9): goals_{get,list,create,update,archive,recalc_projection},\n * goals_list_fundings, goals_link_funding, goals_unlink_funding.\n * Backed by braGoal / braListGoals / braCreateGoal / braUpdateGoal /\n * braArchiveGoal / braRecalcGoalProjection / braListGoalFundings /\n * braLinkGoalFunding / braUnlinkGoalFunding.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { GoalStatusEnum, GoalTypeEnum } from './shared.js';\n\nexport function registerGoalTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_get')),\n {\n title: 'Get Goal',\n description: 'Fetch a single financial goal by ID, including its funding links.',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braGoal: Record<string, unknown> | null;\n }>(ops.GET_GOAL, { id });\n if (!data.braGoal) return errorResult(`Goal ${id} not found`);\n return jsonResult(data.braGoal);\n } catch (error) {\n ctx.logger.error('brainyrich goals_get failed', { error: String(error) });\n return errorResult(\n `Failed to get goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_list')),\n {\n title: 'List Goals',\n description: 'List financial goals with optional household/status filters and pagination.',\n inputSchema: {\n householdId: z.string().optional().describe('Filter by household ID'),\n status: GoalStatusEnum.optional().describe('Filter by goal status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ householdId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListGoals: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_GOALS, {\n householdId,\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListGoals);\n } catch (error) {\n ctx.logger.error('brainyrich goals_list failed', { error: String(error) });\n return errorResult(\n `Failed to list goals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_create')),\n {\n title: 'Create Goal',\n description:\n 'Create a financial goal. `name`, `targetAmount`, and `targetDate` are required; `type` defaults to CUSTOM.',\n inputSchema: {\n name: z.string().min(1).describe('Goal name'),\n targetAmount: z.number().describe('Target amount to reach'),\n targetDate: z.string().min(1).describe('Target date (ISO-8601 DateTime)'),\n type: GoalTypeEnum.optional().describe('Goal category (default CUSTOM)'),\n monthlyContribution: z.number().optional().describe('Planned monthly contribution'),\n priority: z.number().int().optional().describe('Priority rank'),\n currency: z.string().optional().describe('Currency code'),\n ownerId: z.string().optional().describe('Owning user ID (defaults to the caller)'),\n householdId: z.string().optional().describe('Owning household ID'),\n notes: z.string().optional().describe('Free-form notes'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n targetAmount,\n targetDate,\n type,\n monthlyContribution,\n priority,\n currency,\n ownerId,\n householdId,\n notes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name, targetAmount, targetDate };\n if (type !== undefined) input.type = type;\n if (monthlyContribution !== undefined) input.monthlyContribution = monthlyContribution;\n if (priority !== undefined) input.priority = priority;\n if (currency !== undefined) input.currency = currency;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (householdId !== undefined) input.householdId = householdId;\n if (notes !== undefined) input.notes = notes;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n braCreateGoal: Record<string, unknown>;\n }>(ops.CREATE_GOAL, { input });\n return jsonResult(data.braCreateGoal);\n } catch (error) {\n ctx.logger.error('brainyrich goals_create failed', { error: String(error) });\n return errorResult(\n `Failed to create goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_update')),\n {\n title: 'Update Goal',\n description: 'Update a financial goal. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Goal ID'),\n name: z.string().optional().describe('Updated name'),\n type: GoalTypeEnum.optional().describe('Updated goal category'),\n status: GoalStatusEnum.optional().describe('Updated status'),\n priority: z.number().int().optional().describe('Updated priority rank'),\n targetAmount: z.number().optional().describe('Updated target amount'),\n targetDate: z.string().optional().describe('Updated target date (ISO-8601 DateTime)'),\n monthlyContribution: z.number().optional().describe('Updated monthly contribution'),\n currency: z.string().optional().describe('Updated currency code'),\n notes: z.string().optional().describe('Updated notes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n type,\n status,\n priority,\n targetAmount,\n targetDate,\n monthlyContribution,\n currency,\n notes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (priority !== undefined) input.priority = priority;\n if (targetAmount !== undefined) input.targetAmount = targetAmount;\n if (targetDate !== undefined) input.targetDate = targetDate;\n if (monthlyContribution !== undefined) input.monthlyContribution = monthlyContribution;\n if (currency !== undefined) input.currency = currency;\n if (notes !== undefined) input.notes = notes;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/type/status/priority/targetAmount/targetDate/monthlyContribution/currency/notes/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n braUpdateGoal: Record<string, unknown>;\n }>(ops.UPDATE_GOAL, { id, input });\n return jsonResult(data.braUpdateGoal);\n } catch (error) {\n ctx.logger.error('brainyrich goals_update failed', { error: String(error) });\n return errorResult(\n `Failed to update goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_archive')),\n {\n title: 'Archive Goal',\n description: 'Archive (soft-delete) a goal by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Goal ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braArchiveGoal: boolean }>(\n ops.ARCHIVE_GOAL,\n { id },\n );\n return jsonResult({ archived: data.braArchiveGoal, id });\n } catch (error) {\n ctx.logger.error('brainyrich goals_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive goal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_recalc_projection')),\n {\n title: 'Recalculate Goal Projection',\n description:\n \"Recompute and persist a goal's projection (AHEAD/ON_TRACK/BEHIND/AT_RISK) from its funded value vs. target.\",\n inputSchema: {\n id: z.string().describe('Goal ID'),\n fundedAmount: z.number().describe('Currently funded amount toward the goal'),\n },\n },\n async ({ id, fundedAmount }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braRecalcGoalProjection: Record<string, unknown>;\n }>(ops.RECALC_GOAL_PROJECTION, { id, fundedAmount });\n return jsonResult(data.braRecalcGoalProjection);\n } catch (error) {\n ctx.logger.error('brainyrich goals_recalc_projection failed', { error: String(error) });\n return errorResult(\n `Failed to recalc goal projection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_list_fundings')),\n {\n title: 'List Goal Fundings',\n description: 'List the funding links (account allocations) attached to a goal.',\n inputSchema: { goalId: z.string().describe('Goal ID') },\n },\n async ({ goalId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListGoalFundings: Array<Record<string, unknown>>;\n }>(ops.LIST_GOAL_FUNDINGS, { goalId });\n return jsonResult(data.braListGoalFundings);\n } catch (error) {\n ctx.logger.error('brainyrich goals_list_fundings failed', { error: String(error) });\n return errorResult(\n `Failed to list goal fundings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_link_funding')),\n {\n title: 'Link Goal Funding',\n description:\n 'Link an account to a goal as a funding source. Provide either an allocation percentage or a fixed amount.',\n inputSchema: {\n goalId: z.string().min(1).describe('Goal to fund'),\n accountId: z.string().min(1).describe('Funding account'),\n allocationPct: z\n .number()\n .optional()\n .describe('Percentage of the account allocated to the goal'),\n fixedAmount: z.number().optional().describe('Fixed amount allocated to the goal'),\n },\n },\n async ({ goalId, accountId, allocationPct, fixedAmount }) => {\n try {\n const input: Record<string, unknown> = { goalId, accountId };\n if (allocationPct !== undefined) input.allocationPct = allocationPct;\n if (fixedAmount !== undefined) input.fixedAmount = fixedAmount;\n\n const data = await ctx.gql.workspace.request<{\n braLinkGoalFunding: Record<string, unknown>;\n }>(ops.LINK_GOAL_FUNDING, { input });\n return jsonResult(data.braLinkGoalFunding);\n } catch (error) {\n ctx.logger.error('brainyrich goals_link_funding failed', { error: String(error) });\n return errorResult(\n `Failed to link goal funding: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'goals_unlink_funding')),\n {\n title: 'Unlink Goal Funding',\n description: 'Remove a goal funding link by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Goal funding ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braUnlinkGoalFunding: boolean }>(\n ops.UNLINK_GOAL_FUNDING,\n { id },\n );\n return jsonResult({ unlinked: data.braUnlinkGoalFunding, id });\n } catch (error) {\n ctx.logger.error('brainyrich goals_unlink_funding failed', { error: String(error) });\n return errorResult(\n `Failed to unlink goal funding: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich household tools — advisory-household CRM CRUD.\n *\n * Surface (5): households_{get,list,create,update,archive}.\n * Backed by braHousehold / braListHouseholds / braCreateHousehold /\n * braUpdateHousehold / braArchiveHousehold.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { HouseholdStatusEnum, RiskProfileEnum } from './shared.js';\n\nexport function registerHouseholdTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'households_get')),\n {\n title: 'Get Household',\n description: 'Fetch a single advisory household by ID.',\n inputSchema: { id: z.string().describe('Household ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braHousehold: Record<string, unknown> | null;\n }>(ops.GET_HOUSEHOLD, { id });\n if (!data.braHousehold) return errorResult(`Household ${id} not found`);\n return jsonResult(data.braHousehold);\n } catch (error) {\n ctx.logger.error('brainyrich households_get failed', { error: String(error) });\n return errorResult(\n `Failed to get household: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'households_list')),\n {\n title: 'List Households',\n description: 'List advisory households with an optional status filter and pagination.',\n inputSchema: {\n status: HouseholdStatusEnum.optional().describe('Filter by household status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListHouseholds: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_HOUSEHOLDS, {\n status,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListHouseholds);\n } catch (error) {\n ctx.logger.error('brainyrich households_list failed', { error: String(error) });\n return errorResult(\n `Failed to list households: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'households_create')),\n {\n title: 'Create Household',\n description:\n 'Create an advisory household. `name` is required; `riskProfile` defaults to BALANCED and `status` to PROSPECT.',\n inputSchema: {\n name: z.string().min(1).describe('Household name'),\n status: HouseholdStatusEnum.optional().describe('Lifecycle status (default PROSPECT)'),\n riskProfile: RiskProfileEnum.optional().describe('Risk profile (default BALANCED)'),\n currency: z.string().optional().describe('Reporting currency code'),\n advisorId: z.string().optional().describe('Assigned advisor user ID'),\n primaryContactName: z.string().optional().describe('Primary contact name'),\n primaryContactEmail: z.string().optional().describe('Primary contact email'),\n notes: z.string().optional().describe('Free-form notes'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n status,\n riskProfile,\n currency,\n advisorId,\n primaryContactName,\n primaryContactEmail,\n notes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (status !== undefined) input.status = status;\n if (riskProfile !== undefined) input.riskProfile = riskProfile;\n if (currency !== undefined) input.currency = currency;\n if (advisorId !== undefined) input.advisorId = advisorId;\n if (primaryContactName !== undefined) input.primaryContactName = primaryContactName;\n if (primaryContactEmail !== undefined) input.primaryContactEmail = primaryContactEmail;\n if (notes !== undefined) input.notes = notes;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n braCreateHousehold: Record<string, unknown>;\n }>(ops.CREATE_HOUSEHOLD, { input });\n return jsonResult(data.braCreateHousehold);\n } catch (error) {\n ctx.logger.error('brainyrich households_create failed', { error: String(error) });\n return errorResult(\n `Failed to create household: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'households_update')),\n {\n title: 'Update Household',\n description: 'Update an advisory household. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Household ID'),\n name: z.string().optional().describe('Updated name'),\n status: HouseholdStatusEnum.optional().describe('Updated status'),\n riskProfile: RiskProfileEnum.optional().describe('Updated risk profile'),\n aum: z.number().optional().describe('Updated assets-under-management figure'),\n currency: z.string().optional().describe('Updated currency code'),\n primaryContactName: z.string().optional().describe('Updated primary contact name'),\n primaryContactEmail: z.string().optional().describe('Updated primary contact email'),\n notes: z.string().optional().describe('Updated notes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n status,\n riskProfile,\n aum,\n currency,\n primaryContactName,\n primaryContactEmail,\n notes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (status !== undefined) input.status = status;\n if (riskProfile !== undefined) input.riskProfile = riskProfile;\n if (aum !== undefined) input.aum = aum;\n if (currency !== undefined) input.currency = currency;\n if (primaryContactName !== undefined) input.primaryContactName = primaryContactName;\n if (primaryContactEmail !== undefined) input.primaryContactEmail = primaryContactEmail;\n if (notes !== undefined) input.notes = notes;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/status/riskProfile/aum/currency/primaryContactName/primaryContactEmail/notes/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n braUpdateHousehold: Record<string, unknown>;\n }>(ops.UPDATE_HOUSEHOLD, { id, input });\n return jsonResult(data.braUpdateHousehold);\n } catch (error) {\n ctx.logger.error('brainyrich households_update failed', { error: String(error) });\n return errorResult(\n `Failed to update household: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'households_archive')),\n {\n title: 'Archive Household',\n description: 'Archive (soft-delete) a household by ID. Returns true on success.',\n inputSchema: { id: z.string().describe('Household ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ braArchiveHousehold: boolean }>(\n ops.ARCHIVE_HOUSEHOLD,\n { id },\n );\n return jsonResult({ archived: data.braArchiveHousehold, id });\n } catch (error) {\n ctx.logger.error('brainyrich households_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive household: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich model-portfolio tools — target-allocation templates.\n *\n * Surface (3): model_portfolios_{get,list,create}.\n * Backed by braModelPortfolio / braListModelPortfolios (plain array) /\n * braCreateModelPortfolio. Each model portfolio carries a list of\n * asset-class allocations.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { AssetClassEnum, RiskProfileEnum } from './shared.js';\n\nconst AllocationSchema = z\n .object({\n assetClass: AssetClassEnum.describe('Asset class for this allocation slice'),\n targetPct: z.number().describe('Target percentage for this asset class'),\n })\n .describe('A single model-portfolio asset-class allocation');\n\nexport function registerModelPortfolioTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'model_portfolios_get')),\n {\n title: 'Get Model Portfolio',\n description: 'Fetch a single model portfolio by ID, including its asset-class allocations.',\n inputSchema: { id: z.string().describe('Model portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braModelPortfolio: Record<string, unknown> | null;\n }>(ops.GET_MODEL_PORTFOLIO, { id });\n if (!data.braModelPortfolio) return errorResult(`Model portfolio ${id} not found`);\n return jsonResult(data.braModelPortfolio);\n } catch (error) {\n ctx.logger.error('brainyrich model_portfolios_get failed', { error: String(error) });\n return errorResult(\n `Failed to get model portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'model_portfolios_list')),\n {\n title: 'List Model Portfolios',\n description: 'List all model portfolios in the bound workspace, each with its allocations.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListModelPortfolios: Array<Record<string, unknown>>;\n }>(ops.LIST_MODEL_PORTFOLIOS, {});\n return jsonResult(data.braListModelPortfolios);\n } catch (error) {\n ctx.logger.error('brainyrich model_portfolios_list failed', { error: String(error) });\n return errorResult(\n `Failed to list model portfolios: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'model_portfolios_create')),\n {\n title: 'Create Model Portfolio',\n description:\n 'Create a model portfolio (allocation template). `name` is required; `riskProfile` defaults to BALANCED. Provide allocations as asset-class/target-percentage slices.',\n inputSchema: {\n name: z.string().min(1).describe('Model portfolio name'),\n description: z.string().optional().describe('Description'),\n baseCurrency: z.string().optional().describe('Base currency code'),\n riskProfile: RiskProfileEnum.optional().describe('Risk profile (default BALANCED)'),\n allocations: z\n .array(AllocationSchema)\n .optional()\n .describe('Asset-class allocation slices (target percentages)'),\n },\n },\n async ({ name, description, baseCurrency, riskProfile, allocations }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (baseCurrency !== undefined) input.baseCurrency = baseCurrency;\n if (riskProfile !== undefined) input.riskProfile = riskProfile;\n if (allocations !== undefined) input.allocations = allocations;\n\n const data = await ctx.gql.workspace.request<{\n braCreateModelPortfolio: Record<string, unknown>;\n }>(ops.CREATE_MODEL_PORTFOLIO, { input });\n return jsonResult(data.braCreateModelPortfolio);\n } catch (error) {\n ctx.logger.error('brainyrich model_portfolios_create failed', { error: String(error) });\n return errorResult(\n `Failed to create model portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich rebalance-proposal tools — drift-correction review workflow.\n *\n * Surface (3): rebalances_{list,create,transition}.\n * Backed by braListRebalanceProposals (plain array) /\n * braCreateRebalanceProposal / braTransitionRebalanceProposal.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { RebalanceStatusEnum, JsonObject } from './shared.js';\n\nexport function registerRebalanceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'rebalances_list')),\n {\n title: 'List Rebalance Proposals',\n description:\n 'List rebalance proposals, optionally filtered by household, portfolio, and/or status.',\n inputSchema: {\n householdId: z.string().optional().describe('Filter by household ID'),\n portfolioId: z.string().optional().describe('Filter by portfolio ID'),\n status: RebalanceStatusEnum.optional().describe('Filter by proposal status'),\n },\n },\n async ({ householdId, portfolioId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListRebalanceProposals: Array<Record<string, unknown>>;\n }>(ops.LIST_REBALANCE_PROPOSALS, { householdId, portfolioId, status });\n return jsonResult(data.braListRebalanceProposals);\n } catch (error) {\n ctx.logger.error('brainyrich rebalances_list failed', { error: String(error) });\n return errorResult(\n `Failed to list rebalance proposals: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'rebalances_create')),\n {\n title: 'Create Rebalance Proposal',\n description:\n 'Create a rebalance proposal for a portfolio. `portfolioId` is required; `trades` is a JSON array of proposed trades.',\n inputSchema: {\n portfolioId: z.string().min(1).describe('Portfolio to rebalance'),\n householdId: z.string().optional().describe('Owning household ID'),\n driftPct: z.number().optional().describe('Current drift percentage'),\n rationale: z.string().optional().describe('Rationale / notes for the proposal'),\n trades: z\n .union([JsonObject, z.array(z.unknown())])\n .optional()\n .describe('Proposed trades JSON (array of buy/sell instructions)'),\n },\n },\n async ({ portfolioId, householdId, driftPct, rationale, trades }) => {\n try {\n const input: Record<string, unknown> = { portfolioId };\n if (householdId !== undefined) input.householdId = householdId;\n if (driftPct !== undefined) input.driftPct = driftPct;\n if (rationale !== undefined) input.rationale = rationale;\n if (trades !== undefined) input.trades = trades;\n\n const data = await ctx.gql.workspace.request<{\n braCreateRebalanceProposal: Record<string, unknown>;\n }>(ops.CREATE_REBALANCE_PROPOSAL, { input });\n return jsonResult(data.braCreateRebalanceProposal);\n } catch (error) {\n ctx.logger.error('brainyrich rebalances_create failed', { error: String(error) });\n return errorResult(\n `Failed to create rebalance proposal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'rebalances_transition')),\n {\n title: 'Transition Rebalance Proposal',\n description:\n 'Advance a rebalance proposal through its review lifecycle (validated transitions: DRAFT → PROPOSED → APPROVED → EXECUTED, or REJECTED/CANCELLED).',\n inputSchema: {\n id: z.string().describe('Rebalance proposal ID'),\n status: RebalanceStatusEnum.describe('Target status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braTransitionRebalanceProposal: Record<string, unknown>;\n }>(ops.TRANSITION_REBALANCE_PROPOSAL, { id, status });\n return jsonResult(data.braTransitionRebalanceProposal);\n } catch (error) {\n ctx.logger.error('brainyrich rebalances_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition rebalance proposal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich insight tools — proactive signals + their triage lifecycle.\n *\n * Surface (6): insights_{get,list,create,acknowledge,resolve,dismiss}.\n * Backed by braInsight / braListInsights / braCreateInsight /\n * braAcknowledgeInsight / braResolveInsight / braDismissInsight.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { InsightSeverityEnum, InsightStatusEnum, InsightTypeEnum, JsonObject } from './shared.js';\n\nexport function registerInsightTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_get')),\n {\n title: 'Get Insight',\n description: 'Fetch a single proactive insight by ID.',\n inputSchema: { id: z.string().describe('Insight ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braInsight: Record<string, unknown> | null;\n }>(ops.GET_INSIGHT, { id });\n if (!data.braInsight) return errorResult(`Insight ${id} not found`);\n return jsonResult(data.braInsight);\n } catch (error) {\n ctx.logger.error('brainyrich insights_get failed', { error: String(error) });\n return errorResult(\n `Failed to get insight: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_list')),\n {\n title: 'List Insights',\n description:\n 'List proactive insights with optional severity/status/subject filters and pagination.',\n inputSchema: {\n severity: InsightSeverityEnum.optional().describe('Filter by severity'),\n status: InsightStatusEnum.optional().describe('Filter by triage status'),\n subjectId: z.string().optional().describe('Filter by subject entity ID'),\n subjectType: z\n .string()\n .optional()\n .describe('Filter by subject entity type (e.g. \"portfolio\", \"household\", \"goal\")'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ severity, status, subjectId, subjectType, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braListInsights: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_INSIGHTS, {\n severity,\n status,\n subjectId,\n subjectType,\n pagination: { limit: limit ?? 50, offset: offset ?? 0 },\n });\n return jsonResult(data.braListInsights);\n } catch (error) {\n ctx.logger.error('brainyrich insights_list failed', { error: String(error) });\n return errorResult(\n `Failed to list insights: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_create')),\n {\n title: 'Create Insight',\n description:\n 'Create a proactive insight/signal about a subject. `subjectId`, `subjectType`, `title`, and `type` are required; `severity` defaults to MEDIUM.',\n inputSchema: {\n subjectId: z.string().min(1).describe('Subject entity ID the insight is about'),\n subjectType: z.string().min(1).describe('Subject entity type (e.g. \"portfolio\", \"goal\")'),\n title: z.string().min(1).describe('Insight title'),\n type: InsightTypeEnum.describe('Insight signal type'),\n severity: InsightSeverityEnum.optional().describe('Severity (default MEDIUM)'),\n detail: z.string().optional().describe('Detailed explanation'),\n ownerId: z.string().optional().describe('Owning user ID (defaults to the caller)'),\n metrics: JsonObject.optional().describe('Supporting metrics JSON'),\n },\n },\n async ({ subjectId, subjectType, title, type, severity, detail, ownerId, metrics }) => {\n try {\n const input: Record<string, unknown> = { subjectId, subjectType, title, type };\n if (severity !== undefined) input.severity = severity;\n if (detail !== undefined) input.detail = detail;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (metrics !== undefined) input.metrics = metrics;\n\n const data = await ctx.gql.workspace.request<{\n braCreateInsight: Record<string, unknown>;\n }>(ops.CREATE_INSIGHT, { input });\n return jsonResult(data.braCreateInsight);\n } catch (error) {\n ctx.logger.error('brainyrich insights_create failed', { error: String(error) });\n return errorResult(\n `Failed to create insight: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_acknowledge')),\n {\n title: 'Acknowledge Insight',\n description: 'Acknowledge a proactive insight by ID (marks it ACKNOWLEDGED).',\n inputSchema: { id: z.string().describe('Insight ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braAcknowledgeInsight: Record<string, unknown>;\n }>(ops.ACKNOWLEDGE_INSIGHT, { id });\n return jsonResult(data.braAcknowledgeInsight);\n } catch (error) {\n ctx.logger.error('brainyrich insights_acknowledge failed', { error: String(error) });\n return errorResult(\n `Failed to acknowledge insight: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_resolve')),\n {\n title: 'Resolve Insight',\n description: 'Resolve a proactive insight by ID (marks it RESOLVED and stamps resolvedAt).',\n inputSchema: { id: z.string().describe('Insight ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braResolveInsight: Record<string, unknown>;\n }>(ops.RESOLVE_INSIGHT, { id });\n return jsonResult(data.braResolveInsight);\n } catch (error) {\n ctx.logger.error('brainyrich insights_resolve failed', { error: String(error) });\n return errorResult(\n `Failed to resolve insight: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'insights_dismiss')),\n {\n title: 'Dismiss Insight',\n description: 'Dismiss a proactive insight by ID (marks it DISMISSED).',\n inputSchema: { id: z.string().describe('Insight ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braDismissInsight: Record<string, unknown>;\n }>(ops.DISMISS_INSIGHT, { id });\n return jsonResult(data.braDismissInsight);\n } catch (error) {\n ctx.logger.error('brainyrich insights_dismiss failed', { error: String(error) });\n return errorResult(\n `Failed to dismiss insight: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Brainyrich analytics + health tools.\n *\n * Surface (2): analytics_net_worth_summary, system_health.\n * `analytics_net_worth_summary` maps to braNetWorthSummary (wspace-scoped\n * roll-up of accounts + holdings by asset class). `system_health` maps to the\n * @public braHealth liveness probe (no auth required). Names follow the\n * canonical SDK manifest (analytics.netWorthSummary / system.health).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_net_worth_summary')),\n {\n title: 'Net-Worth Summary',\n description:\n \"Aggregate the caller's (or a given owner's) accounts + holdings into a single net-worth summary, broken out by asset class.\",\n inputSchema: {\n ownerId: z\n .string()\n .optional()\n .describe('Owner user ID to summarize (defaults to the calling actor)'),\n },\n },\n async ({ ownerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n braNetWorthSummary: Record<string, unknown>;\n }>(ops.NET_WORTH_SUMMARY, { ownerId });\n return jsonResult(data.braNetWorthSummary);\n } catch (error) {\n ctx.logger.error('brainyrich analytics_net_worth failed', { error: String(error) });\n return errorResult(\n `Failed to get net-worth summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'system_health')),\n {\n title: 'Brainyrich Health Check',\n description:\n 'Public liveness/identity probe for the Brainyrich subgraph (braHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ braHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.braHealth });\n } catch (error) {\n ctx.logger.error('brainyrich health failed', { error: String(error) });\n return errorResult(\n `Brainyrich 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 { NET_WORTH_SUMMARY, LIST_HOUSEHOLDS, LIST_INSIGHTS } from './operations.js';\n\n/**\n * Read-only Brainyrich 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 registerBrainyrichResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const netWorthUri = track(mcpResourceUri(ctx.productName, 'net-worth'));\n const householdsUri = track(mcpResourceUri(ctx.productName, 'households'));\n const insightsUri = track(mcpResourceUri(ctx.productName, 'insights'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'brainyrich-schema',\n schemaUri,\n {\n title: 'Brainyrich Domain Schema',\n description:\n 'Overview of the Brainyrich wealth-management domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Brainyrich Domain (Overview)\n\nWealth-management platform: accounts, portfolios, holdings, transactions,\ngoals, model portfolios, rebalancing, households, and proactive insights.\n\n## Entities\n- BraAccount — a financial account (holdings, transactions)\n- BraHolding — a position within an account/portfolio (derived marketValue)\n- BraTransaction — an account-ledger entry\n- BraPortfolio — an investment portfolio (holdings, target allocation)\n- BraModelPortfolio (+BraModelAllocation) — an allocation template\n- BraGoal (+BraGoalFunding) — a financial goal + its funding links + projection\n- BraHousehold — an advisory household (CRM)\n- BraRebalanceProposal — a drift-correction proposal with a review lifecycle\n- BraInsight — a proactive signal with a triage lifecycle\n\n## Enums\n- BraAccountStatus: ACTIVE, ARCHIVED, CLOSED\n- BraAccountType: ALTERNATIVE, BANK, BROKERAGE, CASH, CRYPTO, LIABILITY, REAL_ESTATE, RETIREMENT\n- BraAssetClass: ALTERNATIVE, CASH, COMMODITY, CRYPTO, EQUITY, FIXED_INCOME, REAL_ESTATE\n- BraGoalStatus: ABANDONED, ACHIEVED, ACTIVE, ON_HOLD\n- BraGoalType: CUSTOM, EDUCATION, EMERGENCY_FUND, HOME, MAJOR_PURCHASE, RETIREMENT, WEALTH_GROWTH\n- BraGoalProjection: AHEAD, AT_RISK, BEHIND, ON_TRACK\n- BraHouseholdStatus: ACTIVE, INACTIVE, ONBOARDING, PROSPECT\n- BraInsightSeverity: CRITICAL, HIGH, INFO, LOW, MEDIUM\n- BraInsightStatus: ACKNOWLEDGED, DISMISSED, OPEN, RESOLVED\n- BraInsightType: CASH_DRAG, CONCENTRATION_RISK, DRIFT, FEE_ANOMALY, GOAL_AT_RISK, REBALANCE_DUE, TAX_OPPORTUNITY\n- BraPortfolioStatus: ACTIVE, ARCHIVED, DRAFT\n- BraRebalanceStatus: APPROVED, CANCELLED, DRAFT, EXECUTED, PROPOSED, REJECTED\n- BraRiskProfile: AGGRESSIVE, BALANCED, CONSERVATIVE, GROWTH, MODERATE\n- BraTransactionType: BUY, DEPOSIT, DIVIDEND, FEE, INTEREST, SELL, TRANSFER, WITHDRAWAL\n\n## Tool groups\naccounts, portfolios, holdings, transactions, goals (+fundings), households,\nmodel_portfolios, rebalance, insights, analytics. All run against the\nWORKSPACE 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>://net-worth — caller net-worth summary\n server.registerResource(\n 'brainyrich-net-worth',\n netWorthUri,\n {\n title: 'Brainyrich Net-Worth Summary',\n description: 'Live net-worth roll-up for the caller, broken out by asset class.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${netWorthUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ braNetWorthSummary: unknown }>(\n NET_WORTH_SUMMARY,\n {},\n );\n return {\n contents: [\n {\n uri: netWorthUri,\n text: JSON.stringify(data.braNetWorthSummary, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: netWorthUri,\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>://households — advisory household book\n server.registerResource(\n 'brainyrich-households',\n householdsUri,\n {\n title: 'Brainyrich Household Book',\n description: 'The first 50 advisory households in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${householdsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ braListHouseholds: unknown }>(\n LIST_HOUSEHOLDS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: householdsUri,\n text: JSON.stringify(data.braListHouseholds, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: householdsUri,\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>://insights — open proactive insights\n server.registerResource(\n 'brainyrich-insights',\n insightsUri,\n {\n title: 'Brainyrich Open Insights',\n description: 'The first 50 OPEN proactive insights in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${insightsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ braListInsights: unknown }>(LIST_INSIGHTS, {\n status: 'OPEN',\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: insightsUri,\n text: JSON.stringify(data.braListInsights, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: insightsUri,\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 * Brainyrich MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerBrainyrichPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'household-onboarding'));\n const reviewName = track(mcpPromptName(p, 'portfolio-review'));\n\n // <product>-household-onboarding — stand up a household + accounts + goals\n server.registerPrompt(\n onboardingName,\n {\n title: 'Household Onboarding',\n description:\n 'Guide for onboarding a new Brainyrich advisory household end to end: create the household, open accounts, set goals, and link funding.',\n argsSchema: {\n name: z.string().optional().describe('Household name'),\n riskProfile: z.string().optional().describe('Risk profile'),\n },\n },\n ({ name, riskProfile }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { name, riskProfile });\n const nameNote = name\n ? `Use the household name \"${name}\".`\n : 'Ask the user for the household name.';\n const riskNote = riskProfile\n ? `Use riskProfile ${riskProfile}.`\n : 'Help the user pick a BraRiskProfile (CONSERVATIVE/BALANCED/MODERATE/GROWTH/AGGRESSIVE).';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard a new Brainyrich advisory household.\n\n1. **Create Household**: Use ${p}_households_create. ${nameNote} ${riskNote} Optionally set primaryContactName/primaryContactEmail.\n2. **Open Accounts**: Use ${p}_accounts_create for each account — set type (BANK/BROKERAGE/RETIREMENT/...), currency, and householdId from step 1.\n3. **Add Holdings**: Use ${p}_holdings_create against each brokerage/retirement account (symbol, assetClass, quantity, lastPrice).\n4. **Set Goals**: Use ${p}_goals_create (name, targetAmount, targetDate, type) for each objective, then ${p}_goals_link_funding to attach funding accounts.\n5. **Net Worth**: Use ${p}_analytics_net_worth_summary to confirm the household's roll-up.\n\nShow results at each step and confirm before moving on.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-portfolio-review — periodic advisory review\n server.registerPrompt(\n reviewName,\n {\n title: 'Portfolio Review',\n description:\n 'Periodic advisory review workflow: check drift, triage insights, propose a rebalance, and revisit goal projections.',\n argsSchema: {\n portfolioId: z.string().optional().describe('Portfolio ID to review'),\n },\n },\n ({ portfolioId }) => {\n ctx.logger.debug(`Prompt ${reviewName} called`, { portfolioId });\n const portfolioNote = portfolioId\n ? `Review portfolio \"${portfolioId}\".`\n : `First list portfolios with ${p}_portfolios_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a periodic Brainyrich portfolio review. ${portfolioNote}\n\n1. **Holdings & Drift**: Use ${p}_portfolios_get and ${p}_holdings_list to inspect current positions vs. the target allocation.\n2. **Insights**: Use ${p}_insights_list filtered by the portfolio (subjectType=\"portfolio\", status=OPEN) to surface DRIFT/CONCENTRATION_RISK/REBALANCE_DUE signals; acknowledge with ${p}_insights_acknowledge.\n3. **Rebalance**: If drift exceeds the threshold, use ${p}_rebalances_create with proposed trades, then advance it with ${p}_rebalances_transition (DRAFT → PROPOSED → APPROVED → EXECUTED).\n4. **Goals**: Use ${p}_goals_list and ${p}_goals_recalc_projection to refresh each goal's projection (AHEAD/ON_TRACK/BEHIND/AT_RISK).\n5. **Resolve**: Resolve addressed insights with ${p}_insights_resolve.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Brainyrich module — domain module for the future-products ecosystem program.\n *\n * Covers all 9 @key entities of wspace-brainyrich-svc grouped into per-entity\n * sub-APIs: accounts, portfolios, holdings, transactions, goals (+fundings),\n * households, model portfolios, rebalance, insights, analytics. Mirrors the\n * rich vibecontrols/kadaikodi modules' structure (tools/<entity>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/brainyrich/wspace-brainyrich-svc/\n * (Hive service name `brainyrich`). All operations run against the WORKSPACE\n * gateway; the @public braHealth probe is exposed as `<product>_health`.\n * The backend prefixes every type with `Bra` and every root field with `bra`;\n * operations are called by their REAL names.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerAccountTools } from './tools/accounts.js';\nimport { registerPortfolioTools } from './tools/portfolios.js';\nimport { registerHoldingTools } from './tools/holdings.js';\nimport { registerTransactionTools } from './tools/transactions.js';\nimport { registerGoalTools } from './tools/goals.js';\nimport { registerHouseholdTools } from './tools/households.js';\nimport { registerModelPortfolioTools } from './tools/modelPortfolios.js';\nimport { registerRebalanceTools } from './tools/rebalance.js';\nimport { registerInsightTools } from './tools/insights.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerBrainyrichResources } from './resources.js';\nimport { registerBrainyrichPrompts } from './prompts.js';\n\nconst brainyrichModule: McpModule = {\n id: 'brainyrich',\n version: '0.0.1',\n displayName: 'Brainyrich',\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 registerAccountTools(server, ctx, trackTool);\n registerPortfolioTools(server, ctx, trackTool);\n registerHoldingTools(server, ctx, trackTool);\n registerTransactionTools(server, ctx, trackTool);\n registerGoalTools(server, ctx, trackTool);\n registerHouseholdTools(server, ctx, trackTool);\n registerModelPortfolioTools(server, ctx, trackTool);\n registerRebalanceTools(server, ctx, trackTool);\n registerInsightTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n\n registerBrainyrichResources(server, ctx, trackResource);\n registerBrainyrichPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default brainyrichModule;\n"]}
@@ -0,0 +1,8 @@
1
+ import { c as McpModule } from '../../module-DFQBZNK6.cjs';
2
+ import '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import '../../context-1jV4NsLv.cjs';
4
+ import 'graphql-request';
5
+
6
+ declare const brainyrichModule: McpModule;
7
+
8
+ export { brainyrichModule as default };
@@ -0,0 +1,8 @@
1
+ import { c as McpModule } from '../../module-DBcfA-i3.js';
2
+ import '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import '../../context-1jV4NsLv.js';
4
+ import 'graphql-request';
5
+
6
+ declare const brainyrichModule: McpModule;
7
+
8
+ export { brainyrichModule as default };