@securelend/sdk 0.1.0-beta.5 → 0.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/errors.ts","../src/utils/mcp.ts","../src/types/index.ts","../src/client.ts"],"names":["Client","StreamableHTTPClientTransport","z","CreditTier","ProductType","ApplicationType","ApplicationStatus","ProviderStatus"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Error classes for SecureLend SDK\n */\n\n/**\n * Base error class for all SecureLend SDK errors\n */\nexport class SecureLendError extends Error {\n public readonly type: string;\n public readonly details?: unknown;\n\n constructor(message: string, type: string, details?: unknown) {\n super(message);\n this.name = \"SecureLendError\";\n this.type = type;\n this.details = details;\n\n // Maintains proper stack trace for where our error was thrown\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\n/**\n * Authentication error (invalid API key, etc.)\n */\nexport class AuthenticationError extends SecureLendError {\n constructor(message: string) {\n super(message, \"authentication_error\");\n this.name = \"AuthenticationError\";\n }\n}\n\n/**\n * Rate limit error\n */\nexport class RateLimitError extends SecureLendError {\n public readonly retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message, \"rate_limit_error\");\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\n/**\n * Validation error (invalid request parameters)\n */\nexport class ValidationError extends SecureLendError {\n constructor(message: string, errors?: unknown) {\n super(message, \"validation_error\", errors);\n this.name = \"ValidationError\";\n }\n}\n\n/**\n * Resource not found error\n */\nexport class NotFoundError extends SecureLendError {\n constructor(message: string) {\n super(message, \"not_found\");\n this.name = \"NotFoundError\";\n }\n}\n\n/**\n * Network error\n */\nexport class NetworkError extends SecureLendError {\n constructor(message: string) {\n super(message, \"network_error\");\n this.name = \"NetworkError\";\n }\n}\n\n/**\n * Server error (5xx)\n */\nexport class ServerError extends SecureLendError {\n constructor(message: string) {\n super(message, \"server_error\");\n this.name = \"ServerError\";\n }\n}\n","import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport {\n SecureLendError,\n AuthenticationError,\n NetworkError,\n ValidationError,\n} from \"./errors\";\n\ninterface MCPClientConfig {\n apiKey: string;\n mcpURL: string;\n}\n\n\nexport class MCPClient {\n public mcp: Client;\n private config: MCPClientConfig;\n private debug: boolean = false;\n private isConnected: boolean = false;\n\n constructor(config: MCPClientConfig) {\n this.config = config;\n\n this.mcp = new Client({ name: \"@securelend/sdk\", version: \"1.0.0\" });\n }\n\n async connect(): Promise<void> {\n if (this.isConnected) return;\n\n try {\n if (this.debug) {\n console.log(\n `[SecureLend SDK] Connecting to MCP server at ${this.config.mcpURL}`,\n );\n }\n const transport = new StreamableHTTPClientTransport(\n new URL(this.config.mcpURL),\n );\n await this.mcp.connect(transport);\n this.isConnected = true;\n if (this.debug) {\n console.log(`[SecureLend SDK] MCP client connected.`);\n }\n } catch (error: unknown) {\n this.isConnected = false;\n // Poor man's error mapping. The MCP SDK should have better error types.\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (errorMessage.includes(\"401\")) {\n throw new AuthenticationError(\n \"MCP connection failed: Invalid API key.\",\n );\n }\n throw new NetworkError(`MCP connection failed: ${errorMessage}`);\n }\n }\n\n async callTool(\n name: string,\n args: Record<string, any>,\n ): Promise<any> {\n await this.connect(); // Ensure connection exists\n\n if (this.debug) {\n console.log(`[SecureLend SDK] Calling tool: ${name} with args:`, args);\n }\n\n try {\n const result = await this.mcp.callTool({\n name,\n arguments: args,\n });\n\n if (this.debug) {\n console.log(`[SecureLend SDK] Tool result for ${name}:`, result);\n }\n return result;\n } catch (error: unknown) {\n if (error instanceof SecureLendError) throw error;\n // Again, poor man's error mapping\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (errorMessage.includes(\"400\")) {\n throw new ValidationError(\"Invalid tool arguments\", error);\n }\n throw new SecureLendError(\n `Tool call failed: ${errorMessage}`,\n \"mcp_tool_error\",\n error,\n );\n }\n }\n\n setApiKey(apiKey: string): void {\n // MCP client doesn't support hot-swapping API key after connection.\n // This would require a disconnect/reconnect cycle.\n // For now, we'll just update the config for the *next* connection.\n this.config.apiKey = apiKey;\n this.isConnected = false; // Force reconnect on next call\n }\n\n enableDebug(): void {\n this.debug = true;\n }\n\n disableDebug(): void {\n this.debug = false;\n }\n}\n","import { z } from \"zod\";\n\n// A generic schema for application data, which can be any of the search schemas\nconst anyObjectSchema = z.object({}).passthrough();\n\n// Shared Enums\nexport enum CreditTier {\n PRIME = \"PRIME\",\n NEAR_PRIME = \"NEAR_PRIME\",\n SUBPRIME = \"SUBPRIME\",\n DEEP_SUBPRIME = \"DEEP_SUBPRIME\",\n UNKNOWN = \"UNKNOWN\",\n}\n\nexport enum ProductType {\n INSTALLMENT_LOAN = \"INSTALLMENT_LOAN\",\n LINE_OF_CREDIT = \"LINE_OF_CREDIT\",\n SHORT_TERM_CREDIT = \"SHORT_TERM_CREDIT\",\n BNPL = \"BNPL\",\n MORTGAGE = \"MORTGAGE\",\n AUTO_LOAN = \"AUTO_LOAN\",\n AUTO_REFINANCE = \"AUTO_REFINANCE\",\n STUDENT_LOAN = \"STUDENT_LOAN\",\n STUDENT_LOAN_REFINANCE = \"STUDENT_LOAN_REFINANCE\",\n BUSINESS_LOAN = \"BUSINESS_LOAN\",\n BUSINESS_BANKING = \"BUSINESS_BANKING\",\n BUSINESS_CREDIT_CARD = \"BUSINESS_CREDIT_CARD\",\n PERSONAL_BANKING = \"PERSONAL_BANKING\",\n SAVINGS_ACCOUNT = \"SAVINGS_ACCOUNT\",\n PERSONAL_CREDIT_CARD = \"PERSONAL_CREDIT_CARD\",\n}\n\n// Lender Directory Related Types\nexport interface Lender {\n lender_id: string;\n canonical_name: string;\n entity_type: string;\n product_types: string[];\n credit_tier_target: string[];\n amount_min?: number;\n amount_max?: number;\n states_served?: string[];\n funding_speed?: string;\n brand_status: string;\n exclusion_reason?: string;\n source: string;\n updated_at: string;\n gsi1pks: string[];\n lanes?: string[];\n primary_lane?: string;\n lane_pk?: string;\n}\n\nexport interface LenderSearchCriteria {\n creditScore?: number;\n creditTier?: CreditTier;\n loanAmount: number;\n state?: string;\n productType: ProductType;\n includeReviewStatus?: boolean; // Include lenders with REVIEW status\n}\n\n// Loan Offer Related Types\n\nconst moneySchema = z.object({\n amount: z.number(),\n currency: z.string().length(3).optional(),\n});\n\nexport type Money = z.infer<typeof moneySchema>;\n\nexport interface BankAccountOffer {\n id: string;\n providerName: string;\n providerLogo?: string;\n accountName: string;\n monthlyFee: number;\n minBalance: number;\n interestRate: number; // APY\n features: string[];\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport interface CreditCardOffer {\n id: string;\n issuerName: string;\n issuerLogo?: string;\n cardName: string;\n apr: {\n min: number;\n max: number;\n };\n annualFee: number;\n rewards: {\n type: \"cash_back\" | \"points\" | \"miles\";\n summary: string;\n signupBonus?: string;\n };\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport const bankAccountOfferSchema = z.object({\n id: z.string(),\n providerName: z.string(),\n providerLogo: z.string().optional(),\n accountName: z.string(),\n monthlyFee: z.number(),\n minBalance: z.number(),\n interestRate: z.number(),\n features: z.array(z.string()),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport const creditCardOfferSchema = z.object({\n id: z.string(),\n issuerName: z.string(),\n issuerLogo: z.string().optional(),\n cardName: z.string(),\n apr: z.object({\n min: z.number(),\n max: z.number(),\n }),\n annualFee: z.number(),\n rewards: z.object({\n type: z.enum([\"cash_back\", \"points\", \"miles\"]),\n summary: z.string(),\n signupBonus: z.string().optional(),\n }),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport type Percentage = number; // 0-100\nexport type BasisPoints = number;\nexport type DateString = string; // ISO 8601\n\nexport enum ApplicationType {\n PERSONAL = \"PERSONAL\",\n BUSINESS = \"BUSINESS\",\n}\n\nexport enum ApplicationStatus {\n DRAFT = \"DRAFT\",\n SUBMITTED = \"SUBMITTED\",\n IN_REVIEW = \"IN_REVIEW\",\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n APPROVED = \"APPROVED\",\n DECLINED = \"DECLINED\",\n CLOSED = \"CLOSED\",\n}\n\nexport enum ProviderStatus {\n PENDING = \"PENDING\", // Not yet sent\n SUBMITTED = \"SUBMITTED\", // Sent to provider\n REFERRED = \"REFERRED\", // Sent via affiliate link\n ERROR = \"ERROR\", // Failed to send\n RECEIVED = \"RECEIVED\", // Provider acknowledged\n}\n\nexport const personalApplicantSchema = z.object({\n firstName: z.string().describe(\"The applicant's first name.\"),\n lastName: z.string().describe(\"The applicant's last name.\"),\n email: z.string().email().describe(\"The applicant's email address.\"),\n phone: z.string().optional().describe(\"The applicant's phone number.\"),\n});\n\n// Published Schema Aligned Types\n\nconst lenderSchema = z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n logoUrl: z.string().url().optional(),\n});\n\nconst productSchema = z.object({\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n});\n\nconst loanTermsSchema = z.object({\n amount: moneySchema,\n interestRate: z.object({\n type: z.enum([\"fixed\", \"variable\"]),\n rate: z.number().optional(), // rate might not always be available if only APR is given\n apr: z.number(),\n }),\n termMonths: z.number().int(),\n payment: z.object({\n frequency: z.string().optional(),\n amount: moneySchema,\n }),\n totalCost: moneySchema.optional(),\n repayment: z\n .object({\n totalRepaymentAmount: z.number(),\n costOfFinancing: z.number(),\n })\n .optional(),\n});\n\nconst loanFeesSchema = z\n .object({\n origination: z\n .object({\n amount: moneySchema.optional(),\n percentage: z.number().optional(),\n })\n .optional(),\n })\n .optional();\n\nconst matchingSchema = z\n .object({\n approvalProbability: z.number().min(0).max(1).optional(),\n matchScore: z.number().min(0).max(100).optional(),\n matchReasons: z.array(z.string()).optional(),\n })\n .optional();\n\nconst processSchema = z.object({\n applicationMethod: z.string(),\n applicationUrl: z.string().url().optional(),\n fundingSpeed: z\n .object({\n description: z.string(),\n })\n .optional(),\n});\n\nexport const loanOfferSchema = z.object({\n offerId: z.string(),\n lender: lenderSchema,\n product: productSchema,\n terms: loanTermsSchema,\n fees: loanFeesSchema,\n matching: matchingSchema,\n process: processSchema.optional(),\n // Additional fields for UI that were in the old schema\n lenderInfo: z.string().optional(),\n badges: z.array(z.string()).optional(),\n isSecureLendTenant: z.boolean().optional(),\n});\n\nexport type LoanOffer = z.infer<typeof loanOfferSchema>;\n\n// Adapter Interface\nexport interface PersonalLenderAdapter {\n readonly name: string;\n search(params: PersonalLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessLenderAdapter {\n readonly name: string;\n search(params: BusinessLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface MortgageLenderAdapter {\n readonly name: string;\n search(params: MortgageSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface AutoLenderAdapter {\n readonly name: string;\n search(params: AutoLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface StudentLenderAdapter {\n readonly name: string;\n search(params: StudentLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessCreditCardAdapter {\n readonly name: string;\n search(\n params: BusinessCreditCardSearchParams,\n ): Promise<BusinessCreditCardOffer[]>;\n}\n\nexport interface BusinessBankingAdapter {\n readonly name: string;\n search(\n params: BusinessBankingSearchSchema & {\n maxResults?: number;\n includeReviewStatus?: boolean;\n },\n ): Promise<BusinessBankingOffer[]>;\n}\n\nexport interface PersonalBankingAdapter {\n readonly name: string;\n search(params: PersonalBankingSearchSchema): Promise<PersonalBankingOffer[]>;\n}\n\nexport interface SavingsAdapter {\n readonly name: string;\n search(params: SavingsSearchSchema): Promise<SavingsOffer[]>;\n}\n\nexport interface PersonalCreditCardAdapter {\n readonly name: string;\n search(\n params: PersonalCreditCardSearchSchema,\n ): Promise<PersonalCreditCardOffer[]>;\n}\n\n// Zod Schemas for Tool Input/Output\nexport const personalLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired loan amount in USD (e.g., 25000).\"),\n purpose: z\n .enum([\n \"debt_consolidation\",\n \"home_improvement\",\n \"major_purchase\",\n \"medical\",\n \"vacation\",\n \"other\",\n ])\n .describe(\"The purpose of the loan.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n monthlyIncome: z\n .number()\n .min(0)\n .optional()\n .describe(\"Applicant's gross monthly income in USD.\"),\n employmentStatus: z\n .enum([\"employed\", \"self_employed\", \"retired\", \"unemployed\"])\n .optional()\n .describe(\"The applicant's employment status.\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type PersonalLoanSearchParams = z.infer<typeof personalLoanSearchSchema>;\n\n// Generic schema for business loan data\nexport const businessLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .describe(\"The desired loan amount, e.g., 50000 for $50,000.\"),\n purpose: z\n .string()\n .describe(\"The reason for the loan, e.g., 'working capital'.\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's gross annual revenue in USD.\"),\n industry: z\n .string()\n .optional()\n .describe(\"The industry the business operates in, e.g., 'technology'.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the business is located (2-letter code).\"),\n});\nexport type BusinessLoanSearchParams = z.infer<typeof businessLoanSearchSchema>;\n\nexport const mortgageSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(50000)\n .max(2000000)\n .describe(\"The desired mortgage loan amount in USD.\"),\n homePrice: z\n .number()\n .min(50000)\n .max(5000000)\n .optional()\n .describe(\"The purchase price of the home in USD.\"),\n downPayment: z\n .number()\n .min(0)\n .optional()\n .describe(\"The amount of the down payment in USD.\"),\n creditScore: z\n .number()\n .min(500)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (500-850).\"),\n loanType: z\n .enum([\"conventional\", \"fha\", \"va\", \"jumbo\", \"refinance\"])\n .describe(\"The type of mortgage loan.\"),\n propertyType: z\n .enum([\"primary\", \"secondary\", \"investment\"])\n .optional()\n .describe(\"The intended use of the property.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the property is located (2-letter code).\"),\n});\nexport type MortgageSearchParams = z.infer<typeof mortgageSearchSchema>;\n\nexport const autoLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired auto loan amount in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n isNew: z\n .boolean()\n .describe(\"Specifies if the vehicle is new (true) or used (false).\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type AutoLoanSearchParams = z.infer<typeof autoLoanSearchSchema>;\n\nexport const studentLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(250000)\n .describe(\"The total amount needed for the student loan in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The student's estimated credit score (300-850).\"),\n coSignerCreditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\n \"The co-signer's estimated credit score (300-850), if applicable.\",\n ),\n degreeType: z\n .enum([\"undergraduate\", \"graduate\", \"mba\", \"medical\", \"law\"])\n .describe(\"The type of degree the loan is for.\"),\n state: z\n .string()\n .optional()\n .describe(\"The student's state of residence (2-letter code).\"),\n});\nexport type StudentLoanSearchParams = z.infer<typeof studentLoanSearchSchema>;\n\n// Schemas for Business Credit Card Comparison\nexport const businessCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's annual revenue in USD.\"),\n businessAgeInYears: z\n .number()\n .min(0)\n .optional()\n .describe(\"The age of the business in years.\"),\n});\nexport type BusinessCreditCardSearchParams = z.infer<\n typeof businessCreditCardSearchSchema\n>;\n\nexport const businessCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n creditScoreRange: z.string(),\n welcomeBonus: z.string(),\n terms: z.object({\n apr: z.number(),\n annualFee: z.number(),\n creditLimit: moneySchema,\n }),\n});\nexport type BusinessCreditCardOffer = z.infer<\n typeof businessCreditCardOfferSchema\n>;\n\nexport const businessCreditCardComparisonResponseSchema = z.object({\n offers: z.array(businessCreditCardOfferSchema),\n searchCriteria: businessCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessCreditCardComparisonResponse = z.infer<\n typeof businessCreditCardComparisonResponseSchema\n>;\n\n// Schemas for Business Banking Comparison\nexport const businessBankingSearchSchema = z.object({\n industry: z.string().optional().describe(\"The business's industry.\"),\n monthlyTransactions: z\n .number()\n .optional()\n .describe(\"Estimated number of monthly transactions.\"),\n});\nexport type BusinessBankingSearchSchema = z.infer<\n typeof businessBankingSearchSchema\n>;\n\nexport const businessBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n monthlyFee: z.string(),\n bonus: z.string(),\n});\nexport type BusinessBankingOffer = z.infer<typeof businessBankingOfferSchema>;\n\nexport const businessBankingComparisonResponseSchema = z.object({\n offers: z.array(businessBankingOfferSchema),\n searchCriteria: businessBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessBankingComparisonResponse = z.infer<\n typeof businessBankingComparisonResponseSchema\n>;\n\n// Schemas for Personal Banking Comparison\nexport const personalBankingSearchSchema = z.object({\n features: z\n .array(z.string())\n .optional()\n .describe(\"Desired account features.\"),\n});\nexport type PersonalBankingSearchSchema = z.infer<\n typeof personalBankingSearchSchema\n>;\n\nexport const personalBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n bonus: z.string(),\n monthlyFee: z.string(),\n overdraftRating: z.number().min(0).max(5),\n});\nexport type PersonalBankingOffer = z.infer<typeof personalBankingOfferSchema>;\n\nexport const personalBankingComparisonResponseSchema = z.object({\n offers: z.array(personalBankingOfferSchema),\n searchCriteria: personalBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalBankingComparisonResponse = z.infer<\n typeof personalBankingComparisonResponseSchema\n>;\n\n// Schemas for Savings Account Comparison\nexport const savingsSearchSchema = z.object({\n initialDeposit: z\n .number()\n .optional()\n .describe(\"The initial deposit amount in USD.\"),\n});\nexport type SavingsSearchSchema = z.infer<typeof savingsSearchSchema>;\n\nexport const savingsOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n apy: z.string(),\n interestRate: z.string().optional(),\n minBalanceForApy: z.string(),\n monthlyFee: z.string(),\n});\nexport type SavingsOffer = z.infer<typeof savingsOfferSchema>;\n\nexport const savingsComparisonResponseSchema = z.object({\n offers: z.array(savingsOfferSchema),\n searchCriteria: savingsSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type SavingsAccountComparisonResponse = z.infer<\n typeof savingsComparisonResponseSchema\n>;\n\n// Schemas for Personal Credit Card Comparison\nexport const personalCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n rewardsType: z\n .enum([\"cash_back\", \"travel\", \"points\"])\n .optional()\n .describe(\"Preferred rewards type.\"),\n});\nexport type PersonalCreditCardSearchSchema = z.infer<\n typeof personalCreditCardSearchSchema\n>;\n\nexport const personalCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n rewardsRate: z.string(),\n introOffer: z.string(),\n recommendedCreditScore: z.string(),\n terms: z.object({\n apr: z.object({\n purchase: z.number(),\n balanceTransfer: z.number(),\n penalty: z.number().optional(),\n }),\n fees: z.object({\n annual: z.number(),\n }),\n }),\n applicationUrl: z.string().url().optional(),\n});\nexport type PersonalCreditCardOffer = z.infer<\n typeof personalCreditCardOfferSchema\n>;\n\nexport const personalCreditCardComparisonResponseSchema = z.object({\n offers: z.array(personalCreditCardOfferSchema),\n searchCriteria: personalCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalCreditCardComparisonResponse = z.infer<\n typeof personalCreditCardComparisonResponseSchema\n>;\n\nexport const loanComparisonResponseSchema = z.object({\n offers: z.array(loanOfferSchema),\n summary: z.object({\n totalOffers: z.number().int(),\n bestRate: z.number(),\n bestApprovalProbability: z.number().optional(),\n fastestFunding: z.string().optional(),\n }),\n searchCriteria: z\n .union([\n personalLoanSearchSchema,\n businessLoanSearchSchema,\n mortgageSearchSchema,\n autoLoanSearchSchema,\n studentLoanSearchSchema,\n ])\n .optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type LoanComparisonResponse = z.infer<\n typeof loanComparisonResponseSchema\n>;\n\nexport const applicationProviderSchema = z.object({\n providerId: z.string(),\n providerName: z.string(),\n status: z.nativeEnum(ProviderStatus),\n submittedAt: z.string().optional(),\n providerApplicationId: z.string().optional(),\n referralUrl: z.string().url().optional(),\n error: z.string().optional(),\n});\n\nexport const personalApplicationSchema = z.object({\n id: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n applicationType: z.nativeEnum(ApplicationType),\n productType: z.union([z.nativeEnum(ProductType), z.string()]),\n status: z.nativeEnum(ApplicationStatus),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z.array(applicationProviderSchema),\n email: z.string().email(),\n widget: z.string().optional(),\n});\n\n// Application & Lead Types\n\nexport interface ApplicationProvider {\n providerId: string;\n providerName: string;\n status: ProviderStatus;\n submittedAt?: string;\n providerApplicationId?: string;\n referralUrl?: string;\n error?: string;\n}\n\nexport interface PersonalApplicant {\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n}\n\nexport interface BusinessApplicant {\n businessName: string;\n ein?: string;\n contact: PersonalApplicant;\n}\n\nexport interface Application<TApplicant, TData> {\n id: string; // PK\n createdAt: string;\n updatedAt: string;\n applicationType: ApplicationType;\n productType: ProductType | string;\n status: ApplicationStatus;\n applicant: TApplicant;\n applicationData: TData;\n providers: ApplicationProvider[];\n email: string; // For GSI\n widget?: string;\n}\n\nexport type PersonalApplication = Application<\n PersonalApplicant,\n Record<string, unknown>\n>;\nexport type BusinessApplication = Application<\n BusinessApplicant,\n Record<string, unknown>\n>;\nexport type GenericApplication = Application<\n PersonalApplicant | BusinessApplicant,\n Record<string, unknown>\n>;\n\n// Zod schemas for validation\n\nexport const createPersonalApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreatePersonalApplicationDTO = z.infer<\n typeof createPersonalApplicationSchema\n>;\n\nexport const displayOfferFormSchema = z.object({\n sessionId: z\n .string()\n .optional()\n .describe(\"The session ID from a previous search to retrieve all offers.\"),\n offerId: z\n .string()\n .optional()\n .describe(\"The specific offer ID to pre-select in the form.\"),\n});\nexport type DisplayOfferFormParams = z.infer<typeof displayOfferFormSchema>;\n\nexport const anyOfferSchema = z.union([\n loanOfferSchema,\n businessCreditCardOfferSchema,\n businessBankingOfferSchema,\n personalBankingOfferSchema,\n savingsOfferSchema,\n personalCreditCardOfferSchema,\n]);\n\nexport const displayOfferFormResponseSchema = z.object({\n offer: anyOfferSchema,\n allOffers: z.array(anyOfferSchema),\n applicationData: anyObjectSchema,\n productType: z.string(),\n widget: z.string().optional(),\n});\nexport type DisplayOfferFormResponse = z.infer<\n typeof displayOfferFormResponseSchema\n>;\n\nexport const getOfferSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n provider: z\n .object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n })\n .describe(\"The selected provider to submit the application to.\"),\n});\nexport type GetOfferParams = z.infer<typeof getOfferSchema>;\n\nexport const getMultipleOffersSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n providers: z\n .array(\n z.object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n }),\n )\n .min(1)\n .describe(\"The list of selected providers to submit the application to.\"),\n});\nexport type GetMultipleOffersParams = z.infer<typeof getMultipleOffersSchema>;\n\nexport const trackOfferStatusSchema = z\n .object({\n applicationId: z\n .string()\n .optional()\n .describe(\"The unique ID of the application to track.\"),\n email: z\n .string()\n .email()\n .optional()\n .describe(\"The email address of the applicant to find applications for.\"),\n })\n .refine((data) => data.applicationId || data.email, {\n message: \"Either applicationId or email must be provided.\",\n });\nexport type TrackOfferStatusParams = z.infer<typeof trackOfferStatusSchema>;\n\nexport const trackOfferStatusResponseSchema = z.object({\n applications: z.array(personalApplicationSchema),\n widget: z.string().optional(),\n});\nexport type TrackOfferStatusResponse = z.infer<\n typeof trackOfferStatusResponseSchema\n>;\n\nexport const businessApplicantSchema = z.object({\n businessName: z.string(),\n ein: z.string().optional(),\n contact: personalApplicantSchema,\n});\n\nexport const createBusinessApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: businessApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreateBusinessApplicationDTO = z.infer<\n typeof createBusinessApplicationSchema\n>;\n\nexport const documentTypeEnum = z.enum([\n \"articles-of-incorporation\",\n \"balance-sheet\",\n \"bank-statement\",\n \"business-license\",\n \"business-plan\",\n \"contract\",\n \"drivers-license\",\n \"financial-statement\",\n \"identity-document\",\n \"invoice\",\n \"lease-agreement\",\n \"other-business-document\",\n \"other-personal-document\",\n \"passport\",\n \"profit-and-loss-statement\",\n \"proof-of-address\",\n \"proof-of-income\",\n \"property-document\",\n \"purchase-order\",\n \"tax-return\",\n \"utility-bill\",\n \"vehicle-document\",\n \"voided-check\",\n]);\nexport type DocumentType = z.infer<typeof documentTypeEnum>;\n\nexport const displayUploadDocumentsFormSchema = z.object({\n applicationId: z\n .string()\n .optional()\n .describe(\"Pre-fill the application ID for the document upload form.\"),\n});\nexport type DisplayUploadDocumentsFormParams = z.infer<\n typeof displayUploadDocumentsFormSchema\n>;\n\nexport const submitDocumentsSchema = z.object({\n applicationId: z\n .string()\n .describe(\"The ID of the application to associate the document with.\"),\n fileName: z.string().describe(\"The original name of the file.\"),\n documentType: documentTypeEnum.describe(\"The category of the document.\"),\n _openai_meta: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Internal metadata from OpenAI (automatically injected)\"),\n});\nexport type SubmitDocumentsParams = z.infer<typeof submitDocumentsSchema>;\n\nexport const submitDocumentsResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n uploadUrl: z.string().url().optional(),\n uploadFields: z.record(z.string(), z.string()).optional(),\n documentId: z.string().optional(),\n widget: z.string().optional(),\n});\nexport type SubmitDocumentsResponse = z.infer<\n typeof submitDocumentsResponseSchema\n>;\n\nexport const displayUploadDocumentsFormResponseSchema = z.object({\n widget: z.string().optional(),\n});\nexport type DisplayUploadDocumentsFormResponse = z.infer<\n typeof displayUploadDocumentsFormResponseSchema\n>;\n\n// Schemas for Calculator Tools\nexport const loanPaymentSchema = z.object({\n loanAmount: z\n .number()\n .describe(\"The total amount of the loan in USD.\")\n .positive(\"Loan amount must be positive.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 5 for 5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInMonths: z\n .number()\n .describe(\"The duration of the loan in months.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n});\nexport type LoanPaymentParams = z.infer<typeof loanPaymentSchema>;\n\nexport const loanPaymentResponseSchema = z.object({\n monthlyPayment: z.number().describe(\"The calculated monthly payment amount.\"),\n totalPayment: z\n .number()\n .describe(\"The total amount to be paid over the life of the loan.\"),\n totalInterest: z\n .number()\n .describe(\"The total interest paid over the life of the loan.\"),\n widget: z.string().optional(),\n});\nexport type LoanCalculationResponse = z.infer<typeof loanPaymentResponseSchema>;\n\nexport const mortgagePaymentSchema = z.object({\n propertyValue: z\n .number()\n .describe(\"The total value of the property in USD.\")\n .positive(\"Property value must be positive.\"),\n downPayment: z\n .number()\n .describe(\"The amount paid upfront in USD.\")\n .min(0, \"Down payment cannot be negative.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 3.5 for 3.5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInYears: z\n .number()\n .describe(\"The duration of the loan in years.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n propertyTaxRate: z\n .number()\n .describe(\n \"The annual property tax rate as a percentage (e.g., 1.2 for 1.2%).\",\n )\n .min(0, \"Property tax rate cannot be negative.\"),\n homeInsurance: z\n .number()\n .describe(\"The annual home insurance cost in USD.\")\n .min(0, \"Home insurance cannot be negative.\"),\n});\nexport type MortgagePaymentParams = z.infer<typeof mortgagePaymentSchema>;\n\nexport const mortgagePaymentResponseSchema = z.object({\n loanAmount: z.number().describe(\"The total loan amount after down payment.\"),\n principalAndInterest: z\n .number()\n .describe(\"The monthly payment for principal and interest.\"),\n monthlyPropertyTax: z\n .number()\n .describe(\"The estimated monthly property tax payment.\"),\n monthlyHomeInsurance: z\n .number()\n .describe(\"The estimated monthly home insurance payment.\"),\n totalMonthlyPayment: z\n .number()\n .describe(\"The total estimated monthly payment (PITI).\"),\n widget: z.string().optional(),\n});\nexport type MortgageCalculationResponse = z.infer<\n typeof mortgagePaymentResponseSchema\n>;\n\n// Schemas for Lease vs. Purchase Calculator\nexport const leaseVsPurchaseSchema = z.object({\n // Purchase details\n purchasePrice: z\n .number()\n .positive(\"Purchase price must be positive.\")\n .describe(\"Total price of the vehicle for purchase in USD.\"),\n downPayment: z\n .number()\n .min(0, \"Down payment cannot be negative.\")\n .describe(\"Upfront payment amount for purchase in USD.\"),\n loanTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Loan duration in months for purchase.\"),\n interestRate: z\n .number()\n .min(0, \"Interest rate cannot be negative.\")\n .describe(\"Annual interest rate for purchase loan (e.g., 5 for 5%).\"),\n salesTaxRate: z\n .number()\n .min(0, \"Sales tax rate cannot be negative.\")\n .describe(\"Sales tax rate as a percentage (e.g., 7.5 for 7.5%).\"),\n\n // Lease details\n leaseTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Lease duration in months.\"),\n monthlyLeasePayment: z\n .number()\n .positive()\n .describe(\"Monthly payment for the lease in USD.\"),\n moneyFactor: z\n .number()\n .positive(\"Money factor must be positive.\")\n .describe(\"The money factor for the lease (similar to interest rate).\"),\n acquisitionFee: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Fee charged by the lessor to initiate the lease in USD.\"),\n securityDeposit: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Refundable deposit paid at the start of the lease in USD.\"),\n\n // Common details\n residualValuePercentage: z\n .number()\n .min(0)\n .max(100, \"Residual value percentage cannot exceed 100.\")\n .describe(\n \"Estimated value of the vehicle at the end of the lease, as a percentage of MSRP.\",\n ),\n expectedOwnershipInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"How long you plan to keep the vehicle, in months.\"),\n});\nexport type LeaseVsPurchaseParams = z.infer<typeof leaseVsPurchaseSchema>;\n\nexport const leaseVsPurchaseResponseSchema = z.object({\n purchaseAnalysis: z.object({\n totalLoanPayment: z.number(),\n totalInterestPaid: z.number(),\n totalSalesTax: z.number(),\n equityAfterOwnership: z.number(),\n totalCostOfOwnership: z.number(),\n monthlyPayment: z.number(),\n }),\n leaseAnalysis: z.object({\n totalLeasePayments: z.number(),\n totalUpfrontCosts: z.number(),\n totalCostOfLeasing: z.number(),\n }),\n comparison: z.object({\n purchaseCostIsLowerBy: z.number(),\n leaseCostIsLowerBy: z.number(),\n recommendation: z.string(),\n }),\n widget: z.string().optional(),\n});\nexport type LeaseVsPurchaseResponse = z.infer<\n typeof leaseVsPurchaseResponseSchema\n>;\n\n// ============================================================================\n// SDK Config\n// ============================================================================\n\nexport interface SecureLendConfig {\n /** API Key for authentication. */\n apiKey?: string;\n /** MCP Server URL (default: https://mcp.securelend.ai/mcp) */\n serverUrl?: string;\n}\n","import { z } from \"zod\";\nimport { MCPClient } from \"./utils/mcp\";\nimport * as types from \"./types\";\nimport { SecureLendError, ValidationError } from \"./utils/errors\";\n\n// Minimal interface definitions to satisfy the compiler.\n// This is necessary because `@modelcontextprotocol/sdk` may not export `ToolResult` as expected.\ninterface ContentItem {\n type: \"resource\" | \"text\";\n resource?: {\n mimeType: string;\n text: string;\n };\n text?: string;\n}\ninterface ToolResult {\n content: ContentItem[];\n structuredContent?: unknown;\n}\n\n/**\n * SecureLend MCP-native SDK Client\n *\n * @example\n * ```typescript\n * import { SecureLend } from '@securelend/sdk';\n *\n * const securelend = new SecureLend();\n *\n * const loans = await securelend.compareBusinessLoans({\n * amount: 200000,\n * purpose: 'equipment',\n * business: {\n * revenue: 1200000,\n * creditScore: 720,\n * timeInBusiness: 36\n * }\n * });\n * ```\n */\nexport class SecureLend {\n private mcpClient: MCPClient;\n\n /** Raw access to the underlying MCP client */\n public readonly mcp: MCPClient[\"mcp\"];\n\n /**\n * Create a new SecureLend client\n *\n * @param config - Optional configuration\n */\n constructor(config?: types.SecureLendConfig) {\n let mcpURL = config?.serverUrl || \"https://mcp.securelend.ai/mcp\";\n\n // Handle relative URLs in browser environments\n if (typeof window !== \"undefined\" && mcpURL.startsWith(\"/\")) {\n mcpURL = window.location.origin + mcpURL;\n }\n\n this.mcpClient = new MCPClient({ apiKey: config?.apiKey || \"\", mcpURL });\n this.mcp = this.mcpClient.mcp;\n }\n\n // --- Loan Comparison ---\n\n async comparePersonalLoans(\n request: types.PersonalLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_personal_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareBusinessLoans(\n request: types.BusinessLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_business_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async comparePersonalMortgages(\n request: types.MortgageSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_personal_mortgages\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareBusinessMortgages(\n request: types.MortgageSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_business_mortgages\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareCarLoans(\n request: types.AutoLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_car_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareStudentLoans(\n request: types.StudentLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_student_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n // --- Banking & Credit Cards ---\n\n async compareBusinessBanking(\n request: types.BusinessBankingSearchSchema,\n ): Promise<types.BusinessBankingComparisonResponse> {\n return this.callTool(\n \"compare_business_banking\",\n request,\n types.businessBankingComparisonResponseSchema,\n );\n }\n\n async comparePersonalBanking(\n request: types.PersonalBankingSearchSchema,\n ): Promise<types.PersonalBankingComparisonResponse> {\n return this.callTool(\n \"compare_personal_banking\",\n request,\n types.personalBankingComparisonResponseSchema,\n );\n }\n\n async compareSavingsAccounts(\n request: types.SavingsSearchSchema,\n ): Promise<types.SavingsAccountComparisonResponse> {\n return this.callTool(\n \"compare_savings_accounts\",\n request,\n types.savingsComparisonResponseSchema,\n );\n }\n\n async compareBusinessCreditCards(\n request: types.BusinessCreditCardSearchParams,\n ): Promise<types.BusinessCreditCardComparisonResponse> {\n return this.callTool(\n \"compare_business_credit_cards\",\n request,\n types.businessCreditCardComparisonResponseSchema,\n );\n }\n\n async comparePersonalCreditCards(\n request: types.PersonalCreditCardSearchSchema,\n ): Promise<types.PersonalCreditCardComparisonResponse> {\n return this.callTool(\n \"compare_personal_credit_cards\",\n request,\n types.personalCreditCardComparisonResponseSchema,\n );\n }\n\n // --- Financial Calculators ---\n\n async calculateLoanPayment(\n request: types.LoanPaymentParams,\n ): Promise<types.LoanCalculationResponse> {\n return this.callTool(\n \"calculate_loan_payment\",\n request,\n types.loanPaymentResponseSchema,\n );\n }\n\n async calculateMortgagePayment(\n request: types.MortgagePaymentParams,\n ): Promise<types.MortgageCalculationResponse> {\n return this.callTool(\n \"calculate_mortgage_payment\",\n request,\n types.mortgagePaymentResponseSchema,\n );\n }\n\n async compareLeaseVsPurchase(\n request: types.LeaseVsPurchaseParams,\n ): Promise<types.LeaseVsPurchaseResponse> {\n return this.callTool(\n \"compare_lease_vs_purchase\",\n request,\n types.leaseVsPurchaseResponseSchema,\n );\n }\n\n // --- Application Management ---\n\n async getOffer(\n request: types.GetOfferParams,\n ): Promise<types.PersonalApplication> {\n return this.callTool(\"get_offer\", request, types.personalApplicationSchema);\n }\n\n async getMultipleOffers(\n request: types.GetMultipleOffersParams,\n ): Promise<types.PersonalApplication> {\n return this.callTool(\n \"get_multiple_offers\",\n request,\n types.personalApplicationSchema,\n );\n }\n\n async displayOfferForm(\n request: types.DisplayOfferFormParams,\n ): Promise<types.DisplayOfferFormResponse> {\n return this.callTool(\n \"display_offer_form\",\n request,\n types.displayOfferFormResponseSchema,\n );\n }\n\n async trackOfferStatus(\n request: types.TrackOfferStatusParams,\n ): Promise<types.TrackOfferStatusResponse> {\n return this.callTool(\n \"track_offer_status\",\n request,\n types.trackOfferStatusResponseSchema,\n );\n }\n\n async displayUploadDocumentsForm(\n request: types.DisplayUploadDocumentsFormParams,\n ): Promise<types.DisplayUploadDocumentsFormResponse> {\n return this.callTool(\n \"display_upload_documents_form\",\n request,\n types.displayUploadDocumentsFormResponseSchema,\n );\n }\n\n async submitDocuments(\n request: types.SubmitDocumentsParams,\n ): Promise<types.SubmitDocumentsResponse> {\n return this.callTool(\n \"submit_documents\",\n request,\n types.submitDocumentsResponseSchema,\n );\n }\n\n // --- Core Methods ---\n\n /**\n * Manually connect to the MCP server.\n * Connection is otherwise established on the first tool call.\n */\n async connect(): Promise<void> {\n await this.mcpClient.connect();\n }\n\n /**\n * Enable debug logging\n */\n enableDebug(): void {\n this.mcpClient.enableDebug();\n }\n\n /**\n * Disable debug logging\n */\n disableDebug(): void {\n this.mcpClient.disableDebug();\n }\n\n /**\n * Set the API key for subsequent requests.\n * @param apiKey - The new API key\n */\n setApiKey(apiKey: string): void {\n this.mcpClient.setApiKey(apiKey);\n }\n\n // --- Private Helpers ---\n\n private async callTool<T extends { widget?: string }>(\n toolName: string,\n request: unknown,\n schema: z.ZodType<T>,\n ): Promise<T> {\n const toolResult = await this.mcpClient.callTool(\n toolName,\n request as Record<string, unknown>,\n );\n const data = this.parseJsonResponse(toolResult as ToolResult, schema);\n\n return { ...data, widget: this.getWidget(toolResult as ToolResult) };\n }\n\n private parseJsonResponse<T>(\n toolResult: ToolResult,\n schema: z.ZodType<T>,\n ): T {\n try {\n let jsonData: unknown;\n\n // Prefer structuredContent if available from the underlying MCP-SDK\n if (toolResult.structuredContent) {\n jsonData = toolResult.structuredContent;\n } else {\n const jsonContent = toolResult.content.find(\n (c: ContentItem) =>\n (c.type === \"resource\" &&\n c.resource &&\n c.resource.mimeType === \"application/json\") ||\n c.type === \"text\",\n );\n\n if (!jsonContent) {\n throw new SecureLendError(\n \"Invalid response from MCP server: missing JSON content\",\n \"mcp_error\",\n toolResult,\n );\n }\n\n if (jsonContent.type === \"text\" && jsonContent.text) {\n jsonData = JSON.parse(jsonContent.text);\n } else if (jsonContent.type === \"resource\" && jsonContent.resource) {\n jsonData = JSON.parse(jsonContent.resource.text);\n } else {\n throw new Error(\"Invalid content structure\");\n }\n }\n return schema.parse(jsonData);\n } catch (e) {\n if (e instanceof z.ZodError) {\n throw new ValidationError(\n \"Invalid response from MCP server: failed to validate JSON content\",\n { validationErrors: e.issues, serverResponse: toolResult },\n );\n }\n throw new SecureLendError(\n \"Invalid response from MCP server: failed to parse JSON content\",\n \"mcp_error\",\n { originalError: e, serverResponse: toolResult },\n );\n }\n }\n\n private getWidget(toolResult: ToolResult): string | undefined {\n const widgetContent = toolResult.content.find(\n (c: ContentItem) =>\n c.type === \"resource\" && c.resource?.mimeType === \"text/html\",\n );\n if (widgetContent?.type === \"resource\" && widgetContent.resource) {\n return widgetContent.resource.text;\n }\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/errors.ts","../src/utils/mcp.ts","../src/types/platform.ts","../src/types/index.ts","../src/rest.ts","../src/contract.ts","../src/resources/leads.ts","../src/resources/matches.ts","../src/resources/packages.ts","../src/resources/consents.ts","../src/webhooks.ts","../src/resources/outcomes.ts","../src/resources/creditBox.ts","../src/resources/feedback.ts","../src/resources/liquidity.ts","../src/client.ts"],"names":["Client","StreamableHTTPClientTransport","z","CreditTier","ProductType","ApplicationType","ApplicationStatus","ProviderStatus","timingSafeEqual","createHash","createHmac","expected"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Error classes for SecureLend SDK\n */\n\n/**\n * Base error class for all SecureLend SDK errors\n */\nexport class SecureLendError extends Error {\n public readonly type: string;\n public readonly details?: unknown;\n\n constructor(message: string, type: string, details?: unknown) {\n super(message);\n this.name = \"SecureLendError\";\n this.type = type;\n this.details = details;\n\n // Maintains proper stack trace for where our error was thrown\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\n/**\n * Authentication error (invalid API key, etc.)\n */\nexport class AuthenticationError extends SecureLendError {\n constructor(message: string) {\n super(message, \"authentication_error\");\n this.name = \"AuthenticationError\";\n }\n}\n\n/**\n * Rate limit error\n */\nexport class RateLimitError extends SecureLendError {\n public readonly retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message, \"rate_limit_error\");\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\n/**\n * Validation error (invalid request parameters)\n */\nexport class ValidationError extends SecureLendError {\n constructor(message: string, errors?: unknown) {\n super(message, \"validation_error\", errors);\n this.name = \"ValidationError\";\n }\n}\n\n/**\n * Resource not found error\n */\nexport class NotFoundError extends SecureLendError {\n constructor(message: string) {\n super(message, \"not_found\");\n this.name = \"NotFoundError\";\n }\n}\n\n/**\n * Network error\n */\nexport class NetworkError extends SecureLendError {\n constructor(message: string) {\n super(message, \"network_error\");\n this.name = \"NetworkError\";\n }\n}\n\n/**\n * Server error (5xx)\n */\nexport class ServerError extends SecureLendError {\n constructor(message: string) {\n super(message, \"server_error\");\n this.name = \"ServerError\";\n }\n}\n\n/**\n * A flag-gated route returned 404. The feature is off for this workspace.\n */\nexport class FeatureDisabledError extends SecureLendError {\n constructor(\n message = \"This feature is off for this workspace.\",\n details?: unknown,\n ) {\n super(message, \"feature_disabled\", details);\n this.name = \"FeatureDisabledError\";\n }\n}\n\n/**\n * A lender read needs a live consent for that package version.\n */\nexport class ConsentRequiredError extends SecureLendError {\n constructor(\n message = \"A live consent is required before this package can be read.\",\n details?: unknown,\n ) {\n super(message, \"consent_required\", details);\n this.name = \"ConsentRequiredError\";\n }\n}\n\n/**\n * The outcome cannot move from the current state to the requested state.\n */\nexport class InvalidTransitionError extends SecureLendError {\n constructor(message = \"That outcome is not available.\", details?: unknown) {\n super(message, \"invalid_transition\", details);\n this.name = \"InvalidTransitionError\";\n }\n}\n\n/**\n * A webhook signature was missing, expired, or did not match the body.\n */\nexport class WebhookSignatureError extends SecureLendError {\n constructor(message = \"Webhook signature did not match.\", details?: unknown) {\n super(message, \"webhook_signature\", details);\n this.name = \"WebhookSignatureError\";\n }\n}\n","import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport {\n SecureLendError,\n AuthenticationError,\n NetworkError,\n ValidationError,\n} from \"./errors\";\n\ninterface MCPClientConfig {\n apiKey: string;\n mcpURL: string;\n}\n\n\nexport class MCPClient {\n public mcp: Client;\n private config: MCPClientConfig;\n private debug: boolean = false;\n private isConnected: boolean = false;\n\n constructor(config: MCPClientConfig) {\n this.config = config;\n\n this.mcp = new Client({ name: \"@securelend/sdk\", version: \"1.0.0\" });\n }\n\n async connect(): Promise<void> {\n if (this.isConnected) return;\n\n try {\n if (this.debug) {\n console.log(\n `[SecureLend SDK] Connecting to MCP server at ${this.config.mcpURL}`,\n );\n }\n const transport = new StreamableHTTPClientTransport(\n new URL(this.config.mcpURL),\n );\n await this.mcp.connect(transport);\n this.isConnected = true;\n if (this.debug) {\n console.log(`[SecureLend SDK] MCP client connected.`);\n }\n } catch (error: unknown) {\n this.isConnected = false;\n // Poor man's error mapping. The MCP SDK should have better error types.\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (errorMessage.includes(\"401\")) {\n throw new AuthenticationError(\n \"MCP connection failed: Invalid API key.\",\n );\n }\n throw new NetworkError(`MCP connection failed: ${errorMessage}`);\n }\n }\n\n async callTool(\n name: string,\n args: Record<string, any>,\n ): Promise<any> {\n await this.connect(); // Ensure connection exists\n\n if (this.debug) {\n console.log(`[SecureLend SDK] Calling tool: ${name} with args:`, args);\n }\n\n try {\n const result = await this.mcp.callTool({\n name,\n arguments: args,\n });\n\n if (this.debug) {\n console.log(`[SecureLend SDK] Tool result for ${name}:`, result);\n }\n return result;\n } catch (error: unknown) {\n if (error instanceof SecureLendError) throw error;\n // Again, poor man's error mapping\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (errorMessage.includes(\"400\")) {\n throw new ValidationError(\"Invalid tool arguments\", error);\n }\n throw new SecureLendError(\n `Tool call failed: ${errorMessage}`,\n \"mcp_tool_error\",\n error,\n );\n }\n }\n\n setApiKey(apiKey: string): void {\n // MCP client doesn't support hot-swapping API key after connection.\n // This would require a disconnect/reconnect cycle.\n // For now, we'll just update the config for the *next* connection.\n this.config.apiKey = apiKey;\n this.isConnected = false; // Force reconnect on next call\n }\n\n enableDebug(): void {\n this.debug = true;\n }\n\n disableDebug(): void {\n this.debug = false;\n }\n}\n","import { z } from \"zod\";\n\n/**\n * Response enums are plain strings so a new server value does not crash the client.\n * Request checks use the known lists below.\n */\nexport const OUTCOME_STATES = [\n \"viewed\",\n \"info_requested\",\n \"declined\",\n \"term_sheet\",\n \"approved\",\n \"funded\",\n \"withdrawn\",\n] as const;\n\nexport const DECLINE_REASON_CODES = [\n \"outside_credit_box\",\n \"industry\",\n \"time_in_business\",\n \"dscr\",\n \"collateral\",\n \"amount\",\n \"state\",\n \"credit_score\",\n \"docs_incomplete\",\n \"capacity\",\n \"other\",\n] as const;\n\nexport const SHARE_SCOPES = [\"summary\", \"memo\", \"checks\", \"documents\"] as const;\n\nexport const FEEDBACK_TYPES = [\n \"rating\",\n \"edit\",\n \"comment\",\n \"approve\",\n \"reject\",\n \"regenerate\",\n] as const;\n\nexport const FEEDBACK_TARGETS = [\n \"memo_section\",\n \"memo\",\n \"tool\",\n \"decision\",\n \"lead_match\",\n] as const;\n\nexport const EVENT_TYPES = [\n \"lead.created\",\n \"lead.matched\",\n \"lead.notified\",\n \"package.shared\",\n \"package.opened\",\n \"consent.revoked\",\n \"outcome.recorded\",\n \"credit_box.updated\",\n \"feedback.recorded\",\n] as const;\n\nexport const leadSchema = z\n .object({\n id: z.string(),\n tenantId: z.string().nullable().optional(),\n status: z.string().nullable().optional(),\n productType: z.string().nullable().optional(),\n amount: z.number().nullable().optional(),\n legalName: z.string().nullable().optional(),\n email: z.string().nullable().optional(),\n caseId: z.string().nullable().optional(),\n lenders: z\n .array(\n z\n .object({\n id: z.string().nullable().optional(),\n name: z.string().optional(),\n tenantId: z.string().nullable().optional(),\n })\n .passthrough(),\n )\n .optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n })\n .passthrough();\nexport type Lead = z.infer<typeof leadSchema>;\n\nexport const leadListSchema = z\n .object({\n items: z.array(leadSchema),\n tenantId: z.string().optional(),\n })\n .passthrough();\n\nexport const uploadResultSchema = z\n .object({\n key: z.string().optional(),\n filename: z.string().optional(),\n documentType: z.string().optional(),\n applicationId: z.string().optional(),\n })\n .passthrough();\nexport type UploadResult = z.infer<typeof uploadResultSchema>;\n\nexport const matchComponentsSchema = z\n .object({\n rules: z.number().nullable().optional(),\n fit: z.number().nullable().optional(),\n outcome: z.number().nullable().optional(),\n sba: z.number().nullable().optional(),\n samples: z.number().nullable().optional(),\n })\n .passthrough();\nexport type MatchComponents = z.infer<typeof matchComponentsSchema>;\n\nexport const lenderMatchSchema = z\n .object({\n lenderId: z.string().nullable().optional(),\n score: z.number().nullable().optional(),\n components: matchComponentsSchema.nullable().optional(),\n generationId: z.string().nullable().optional(),\n })\n .passthrough();\nexport type LenderMatch = z.infer<typeof lenderMatchSchema>;\n\nexport const matchListSchema = z\n .object({\n leadId: z.string(),\n generationId: z.string().nullable().optional(),\n lenders: z.array(lenderMatchSchema),\n })\n .passthrough();\nexport type MatchList = z.infer<typeof matchListSchema>;\n\nexport const packageSchema = z\n .object({\n packageId: z.string().optional(),\n caseId: z.string().optional(),\n id: z.string().optional(),\n generationId: z.string().nullable().optional(),\n auth: z.string().optional(),\n error: z.string().optional(),\n deskUrl: z.string().optional(),\n })\n .passthrough();\nexport type PackageRecord = z.infer<typeof packageSchema>;\n\nexport const shareConsentSchema = z\n .object({\n id: z.string(),\n leadId: z.string(),\n packageId: z.string(),\n packageVersion: z.number(),\n lenderId: z.string().optional(),\n scope: z.array(z.string()),\n expiresAt: z.string(),\n revokedAt: z.string().nullable().optional(),\n borrowerRef: z.string().optional(),\n grantedAt: z.string().optional(),\n })\n .passthrough();\nexport type ShareConsent = z.infer<typeof shareConsentSchema>;\n\nexport const shareReceiptSchema = z\n .object({\n id: z.string(),\n consentId: z.string(),\n event: z.string(),\n createdAt: z.string(),\n lenderId: z.string().optional(),\n })\n .passthrough();\nexport type ShareReceipt = z.infer<typeof shareReceiptSchema>;\n\nexport const leadOutcomeSchema = z\n .object({\n id: z.string(),\n leadId: z.string(),\n lenderId: z.string(),\n state: z.string(),\n reasonCode: z.string().nullable().optional(),\n reasonText: z.string().nullable().optional(),\n fundedAmount: z.number().nullable().optional(),\n fundedOn: z.string().nullable().optional(),\n surface: z.string().optional(),\n feedbackId: z.string().nullable().optional(),\n matchGenerationId: z.string().nullable().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type LeadOutcome = z.infer<typeof leadOutcomeSchema>;\n\nexport const creditBoxSchema = z\n .object({\n version: z.number(),\n lenderId: z.string().optional(),\n criteria: z.record(z.unknown()).optional(),\n capacityPerWeek: z.number().nullable().optional(),\n status: z.string(),\n pausedUntil: z.string().nullable().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type CreditBox = z.infer<typeof creditBoxSchema>;\n\nexport const creditBoxViewSchema = z\n .object({\n current: creditBoxSchema.nullable(),\n versions: z.array(creditBoxSchema),\n })\n .passthrough();\nexport type CreditBoxView = z.infer<typeof creditBoxViewSchema>;\n\nexport const feedbackEventSchema = z\n .object({\n id: z.string(),\n generationId: z.string().nullable().optional(),\n caseId: z.string().nullable().optional(),\n surface: z.string().optional(),\n type: z.string(),\n rating: z.number().nullable().optional(),\n comment: z.string().nullable().optional(),\n targetKind: z.string().optional(),\n targetKey: z.string().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type FeedbackEvent = z.infer<typeof feedbackEventSchema>;\n\nexport const feedbackCreatedSchema = z\n .object({\n id: z.string(),\n })\n .passthrough();\nexport type FeedbackCreated = z.infer<typeof feedbackCreatedSchema>;\n\nexport const liquidityCellSchema = z\n .object({\n key: z.string(),\n leads: z.number(),\n matchRate: z.number().nullable().optional(),\n responseRate48h: z.number().nullable().optional(),\n medianResponseMs: z.number().nullable().optional(),\n termSheetRate: z.number().nullable().optional(),\n fundedRate: z.number().nullable().optional(),\n fundedAmount: z.number().nullable().optional(),\n lenderCount: z.number().optional(),\n })\n .passthrough();\nexport type LiquidityCell = z.infer<typeof liquidityCellSchema>;\n\nexport const liquidityReportSchema = z\n .object({\n view: z.string(),\n groupBy: z.string(),\n cells: z.array(liquidityCellSchema),\n })\n .passthrough();\nexport type LiquidityMetrics = z.infer<typeof liquidityReportSchema>;\n\nexport const secureLendEventSchema = z\n .object({\n type: z.string(),\n id: z.string(),\n createdAt: z.string(),\n tenantId: z.string(),\n data: z.record(z.unknown()).optional(),\n })\n .passthrough();\nexport type SecureLendEvent = z.infer<typeof secureLendEventSchema>;\n\nexport interface LeadCreateInput {\n confirmed?: boolean;\n legalName?: string;\n email?: string;\n productType?: string;\n amount?: number;\n lenders?: Array<{\n id?: string;\n name?: string;\n email?: string;\n tenantId?: string;\n }>;\n [key: string]: unknown;\n}\n\nexport interface LeadListFilter {\n status?: string;\n}\n\nexport interface UploadFile {\n filename: string;\n bytes: Uint8Array;\n mime?: string;\n documentType?: string;\n}\n\nexport interface PackageStartInput {\n borrower: string;\n amount: number;\n currency: string;\n security: \"unsecured\" | \"secured\";\n guarantees?: Array<Record<string, unknown>>;\n purpose?: string;\n tenorMonths?: number;\n amortisation?: string;\n pricing?: string;\n}\n\nexport interface ConsentCreateInput {\n leadId: string;\n packageId: string;\n packageVersion: number;\n lenderIds?: string[];\n scope?: string[];\n expiresAt: string;\n borrowerRef: string;\n}\n\nexport interface OutcomeRecordInput {\n lenderId?: string;\n state: string;\n reasonCode?: string;\n reasonText?: string;\n fundedAmount?: number;\n fundedOn?: string;\n surface?: string;\n}\n\nexport interface CreditBoxWriteInput {\n criteria: Record<string, unknown>;\n capacityPerWeek?: number;\n lenderId?: string;\n}\n\nexport interface FeedbackSubmitInput {\n type: string;\n rating?: number;\n comment?: string;\n generationId?: string;\n caseId?: string;\n surface?: string;\n target: { kind: string; key: string };\n before?: string;\n after?: string;\n}\n\nexport interface LiquidityQuery {\n groupBy?: \"product\" | \"amount_band\" | \"state\" | \"naics\" | string;\n from?: string;\n to?: string;\n}\n\nexport interface RequestOptions {\n idempotencyKey?: string;\n}\n","import { z } from \"zod\";\n\n// A generic schema for application data, which can be any of the search schemas\nconst anyObjectSchema = z.object({}).passthrough();\n\n// Shared Enums\nexport enum CreditTier {\n PRIME = \"PRIME\",\n NEAR_PRIME = \"NEAR_PRIME\",\n SUBPRIME = \"SUBPRIME\",\n DEEP_SUBPRIME = \"DEEP_SUBPRIME\",\n UNKNOWN = \"UNKNOWN\",\n}\n\nexport enum ProductType {\n INSTALLMENT_LOAN = \"INSTALLMENT_LOAN\",\n LINE_OF_CREDIT = \"LINE_OF_CREDIT\",\n SHORT_TERM_CREDIT = \"SHORT_TERM_CREDIT\",\n BNPL = \"BNPL\",\n MORTGAGE = \"MORTGAGE\",\n AUTO_LOAN = \"AUTO_LOAN\",\n AUTO_REFINANCE = \"AUTO_REFINANCE\",\n STUDENT_LOAN = \"STUDENT_LOAN\",\n STUDENT_LOAN_REFINANCE = \"STUDENT_LOAN_REFINANCE\",\n BUSINESS_LOAN = \"BUSINESS_LOAN\",\n BUSINESS_BANKING = \"BUSINESS_BANKING\",\n BUSINESS_CREDIT_CARD = \"BUSINESS_CREDIT_CARD\",\n PERSONAL_BANKING = \"PERSONAL_BANKING\",\n SAVINGS_ACCOUNT = \"SAVINGS_ACCOUNT\",\n PERSONAL_CREDIT_CARD = \"PERSONAL_CREDIT_CARD\",\n}\n\n// Lender Directory Related Types\nexport interface Lender {\n lender_id: string;\n canonical_name: string;\n entity_type: string;\n product_types: string[];\n credit_tier_target: string[];\n amount_min?: number;\n amount_max?: number;\n states_served?: string[];\n funding_speed?: string;\n brand_status: string;\n exclusion_reason?: string;\n source: string;\n updated_at: string;\n gsi1pks: string[];\n lanes?: string[];\n primary_lane?: string;\n lane_pk?: string;\n}\n\nexport interface LenderSearchCriteria {\n creditScore?: number;\n creditTier?: CreditTier;\n loanAmount: number;\n state?: string;\n productType: ProductType;\n includeReviewStatus?: boolean; // Include lenders with REVIEW status\n}\n\n// Loan Offer Related Types\n\nconst moneySchema = z.object({\n amount: z.number(),\n currency: z.string().length(3).optional(),\n});\n\nexport type Money = z.infer<typeof moneySchema>;\n\nexport interface BankAccountOffer {\n id: string;\n providerName: string;\n providerLogo?: string;\n accountName: string;\n monthlyFee: number;\n minBalance: number;\n interestRate: number; // APY\n features: string[];\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport interface CreditCardOffer {\n id: string;\n issuerName: string;\n issuerLogo?: string;\n cardName: string;\n apr: {\n min: number;\n max: number;\n };\n annualFee: number;\n rewards: {\n type: \"cash_back\" | \"points\" | \"miles\";\n summary: string;\n signupBonus?: string;\n };\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport const bankAccountOfferSchema = z.object({\n id: z.string(),\n providerName: z.string(),\n providerLogo: z.string().optional(),\n accountName: z.string(),\n monthlyFee: z.number(),\n minBalance: z.number(),\n interestRate: z.number(),\n features: z.array(z.string()),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport const creditCardOfferSchema = z.object({\n id: z.string(),\n issuerName: z.string(),\n issuerLogo: z.string().optional(),\n cardName: z.string(),\n apr: z.object({\n min: z.number(),\n max: z.number(),\n }),\n annualFee: z.number(),\n rewards: z.object({\n type: z.enum([\"cash_back\", \"points\", \"miles\"]),\n summary: z.string(),\n signupBonus: z.string().optional(),\n }),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport type Percentage = number; // 0-100\nexport type BasisPoints = number;\nexport type DateString = string; // ISO 8601\n\nexport enum ApplicationType {\n PERSONAL = \"PERSONAL\",\n BUSINESS = \"BUSINESS\",\n}\n\nexport enum ApplicationStatus {\n DRAFT = \"DRAFT\",\n SUBMITTED = \"SUBMITTED\",\n IN_REVIEW = \"IN_REVIEW\",\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n APPROVED = \"APPROVED\",\n DECLINED = \"DECLINED\",\n CLOSED = \"CLOSED\",\n}\n\nexport enum ProviderStatus {\n PENDING = \"PENDING\", // Not yet sent\n SUBMITTED = \"SUBMITTED\", // Sent to provider\n REFERRED = \"REFERRED\", // Sent via affiliate link\n ERROR = \"ERROR\", // Failed to send\n RECEIVED = \"RECEIVED\", // Provider acknowledged\n}\n\nexport const personalApplicantSchema = z.object({\n firstName: z.string().describe(\"The applicant's first name.\"),\n lastName: z.string().describe(\"The applicant's last name.\"),\n email: z.string().email().describe(\"The applicant's email address.\"),\n phone: z.string().optional().describe(\"The applicant's phone number.\"),\n});\n\n// Published Schema Aligned Types\n\nconst lenderSchema = z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n logoUrl: z.string().url().optional(),\n});\n\nconst productSchema = z.object({\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n});\n\nconst loanTermsSchema = z.object({\n amount: moneySchema,\n interestRate: z.object({\n type: z.enum([\"fixed\", \"variable\"]),\n rate: z.number().optional(), // rate might not always be available if only APR is given\n apr: z.number(),\n }),\n termMonths: z.number().int(),\n payment: z.object({\n frequency: z.string().optional(),\n amount: moneySchema,\n }),\n totalCost: moneySchema.optional(),\n repayment: z\n .object({\n totalRepaymentAmount: z.number(),\n costOfFinancing: z.number(),\n })\n .optional(),\n});\n\nconst loanFeesSchema = z\n .object({\n origination: z\n .object({\n amount: moneySchema.optional(),\n percentage: z.number().optional(),\n })\n .optional(),\n })\n .optional();\n\nconst matchingSchema = z\n .object({\n approvalProbability: z.number().min(0).max(1).optional(),\n matchScore: z.number().min(0).max(100).optional(),\n matchReasons: z.array(z.string()).optional(),\n })\n .optional();\n\nconst processSchema = z.object({\n applicationMethod: z.string(),\n applicationUrl: z.string().url().optional(),\n fundingSpeed: z\n .object({\n description: z.string(),\n })\n .optional(),\n});\n\nexport const loanOfferSchema = z.object({\n offerId: z.string(),\n lender: lenderSchema,\n product: productSchema,\n terms: loanTermsSchema,\n fees: loanFeesSchema,\n matching: matchingSchema,\n process: processSchema.optional(),\n // Additional fields for UI that were in the old schema\n lenderInfo: z.string().optional(),\n badges: z.array(z.string()).optional(),\n isSecureLendTenant: z.boolean().optional(),\n});\n\nexport type LoanOffer = z.infer<typeof loanOfferSchema>;\n\n// Adapter Interface\nexport interface PersonalLenderAdapter {\n readonly name: string;\n search(params: PersonalLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessLenderAdapter {\n readonly name: string;\n search(params: BusinessLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface MortgageLenderAdapter {\n readonly name: string;\n search(params: MortgageSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface AutoLenderAdapter {\n readonly name: string;\n search(params: AutoLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface StudentLenderAdapter {\n readonly name: string;\n search(params: StudentLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessCreditCardAdapter {\n readonly name: string;\n search(\n params: BusinessCreditCardSearchParams,\n ): Promise<BusinessCreditCardOffer[]>;\n}\n\nexport interface BusinessBankingAdapter {\n readonly name: string;\n search(\n params: BusinessBankingSearchSchema & {\n maxResults?: number;\n includeReviewStatus?: boolean;\n },\n ): Promise<BusinessBankingOffer[]>;\n}\n\nexport interface PersonalBankingAdapter {\n readonly name: string;\n search(params: PersonalBankingSearchSchema): Promise<PersonalBankingOffer[]>;\n}\n\nexport interface SavingsAdapter {\n readonly name: string;\n search(params: SavingsSearchSchema): Promise<SavingsOffer[]>;\n}\n\nexport interface PersonalCreditCardAdapter {\n readonly name: string;\n search(\n params: PersonalCreditCardSearchSchema,\n ): Promise<PersonalCreditCardOffer[]>;\n}\n\n// Zod Schemas for Tool Input/Output\nexport const personalLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired loan amount in USD (e.g., 25000).\"),\n purpose: z\n .enum([\n \"debt_consolidation\",\n \"home_improvement\",\n \"major_purchase\",\n \"medical\",\n \"vacation\",\n \"other\",\n ])\n .describe(\"The purpose of the loan.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n monthlyIncome: z\n .number()\n .min(0)\n .optional()\n .describe(\"Applicant's gross monthly income in USD.\"),\n employmentStatus: z\n .enum([\"employed\", \"self_employed\", \"retired\", \"unemployed\"])\n .optional()\n .describe(\"The applicant's employment status.\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type PersonalLoanSearchParams = z.infer<typeof personalLoanSearchSchema>;\n\n// Generic schema for business loan data\nexport const businessLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .describe(\"The desired loan amount, e.g., 50000 for $50,000.\"),\n purpose: z\n .string()\n .describe(\"The reason for the loan, e.g., 'working capital'.\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's gross annual revenue in USD.\"),\n industry: z\n .string()\n .optional()\n .describe(\"The industry the business operates in, e.g., 'technology'.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the business is located (2-letter code).\"),\n});\nexport type BusinessLoanSearchParams = z.infer<typeof businessLoanSearchSchema>;\n\nexport const mortgageSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(50000)\n .max(2000000)\n .describe(\"The desired mortgage loan amount in USD.\"),\n homePrice: z\n .number()\n .min(50000)\n .max(5000000)\n .optional()\n .describe(\"The purchase price of the home in USD.\"),\n downPayment: z\n .number()\n .min(0)\n .optional()\n .describe(\"The amount of the down payment in USD.\"),\n creditScore: z\n .number()\n .min(500)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (500-850).\"),\n loanType: z\n .enum([\"conventional\", \"fha\", \"va\", \"jumbo\", \"refinance\"])\n .describe(\"The type of mortgage loan.\"),\n propertyType: z\n .enum([\"primary\", \"secondary\", \"investment\"])\n .optional()\n .describe(\"The intended use of the property.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the property is located (2-letter code).\"),\n});\nexport type MortgageSearchParams = z.infer<typeof mortgageSearchSchema>;\n\nexport const autoLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired auto loan amount in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n isNew: z\n .boolean()\n .describe(\"Specifies if the vehicle is new (true) or used (false).\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type AutoLoanSearchParams = z.infer<typeof autoLoanSearchSchema>;\n\nexport const studentLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(250000)\n .describe(\"The total amount needed for the student loan in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The student's estimated credit score (300-850).\"),\n coSignerCreditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\n \"The co-signer's estimated credit score (300-850), if applicable.\",\n ),\n degreeType: z\n .enum([\"undergraduate\", \"graduate\", \"mba\", \"medical\", \"law\"])\n .describe(\"The type of degree the loan is for.\"),\n state: z\n .string()\n .optional()\n .describe(\"The student's state of residence (2-letter code).\"),\n});\nexport type StudentLoanSearchParams = z.infer<typeof studentLoanSearchSchema>;\n\n// Schemas for Business Credit Card Comparison\nexport const businessCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's annual revenue in USD.\"),\n businessAgeInYears: z\n .number()\n .min(0)\n .optional()\n .describe(\"The age of the business in years.\"),\n});\nexport type BusinessCreditCardSearchParams = z.infer<\n typeof businessCreditCardSearchSchema\n>;\n\nexport const businessCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n creditScoreRange: z.string(),\n welcomeBonus: z.string(),\n terms: z.object({\n apr: z.number(),\n annualFee: z.number(),\n creditLimit: moneySchema,\n }),\n});\nexport type BusinessCreditCardOffer = z.infer<\n typeof businessCreditCardOfferSchema\n>;\n\nexport const businessCreditCardComparisonResponseSchema = z.object({\n offers: z.array(businessCreditCardOfferSchema),\n searchCriteria: businessCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessCreditCardComparisonResponse = z.infer<\n typeof businessCreditCardComparisonResponseSchema\n>;\n\n// Schemas for Business Banking Comparison\nexport const businessBankingSearchSchema = z.object({\n industry: z.string().optional().describe(\"The business's industry.\"),\n monthlyTransactions: z\n .number()\n .optional()\n .describe(\"Estimated number of monthly transactions.\"),\n});\nexport type BusinessBankingSearchSchema = z.infer<\n typeof businessBankingSearchSchema\n>;\n\nexport const businessBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n monthlyFee: z.string(),\n bonus: z.string(),\n});\nexport type BusinessBankingOffer = z.infer<typeof businessBankingOfferSchema>;\n\nexport const businessBankingComparisonResponseSchema = z.object({\n offers: z.array(businessBankingOfferSchema),\n searchCriteria: businessBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessBankingComparisonResponse = z.infer<\n typeof businessBankingComparisonResponseSchema\n>;\n\n// Schemas for Personal Banking Comparison\nexport const personalBankingSearchSchema = z.object({\n features: z\n .array(z.string())\n .optional()\n .describe(\"Desired account features.\"),\n});\nexport type PersonalBankingSearchSchema = z.infer<\n typeof personalBankingSearchSchema\n>;\n\nexport const personalBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n bonus: z.string(),\n monthlyFee: z.string(),\n overdraftRating: z.number().min(0).max(5),\n});\nexport type PersonalBankingOffer = z.infer<typeof personalBankingOfferSchema>;\n\nexport const personalBankingComparisonResponseSchema = z.object({\n offers: z.array(personalBankingOfferSchema),\n searchCriteria: personalBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalBankingComparisonResponse = z.infer<\n typeof personalBankingComparisonResponseSchema\n>;\n\n// Schemas for Savings Account Comparison\nexport const savingsSearchSchema = z.object({\n initialDeposit: z\n .number()\n .optional()\n .describe(\"The initial deposit amount in USD.\"),\n});\nexport type SavingsSearchSchema = z.infer<typeof savingsSearchSchema>;\n\nexport const savingsOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n apy: z.string(),\n interestRate: z.string().optional(),\n minBalanceForApy: z.string(),\n monthlyFee: z.string(),\n});\nexport type SavingsOffer = z.infer<typeof savingsOfferSchema>;\n\nexport const savingsComparisonResponseSchema = z.object({\n offers: z.array(savingsOfferSchema),\n searchCriteria: savingsSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type SavingsAccountComparisonResponse = z.infer<\n typeof savingsComparisonResponseSchema\n>;\n\n// Schemas for Personal Credit Card Comparison\nexport const personalCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n rewardsType: z\n .enum([\"cash_back\", \"travel\", \"points\"])\n .optional()\n .describe(\"Preferred rewards type.\"),\n});\nexport type PersonalCreditCardSearchSchema = z.infer<\n typeof personalCreditCardSearchSchema\n>;\n\nexport const personalCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n rewardsRate: z.string(),\n introOffer: z.string(),\n recommendedCreditScore: z.string(),\n terms: z.object({\n apr: z.object({\n purchase: z.number(),\n balanceTransfer: z.number(),\n penalty: z.number().optional(),\n }),\n fees: z.object({\n annual: z.number(),\n }),\n }),\n applicationUrl: z.string().url().optional(),\n});\nexport type PersonalCreditCardOffer = z.infer<\n typeof personalCreditCardOfferSchema\n>;\n\nexport const personalCreditCardComparisonResponseSchema = z.object({\n offers: z.array(personalCreditCardOfferSchema),\n searchCriteria: personalCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalCreditCardComparisonResponse = z.infer<\n typeof personalCreditCardComparisonResponseSchema\n>;\n\nexport const loanComparisonResponseSchema = z.object({\n offers: z.array(loanOfferSchema),\n summary: z.object({\n totalOffers: z.number().int(),\n bestRate: z.number(),\n bestApprovalProbability: z.number().optional(),\n fastestFunding: z.string().optional(),\n }),\n searchCriteria: z\n .union([\n personalLoanSearchSchema,\n businessLoanSearchSchema,\n mortgageSearchSchema,\n autoLoanSearchSchema,\n studentLoanSearchSchema,\n ])\n .optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type LoanComparisonResponse = z.infer<\n typeof loanComparisonResponseSchema\n>;\n\nexport const applicationProviderSchema = z.object({\n providerId: z.string(),\n providerName: z.string(),\n status: z.nativeEnum(ProviderStatus),\n submittedAt: z.string().optional(),\n providerApplicationId: z.string().optional(),\n referralUrl: z.string().url().optional(),\n error: z.string().optional(),\n});\n\nexport const personalApplicationSchema = z.object({\n id: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n applicationType: z.nativeEnum(ApplicationType),\n productType: z.union([z.nativeEnum(ProductType), z.string()]),\n status: z.nativeEnum(ApplicationStatus),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z.array(applicationProviderSchema),\n email: z.string().email(),\n widget: z.string().optional(),\n});\n\n// Application & Lead Types\n\nexport interface ApplicationProvider {\n providerId: string;\n providerName: string;\n status: ProviderStatus;\n submittedAt?: string;\n providerApplicationId?: string;\n referralUrl?: string;\n error?: string;\n}\n\nexport interface PersonalApplicant {\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n}\n\nexport interface BusinessApplicant {\n businessName: string;\n ein?: string;\n contact: PersonalApplicant;\n}\n\nexport interface Application<TApplicant, TData> {\n id: string; // PK\n createdAt: string;\n updatedAt: string;\n applicationType: ApplicationType;\n productType: ProductType | string;\n status: ApplicationStatus;\n applicant: TApplicant;\n applicationData: TData;\n providers: ApplicationProvider[];\n email: string; // For GSI\n widget?: string;\n}\n\nexport type PersonalApplication = Application<\n PersonalApplicant,\n Record<string, unknown>\n>;\nexport type BusinessApplication = Application<\n BusinessApplicant,\n Record<string, unknown>\n>;\nexport type GenericApplication = Application<\n PersonalApplicant | BusinessApplicant,\n Record<string, unknown>\n>;\n\n// Zod schemas for validation\n\nexport const createPersonalApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreatePersonalApplicationDTO = z.infer<\n typeof createPersonalApplicationSchema\n>;\n\nexport const displayOfferFormSchema = z.object({\n sessionId: z\n .string()\n .optional()\n .describe(\"The session ID from a previous search to retrieve all offers.\"),\n offerId: z\n .string()\n .optional()\n .describe(\"The specific offer ID to pre-select in the form.\"),\n});\nexport type DisplayOfferFormParams = z.infer<typeof displayOfferFormSchema>;\n\nexport const anyOfferSchema = z.union([\n loanOfferSchema,\n businessCreditCardOfferSchema,\n businessBankingOfferSchema,\n personalBankingOfferSchema,\n savingsOfferSchema,\n personalCreditCardOfferSchema,\n]);\n\nexport const displayOfferFormResponseSchema = z.object({\n offer: anyOfferSchema,\n allOffers: z.array(anyOfferSchema),\n applicationData: anyObjectSchema,\n productType: z.string(),\n widget: z.string().optional(),\n});\nexport type DisplayOfferFormResponse = z.infer<\n typeof displayOfferFormResponseSchema\n>;\n\nexport const getOfferSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n provider: z\n .object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n })\n .describe(\"The selected provider to submit the application to.\"),\n});\nexport type GetOfferParams = z.infer<typeof getOfferSchema>;\n\nexport const getMultipleOffersSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n providers: z\n .array(\n z.object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n }),\n )\n .min(1)\n .describe(\"The list of selected providers to submit the application to.\"),\n});\nexport type GetMultipleOffersParams = z.infer<typeof getMultipleOffersSchema>;\n\nexport const trackOfferStatusSchema = z\n .object({\n applicationId: z\n .string()\n .optional()\n .describe(\"The unique ID of the application to track.\"),\n email: z\n .string()\n .email()\n .optional()\n .describe(\"The email address of the applicant to find applications for.\"),\n })\n .refine((data) => data.applicationId || data.email, {\n message: \"Either applicationId or email must be provided.\",\n });\nexport type TrackOfferStatusParams = z.infer<typeof trackOfferStatusSchema>;\n\nexport const trackOfferStatusResponseSchema = z.object({\n applications: z.array(personalApplicationSchema),\n widget: z.string().optional(),\n});\nexport type TrackOfferStatusResponse = z.infer<\n typeof trackOfferStatusResponseSchema\n>;\n\nexport const businessApplicantSchema = z.object({\n businessName: z.string(),\n ein: z.string().optional(),\n contact: personalApplicantSchema,\n});\n\nexport const createBusinessApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: businessApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreateBusinessApplicationDTO = z.infer<\n typeof createBusinessApplicationSchema\n>;\n\nexport const documentTypeEnum = z.enum([\n \"articles-of-incorporation\",\n \"balance-sheet\",\n \"bank-statement\",\n \"business-license\",\n \"business-plan\",\n \"contract\",\n \"drivers-license\",\n \"financial-statement\",\n \"identity-document\",\n \"invoice\",\n \"lease-agreement\",\n \"other-business-document\",\n \"other-personal-document\",\n \"passport\",\n \"profit-and-loss-statement\",\n \"proof-of-address\",\n \"proof-of-income\",\n \"property-document\",\n \"purchase-order\",\n \"tax-return\",\n \"utility-bill\",\n \"vehicle-document\",\n \"voided-check\",\n]);\nexport type DocumentType = z.infer<typeof documentTypeEnum>;\n\nexport const displayUploadDocumentsFormSchema = z.object({\n applicationId: z\n .string()\n .optional()\n .describe(\"Pre-fill the application ID for the document upload form.\"),\n});\nexport type DisplayUploadDocumentsFormParams = z.infer<\n typeof displayUploadDocumentsFormSchema\n>;\n\nexport const submitDocumentsSchema = z.object({\n applicationId: z\n .string()\n .describe(\"The ID of the application to associate the document with.\"),\n fileName: z.string().describe(\"The original name of the file.\"),\n documentType: documentTypeEnum.describe(\"The category of the document.\"),\n _openai_meta: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Internal metadata from OpenAI (automatically injected)\"),\n});\nexport type SubmitDocumentsParams = z.infer<typeof submitDocumentsSchema>;\n\nexport const submitDocumentsResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n uploadUrl: z.string().url().optional(),\n uploadFields: z.record(z.string(), z.string()).optional(),\n documentId: z.string().optional(),\n widget: z.string().optional(),\n});\nexport type SubmitDocumentsResponse = z.infer<\n typeof submitDocumentsResponseSchema\n>;\n\nexport const displayUploadDocumentsFormResponseSchema = z.object({\n widget: z.string().optional(),\n});\nexport type DisplayUploadDocumentsFormResponse = z.infer<\n typeof displayUploadDocumentsFormResponseSchema\n>;\n\n// Schemas for Calculator Tools\nexport const loanPaymentSchema = z.object({\n loanAmount: z\n .number()\n .describe(\"The total amount of the loan in USD.\")\n .positive(\"Loan amount must be positive.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 5 for 5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInMonths: z\n .number()\n .describe(\"The duration of the loan in months.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n});\nexport type LoanPaymentParams = z.infer<typeof loanPaymentSchema>;\n\nexport const loanPaymentResponseSchema = z.object({\n monthlyPayment: z.number().describe(\"The calculated monthly payment amount.\"),\n totalPayment: z\n .number()\n .describe(\"The total amount to be paid over the life of the loan.\"),\n totalInterest: z\n .number()\n .describe(\"The total interest paid over the life of the loan.\"),\n widget: z.string().optional(),\n});\nexport type LoanCalculationResponse = z.infer<typeof loanPaymentResponseSchema>;\n\nexport const mortgagePaymentSchema = z.object({\n propertyValue: z\n .number()\n .describe(\"The total value of the property in USD.\")\n .positive(\"Property value must be positive.\"),\n downPayment: z\n .number()\n .describe(\"The amount paid upfront in USD.\")\n .min(0, \"Down payment cannot be negative.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 3.5 for 3.5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInYears: z\n .number()\n .describe(\"The duration of the loan in years.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n propertyTaxRate: z\n .number()\n .describe(\n \"The annual property tax rate as a percentage (e.g., 1.2 for 1.2%).\",\n )\n .min(0, \"Property tax rate cannot be negative.\"),\n homeInsurance: z\n .number()\n .describe(\"The annual home insurance cost in USD.\")\n .min(0, \"Home insurance cannot be negative.\"),\n});\nexport type MortgagePaymentParams = z.infer<typeof mortgagePaymentSchema>;\n\nexport const mortgagePaymentResponseSchema = z.object({\n loanAmount: z.number().describe(\"The total loan amount after down payment.\"),\n principalAndInterest: z\n .number()\n .describe(\"The monthly payment for principal and interest.\"),\n monthlyPropertyTax: z\n .number()\n .describe(\"The estimated monthly property tax payment.\"),\n monthlyHomeInsurance: z\n .number()\n .describe(\"The estimated monthly home insurance payment.\"),\n totalMonthlyPayment: z\n .number()\n .describe(\"The total estimated monthly payment (PITI).\"),\n widget: z.string().optional(),\n});\nexport type MortgageCalculationResponse = z.infer<\n typeof mortgagePaymentResponseSchema\n>;\n\n// Schemas for Lease vs. Purchase Calculator\nexport const leaseVsPurchaseSchema = z.object({\n // Purchase details\n purchasePrice: z\n .number()\n .positive(\"Purchase price must be positive.\")\n .describe(\"Total price of the vehicle for purchase in USD.\"),\n downPayment: z\n .number()\n .min(0, \"Down payment cannot be negative.\")\n .describe(\"Upfront payment amount for purchase in USD.\"),\n loanTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Loan duration in months for purchase.\"),\n interestRate: z\n .number()\n .min(0, \"Interest rate cannot be negative.\")\n .describe(\"Annual interest rate for purchase loan (e.g., 5 for 5%).\"),\n salesTaxRate: z\n .number()\n .min(0, \"Sales tax rate cannot be negative.\")\n .describe(\"Sales tax rate as a percentage (e.g., 7.5 for 7.5%).\"),\n\n // Lease details\n leaseTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Lease duration in months.\"),\n monthlyLeasePayment: z\n .number()\n .positive()\n .describe(\"Monthly payment for the lease in USD.\"),\n moneyFactor: z\n .number()\n .positive(\"Money factor must be positive.\")\n .describe(\"The money factor for the lease (similar to interest rate).\"),\n acquisitionFee: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Fee charged by the lessor to initiate the lease in USD.\"),\n securityDeposit: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Refundable deposit paid at the start of the lease in USD.\"),\n\n // Common details\n residualValuePercentage: z\n .number()\n .min(0)\n .max(100, \"Residual value percentage cannot exceed 100.\")\n .describe(\n \"Estimated value of the vehicle at the end of the lease, as a percentage of MSRP.\",\n ),\n expectedOwnershipInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"How long you plan to keep the vehicle, in months.\"),\n});\nexport type LeaseVsPurchaseParams = z.infer<typeof leaseVsPurchaseSchema>;\n\nexport const leaseVsPurchaseResponseSchema = z.object({\n purchaseAnalysis: z.object({\n totalLoanPayment: z.number(),\n totalInterestPaid: z.number(),\n totalSalesTax: z.number(),\n equityAfterOwnership: z.number(),\n totalCostOfOwnership: z.number(),\n monthlyPayment: z.number(),\n }),\n leaseAnalysis: z.object({\n totalLeasePayments: z.number(),\n totalUpfrontCosts: z.number(),\n totalCostOfLeasing: z.number(),\n }),\n comparison: z.object({\n purchaseCostIsLowerBy: z.number(),\n leaseCostIsLowerBy: z.number(),\n recommendation: z.string(),\n }),\n widget: z.string().optional(),\n});\nexport type LeaseVsPurchaseResponse = z.infer<\n typeof leaseVsPurchaseResponseSchema\n>;\n\n// ============================================================================\n// SDK Config\n// ============================================================================\n\nexport interface SecureLendConfig {\n /** API Key for authentication. Sent as a bearer token. Never logged. */\n apiKey?: string;\n /** Comparison MCP URL (default: https://mcp.securelend.ai/mcp). */\n serverUrl?: string;\n /** REST base for leads, packages, outcomes, and feedback. Default: https://securelend.ai */\n apiBaseUrl?: string;\n /** Test double for fetch. Not used for comparison tool calls. */\n fetch?: (input: string, init?: RequestInit) => Promise<Response>;\n}\n\nexport * from \"./platform\";\n","import { z } from \"zod\";\nimport {\n AuthenticationError,\n ConsentRequiredError,\n FeatureDisabledError,\n InvalidTransitionError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n SecureLendError,\n ServerError,\n ValidationError,\n} from \"./utils/errors\";\n\nexport interface FetchLike {\n (input: string, init?: RequestInit): Promise<Response>;\n}\n\nexport interface RestClientOptions {\n baseUrl: string;\n apiKey?: string;\n fetchImpl?: FetchLike;\n maxRetries?: number;\n retryDelayMs?: number;\n}\n\nexport interface RestRequest<T> {\n method: string;\n path: string;\n query?: Record<string, string | number | undefined>;\n body?: unknown;\n form?: FormData;\n schema: z.ZodType<T>;\n featureGated?: boolean;\n idempotencyKey?: string;\n}\n\nconst CONSENT_CODES = new Set([\n \"consent_required\",\n \"consent_revoked\",\n \"consent_expired\",\n]);\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction newIdempotencyKey(): string {\n const cryptoRef = globalThis.crypto;\n if (cryptoRef && typeof cryptoRef.randomUUID === \"function\") {\n return cryptoRef.randomUUID();\n }\n return `idem_${Date.now().toString(16)}_${Math.random().toString(16).slice(2)}`;\n}\n\nfunction bearer(apiKey: string | undefined): string | undefined {\n if (!apiKey) return undefined;\n const trimmed = apiKey.trim();\n if (!trimmed) return undefined;\n return trimmed.toLowerCase().startsWith(\"bearer \")\n ? trimmed\n : `Bearer ${trimmed}`;\n}\n\nfunction retryDelay(response: Response, fallback: number): number {\n const header = response.headers.get(\"retry-after\");\n if (header && /^\\d+$/.test(header)) {\n return Math.min(Number(header) * 1000, 2000);\n }\n return fallback;\n}\n\nfunction validationMessage(code: string): string {\n if (code === \"reason_required\") return \"A decline needs a reason code.\";\n if (code === \"funded_amount_required\") return \"Funded needs an amount.\";\n if (code === \"funded_date_required\") {\n return \"Funded needs a date as YYYY-MM-DD.\";\n }\n if (code === \"confirmation_required\") {\n return \"The lead needs confirmation before it is created.\";\n }\n return \"The request was not accepted.\";\n}\n\n/**\n * Fetch transport for https://securelend.ai.\n * Tokens and response bodies are not written to logs.\n */\nexport class RestClient {\n private apiKey: string | undefined;\n private readonly baseUrl: string;\n private readonly fetchImpl: FetchLike | undefined;\n private readonly maxRetries: number;\n private readonly retryDelayMs: number;\n\n constructor(options: RestClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.apiKey = options.apiKey;\n this.fetchImpl = options.fetchImpl;\n this.maxRetries = options.maxRetries ?? 2;\n this.retryDelayMs = options.retryDelayMs ?? 0;\n }\n\n setApiKey(apiKey: string): void {\n this.apiKey = apiKey;\n }\n\n async send<T>(request: RestRequest<T>): Promise<T> {\n const retries = request.form ? 0 : this.maxRetries;\n const url = this.url(request.path, request.query);\n const init = this.init(request);\n let lastError: Error | null = null;\n for (let attempt = 0; attempt <= retries; attempt += 1) {\n let response: Response;\n try {\n response = await this.fetcher()(url, init);\n } catch (err) {\n const detail =\n err instanceof Error && err.message\n ? err.message.replace(/\\s+/g, \" \").slice(0, 180)\n : \"\";\n lastError = new NetworkError(\n detail\n ? `The request did not reach the server. ${detail}`\n : \"The request did not reach the server.\",\n );\n if (attempt < retries) {\n await sleep(this.retryDelayMs);\n continue;\n }\n throw lastError;\n }\n if (\n (response.status === 429 || response.status >= 500) &&\n attempt < retries\n ) {\n await sleep(retryDelay(response, this.retryDelayMs));\n continue;\n }\n return this.read(response, request);\n }\n throw (\n lastError || new NetworkError(\"The request did not reach the server.\")\n );\n }\n\n private fetcher(): FetchLike {\n if (this.fetchImpl) return this.fetchImpl;\n if (typeof globalThis.fetch === \"function\") {\n return globalThis.fetch.bind(globalThis) as FetchLike;\n }\n throw new NetworkError(\"This runtime has no fetch implementation.\");\n }\n\n private url(\n path: string,\n query: Record<string, string | number | undefined> | undefined,\n ): string {\n const suffix = path.startsWith(\"/\") ? path : `/${path}`;\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query || {})) {\n if (value == null || value === \"\") continue;\n params.set(key, String(value));\n }\n const qs = params.toString();\n return `${this.baseUrl}${suffix}${qs ? `?${qs}` : \"\"}`;\n }\n\n private init(request: RestRequest<unknown>): RequestInit {\n const headers: Record<string, string> = { accept: \"application/json\" };\n const authorization = bearer(this.apiKey);\n if (authorization) headers.authorization = authorization;\n const method = request.method.toUpperCase();\n if (method === \"POST\" || method === \"PUT\" || method === \"PATCH\") {\n headers[\"idempotency-key\"] =\n request.idempotencyKey || newIdempotencyKey();\n }\n if (request.form) {\n return { method, headers, body: request.form };\n }\n if (request.body !== undefined) {\n headers[\"content-type\"] = \"application/json\";\n return { method, headers, body: JSON.stringify(request.body) };\n }\n return { method, headers };\n }\n\n private async read<T>(\n response: Response,\n request: RestRequest<T>,\n ): Promise<T> {\n const text = await response.text();\n let payload: { error?: string; message?: string } | null = null;\n if (text) {\n try {\n payload = JSON.parse(text) as { error?: string; message?: string };\n } catch {\n payload = null;\n }\n }\n if (response.status >= 200 && response.status < 300) {\n try {\n return request.schema.parse(payload ?? {});\n } catch (err) {\n if (err instanceof z.ZodError) {\n throw new ValidationError(\n \"The server response did not match the expected shape.\",\n { issues: err.issues.map((issue) => issue.path.join(\".\")) },\n );\n }\n throw err;\n }\n }\n const code = String(payload?.error || \"\");\n const details = { status: response.status, error: code || undefined };\n if (response.status === 401 || code === \"invalid_signature\") {\n throw new AuthenticationError(\"The API key was not accepted.\");\n }\n if (response.status === 429) {\n const retryAfter = response.headers.get(\"retry-after\");\n throw new RateLimitError(\n \"The request was rate limited.\",\n retryAfter && /^\\d+$/.test(retryAfter) ? Number(retryAfter) : undefined,\n );\n }\n if (CONSENT_CODES.has(code)) {\n const message =\n code === \"consent_revoked\"\n ? \"This consent was revoked.\"\n : code === \"consent_expired\"\n ? \"This consent has expired.\"\n : \"A live consent is required before this package can be read.\";\n throw new ConsentRequiredError(message, details);\n }\n if (code === \"invalid_transition\") {\n throw new InvalidTransitionError(\n \"That outcome is not available.\",\n details,\n );\n }\n if (\n request.featureGated &&\n (response.status === 404 ||\n (response.status === 403 &&\n (code === \"not_found\" || code === \"feature_disabled\")))\n ) {\n throw new FeatureDisabledError(\n \"This feature is off for this workspace.\",\n details,\n );\n }\n if (response.status === 404) {\n throw new NotFoundError(\"The record was not found.\");\n }\n if (response.status === 403) {\n throw new SecureLendError(\n \"This action is not available for this session.\",\n \"forbidden\",\n details,\n );\n }\n if (response.status >= 500) {\n throw new ServerError(\"The server could not complete the request.\");\n }\n throw new ValidationError(validationMessage(code), details);\n }\n}\n","/**\n * Platform routes the REST client calls.\n * Comparison tools stay on the MCP host and are not listed here.\n */\nexport const PLATFORM_ROUTES = {\n createLead: \"/v1/placement/enquiries\",\n listLeads: \"/v1/leads\",\n uploadLeadDocument: \"/v1/placement/enquiries/:id/documents\",\n compare: \"/v1/placement/compare\",\n lenderMcp: \"/v1/lender/mcp\",\n consents: \"/v1/share-consents\",\n revokeConsent: \"/v1/share-consents/:id/revoke\",\n receipts: \"/v1/share-receipts\",\n outcomes: \"/v1/leads/:id/outcomes\",\n creditBox: \"/v1/credit-box\",\n pauseCreditBox: \"/v1/credit-box/pause\",\n resumeCreditBox: \"/v1/credit-box/resume\",\n feedback: \"/v1/feedback\",\n caseFeedback: \"/v1/cases/:id/feedback\",\n liquidity: \"/v1/marketplace/liquidity\",\n} as const;\n\nexport function routeWithId(template: string, id: string): string {\n return template.replace(\":id\", encodeURIComponent(id));\n}\n","import { PLATFORM_ROUTES, routeWithId } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n leadListSchema,\n leadSchema,\n uploadResultSchema,\n type Lead,\n type LeadCreateInput,\n type LeadListFilter,\n type RequestOptions,\n type UploadFile,\n type UploadResult,\n} from \"../types/platform\";\nimport { NotFoundError, ValidationError } from \"../utils/errors\";\n\nexport class Leads {\n constructor(private readonly rest: RestClient) {}\n\n async create(\n input: LeadCreateInput,\n options: RequestOptions = {},\n ): Promise<Lead> {\n return this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.createLead,\n body: input,\n schema: leadSchema,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async list(filter: LeadListFilter = {}): Promise<Lead[]> {\n const page = await this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.listLeads,\n query: { status: filter.status || \"pending\" },\n schema: leadListSchema,\n });\n return page.items;\n }\n\n /** Lender view. A lead outside this workspace is not found. */\n async get(id: string): Promise<Lead> {\n const wanted = String(id || \"\").trim();\n if (!wanted) throw new ValidationError(\"A lead id is required.\");\n const items = await this.list({ status: \"all\" });\n const lead = items.find((row) => row.id === wanted);\n if (!lead) throw new NotFoundError(\"The record was not found.\");\n return leadSchema.parse(lead);\n }\n\n /**\n * One HTTP request per file. The platform route stores a single file.\n */\n async uploadDocuments(\n enquiryId: string,\n files: UploadFile[],\n options: RequestOptions = {},\n ): Promise<UploadResult[]> {\n const id = String(enquiryId || \"\").trim();\n if (!id) throw new ValidationError(\"A lead id is required.\");\n if (!files?.length) throw new ValidationError(\"A file is required.\");\n const saved: UploadResult[] = [];\n for (const file of files) {\n if (!file?.bytes?.byteLength) {\n throw new ValidationError(\"A file is required.\");\n }\n const form = new FormData();\n const copy = new ArrayBuffer(file.bytes.byteLength);\n new Uint8Array(copy).set(file.bytes);\n const blob = new Blob([copy], { type: file.mime || \"application/pdf\" });\n form.append(\"file\", blob, file.filename || \"upload.pdf\");\n if (file.documentType) form.append(\"documentType\", file.documentType);\n saved.push(\n await this.rest.send({\n method: \"POST\",\n path: routeWithId(PLATFORM_ROUTES.uploadLeadDocument, id),\n form,\n schema: uploadResultSchema,\n idempotencyKey: options.idempotencyKey,\n }),\n );\n }\n return saved;\n }\n}\n","import { z } from \"zod\";\nimport { PLATFORM_ROUTES } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n leadListSchema,\n matchComponentsSchema,\n matchListSchema,\n type MatchList,\n} from \"../types/platform\";\nimport { NotFoundError, ValidationError } from \"../utils/errors\";\n\nconst compareSchema = z\n .object({\n metadata: z\n .object({\n generationId: z.string().optional(),\n match: z.array(z.record(z.unknown())).optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\n/** Loan products the placement directory can compare. Any other string makes that process throw. */\nconst COMPARE_LOAN_PRODUCTS = new Set([\n \"personal_loans\",\n \"business_loans\",\n \"personal_mortgages\",\n \"business_mortgages\",\n \"car_loans\",\n \"student_loans\",\n]);\n\nconst COMPARE_STATIC_PRODUCTS = new Set([\n \"personal_credit_cards\",\n \"business_credit_cards\",\n \"personal_banking\",\n \"business_banking\",\n \"savings_accounts\",\n]);\n\n/**\n * Canonical compare key, or null when the lead product must not be sent.\n * Aliases match the platform normalizer. Singular names such as business_loan do not.\n */\nexport function compareProductKey(value: unknown): string | null {\n const raw = String(value || \"\")\n .trim()\n .toLowerCase()\n .replace(/^compare_/, \"\")\n .replace(/[\\s-]+/g, \"_\");\n if (!raw) return null;\n if (COMPARE_LOAN_PRODUCTS.has(raw) || COMPARE_STATIC_PRODUCTS.has(raw)) {\n return raw;\n }\n if (raw === \"personal_loan\" || raw === \"installment_loan\") {\n return \"personal_loans\";\n }\n return null;\n}\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction stringOrNull(value: unknown): string | null {\n return typeof value === \"string\" && value ? value : null;\n}\n\nexport class Matches {\n constructor(private readonly rest: RestClient) {}\n\n /**\n * Runs a match for this lead. generationId is set when outcome matching is on.\n * With the flag off, the lead's own lenders are returned and the ranking is unchanged.\n */\n async list(leadId: string): Promise<MatchList> {\n const id = String(leadId || \"\").trim();\n if (!id) throw new ValidationError(\"A lead id is required.\");\n const page = await this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.listLeads,\n query: { status: \"all\" },\n schema: leadListSchema,\n });\n const lead = page.items.find((row) => row.id === id);\n if (!lead) throw new NotFoundError(\"The record was not found.\");\n const product = compareProductKey(lead.productType);\n const amount = numberOrNull(lead.amount);\n const needsAmount = product != null && COMPARE_LOAN_PRODUCTS.has(product);\n if (!product || (needsAmount && !(amount != null && amount > 0))) {\n return matchListSchema.parse({\n leadId: id,\n generationId: null,\n lenders: (lead.lenders || []).map((lender) => ({\n lenderId: lender.id ?? null,\n score: null,\n generationId: null,\n components: null,\n })),\n });\n }\n const compared = await this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.compare,\n body: {\n productType: product,\n ...(amount != null && amount > 0 ? { loanAmount: amount, amount } : {}),\n },\n schema: compareSchema,\n });\n const generationId = compared.metadata?.generationId ?? null;\n const rows = compared.metadata?.match;\n const lenders = Array.isArray(rows)\n ? rows.map((row) => ({\n lenderId: stringOrNull(row.lenderId),\n score: numberOrNull(row.score),\n generationId,\n components: matchComponentsSchema.parse({\n rules: numberOrNull(row.rules),\n fit: numberOrNull(row.fit),\n outcome: numberOrNull(row.outcome),\n sba: numberOrNull(row.sba),\n samples: numberOrNull(row.samples),\n }),\n }))\n : (lead.lenders || []).map((lender) => ({\n lenderId: lender.id ?? null,\n score: null,\n generationId: null,\n components: null,\n }));\n return matchListSchema.parse({ leadId: id, generationId, lenders });\n }\n}\n","import { z } from \"zod\";\nimport { PLATFORM_ROUTES } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n packageSchema,\n type PackageRecord,\n type PackageStartInput,\n} from \"../types/platform\";\nimport {\n AuthenticationError,\n ConsentRequiredError,\n NotFoundError,\n SecureLendError,\n ValidationError,\n} from \"../utils/errors\";\n\nconst rpcSchema = z\n .object({\n result: z\n .object({\n structuredContent: z.unknown().optional(),\n content: z\n .array(\n z\n .object({\n type: z.string(),\n text: z.string().optional(),\n })\n .passthrough(),\n )\n .optional(),\n isError: z.boolean().optional(),\n })\n .passthrough()\n .optional(),\n error: z\n .object({\n message: z.string().optional(),\n })\n .passthrough()\n .optional(),\n })\n .passthrough();\n\nfunction payloadOf(rpc: z.infer<typeof rpcSchema>): Record<string, unknown> {\n const structured = rpc.result?.structuredContent;\n if (\n structured &&\n typeof structured === \"object\" &&\n !Array.isArray(structured)\n ) {\n return structured as Record<string, unknown>;\n }\n const text = rpc.result?.content?.find((item) => item.type === \"text\")?.text;\n if (text) {\n try {\n const parsed = JSON.parse(text) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n throw new ValidationError(\n \"The package response did not include a result.\",\n );\n }\n }\n throw new ValidationError(\"The package response did not include a result.\");\n}\n\nfunction raiseToolError(payload: Record<string, unknown>): void {\n const code = typeof payload.error === \"string\" ? payload.error : \"\";\n if (!code) return;\n if (\n code === \"consent_required\" ||\n code === \"consent_revoked\" ||\n code === \"consent_expired\"\n ) {\n throw new ConsentRequiredError(\n code === \"consent_revoked\"\n ? \"This consent was revoked.\"\n : \"A live consent is required before this package can be read.\",\n { error: code },\n );\n }\n if (code === \"not_found\")\n throw new NotFoundError(\"The record was not found.\");\n if (code === \"sign_in_required\") {\n throw new AuthenticationError(\"The API key was not accepted.\");\n }\n throw new SecureLendError(\"The package request failed.\", code, {\n error: code,\n });\n}\n\n/**\n * Lender package tools. Calls POST /v1/lender/mcp on the REST host.\n * Comparison tools are not sent here.\n */\nexport class Packages {\n constructor(private readonly rest: RestClient) {}\n\n async start(input: PackageStartInput): Promise<PackageRecord> {\n if (\n !input?.borrower ||\n input.amount == null ||\n !input.currency ||\n !input.security\n ) {\n throw new ValidationError(\n \"A package needs a borrower, amount, currency, and security.\",\n );\n }\n return this.call(\"start_underwriting_package\", { ...input });\n }\n\n async read(\n id: string,\n options: { version?: number } = {},\n ): Promise<PackageRecord> {\n const packageId = String(id || \"\").trim();\n if (!packageId) throw new ValidationError(\"A package id is required.\");\n const args: Record<string, unknown> = { caseId: packageId, packageId };\n if (options.version != null) args.packageVersion = options.version;\n return this.call(\"read_package\", args);\n }\n\n private async call(\n name: string,\n args: Record<string, unknown>,\n ): Promise<PackageRecord> {\n const rpc = await this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.lenderMcp,\n body: {\n jsonrpc: \"2.0\",\n id: 1,\n method: \"tools/call\",\n params: { name, arguments: args },\n },\n schema: rpcSchema,\n });\n if (rpc.error) {\n throw new SecureLendError(\"The package request failed.\", \"mcp_error\", {\n message: rpc.error.message,\n });\n }\n const payload = payloadOf(rpc);\n raiseToolError(payload);\n return packageSchema.parse(payload);\n }\n}\n","import { z } from \"zod\";\nimport { PLATFORM_ROUTES, routeWithId } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n SHARE_SCOPES,\n shareConsentSchema,\n shareReceiptSchema,\n type ConsentCreateInput,\n type RequestOptions,\n type ShareConsent,\n type ShareReceipt,\n} from \"../types/platform\";\nimport { ValidationError } from \"../utils/errors\";\n\nconst consentListSchema = z\n .object({ items: z.array(shareConsentSchema) })\n .passthrough();\nconst receiptListSchema = z\n .object({ items: z.array(shareReceiptSchema) })\n .passthrough();\n\nexport class Consents {\n constructor(private readonly rest: RestClient) {}\n\n /**\n * One consent row per lender id. The live route stores a row only when the\n * lender id is the session tenant. Omit lenderIds to use that default.\n */\n async create(\n input: ConsentCreateInput,\n options: RequestOptions = {},\n ): Promise<ShareConsent[]> {\n const leadId = String(input?.leadId || \"\").trim();\n const packageId = String(input?.packageId || \"\").trim();\n const borrowerRef = String(input?.borrowerRef || \"\").trim();\n if (!leadId || !packageId) {\n throw new ValidationError(\"A consent needs a lead and a package.\");\n }\n if (!Number.isInteger(input.packageVersion) || input.packageVersion < 1) {\n throw new ValidationError(\"A consent needs a package version.\");\n }\n if (!input.expiresAt)\n throw new ValidationError(\"A consent needs an expiry.\");\n if (!borrowerRef)\n throw new ValidationError(\"A borrower reference is required.\");\n if (borrowerRef.includes(\"@\")) {\n throw new ValidationError(\n \"Use a reference you choose. Do not type an email or an account number.\",\n );\n }\n const scope = input.scope?.length ? input.scope : [\"summary\"];\n if (\n scope.some(\n (item) => !SHARE_SCOPES.includes(item as (typeof SHARE_SCOPES)[number]),\n )\n ) {\n throw new ValidationError(\n \"Scope must be summary, memo, checks, or documents.\",\n );\n }\n const lenderIds = input.lenderIds?.length ? input.lenderIds : [undefined];\n const saved: ShareConsent[] = [];\n for (const lenderId of lenderIds) {\n const body: Record<string, unknown> = {\n leadId,\n packageId,\n packageVersion: input.packageVersion,\n scope,\n expiresAt: input.expiresAt,\n borrowerRef,\n };\n if (lenderId) body.lenderId = lenderId;\n saved.push(\n await this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.consents,\n body,\n schema: shareConsentSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n }),\n );\n }\n return saved;\n }\n\n async list(leadId?: string): Promise<ShareConsent[]> {\n const page = await this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.consents,\n schema: consentListSchema,\n featureGated: true,\n });\n if (!leadId) return page.items;\n return page.items.filter((row) => row.leadId === leadId);\n }\n\n async revoke(\n id: string,\n options: RequestOptions = {},\n ): Promise<ShareConsent> {\n const consentId = String(id || \"\").trim();\n if (!consentId) throw new ValidationError(\"A consent id is required.\");\n return this.rest.send({\n method: \"POST\",\n path: routeWithId(PLATFORM_ROUTES.revokeConsent, consentId),\n body: {},\n schema: shareConsentSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async receipts(id?: string): Promise<ShareReceipt[]> {\n const page = await this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.receipts,\n schema: receiptListSchema,\n featureGated: true,\n });\n if (!id) return page.items;\n return page.items.filter((row) => row.consentId === id);\n }\n}\n","import { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\nimport { z } from \"zod\";\nimport { secureLendEventSchema, type SecureLendEvent } from \"./types/platform\";\nimport { ValidationError, WebhookSignatureError } from \"./utils/errors\";\n\nexport interface VerifyWebhookOptions {\n toleranceSec?: number;\n nowMs?: number;\n}\n\nfunction rawBytes(raw: string | Buffer): Buffer {\n return Buffer.isBuffer(raw) ? raw : Buffer.from(raw, \"utf8\");\n}\n\nfunction safeEqualHex(expected: string, presented: string): boolean {\n const left = Buffer.from(expected, \"utf8\");\n const right = Buffer.from(presented, \"utf8\");\n if (left.length !== right.length) return false;\n return timingSafeEqual(left, right);\n}\n\n/**\n * Lender outcome header used by POST /v1/webhooks/lender-outcomes.\n * sha256 of secret + \".\" + raw body. The live route does not check a timestamp.\n */\nexport function signOutcomePayload(\n raw: string | Buffer,\n secret: string,\n): string {\n const digest = createHash(\"sha256\")\n .update(String(secret || \"\"), \"utf8\")\n .update(\".\")\n .update(rawBytes(raw))\n .digest(\"hex\");\n return `sha256=${digest}`;\n}\n\n/**\n * Timestamped HMAC-SHA256 of `${timestamp}.${body}`.\n * Header shape: t=<unix seconds>,v1=<hex>.\n */\nexport function signWebhook(\n raw: string | Buffer,\n secret: string,\n timestampSec = Math.floor(Date.now() / 1000),\n): string {\n const mac = createHmac(\"sha256\", String(secret || \"\"))\n .update(`${timestampSec}.`)\n .update(rawBytes(raw))\n .digest(\"hex\");\n return `t=${timestampSec},v1=${mac}`;\n}\n\nfunction readStamp(header: string): { t: number; mac: string } | null {\n const match = header.match(/(?:^|,\\s*)t=(\\d+),v1=([a-fA-F0-9]+)/);\n if (!match) return null;\n return { t: Number(match[1]), mac: match[2].toLowerCase() };\n}\n\n/**\n * Accepts the platform lender-outcome header and the timestamped HMAC header.\n * A timestamped header outside the tolerance is rejected.\n */\nexport function verifyWebhook(\n rawBody: string | Buffer,\n signatureHeader: string | null | undefined,\n secret: string,\n options: VerifyWebhookOptions = {},\n): true {\n const header = String(signatureHeader || \"\").trim();\n const key = String(secret || \"\");\n if (!key || !header) {\n throw new WebhookSignatureError(\"Webhook signature did not match.\");\n }\n const stamp = readStamp(header);\n if (stamp) {\n const tolerance = options.toleranceSec ?? 300;\n const nowSec = Math.floor((options.nowMs ?? Date.now()) / 1000);\n if (!Number.isFinite(stamp.t) || Math.abs(nowSec - stamp.t) > tolerance) {\n throw new WebhookSignatureError(\n \"This webhook is outside the time window.\",\n );\n }\n const expected = signWebhook(rawBody, key, stamp.t).split(\"v1=\")[1] || \"\";\n if (!safeEqualHex(expected, stamp.mac)) {\n throw new WebhookSignatureError(\"Webhook signature did not match.\");\n }\n return true;\n }\n const presented = header\n .replace(/^sha256=/i, \"\")\n .trim()\n .toLowerCase();\n const expected = signOutcomePayload(rawBody, key).replace(/^sha256=/, \"\");\n if (!safeEqualHex(expected, presented)) {\n throw new WebhookSignatureError(\"Webhook signature did not match.\");\n }\n return true;\n}\n\n/** Parses an event. An unknown type string is kept and does not throw. */\nexport function parseEvent(\n input: unknown,\n): SecureLendEvent & { data: Record<string, unknown> } {\n try {\n const event = secureLendEventSchema.parse(input);\n return { ...event, data: event.data ?? {} };\n } catch (err) {\n if (err instanceof z.ZodError) {\n throw new ValidationError(\n \"The webhook event did not match the expected shape.\",\n {\n issues: err.issues.map((issue) => issue.path.join(\".\")),\n },\n );\n }\n throw err;\n }\n}\n","import { z } from \"zod\";\nimport { PLATFORM_ROUTES, routeWithId } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n DECLINE_REASON_CODES,\n OUTCOME_STATES,\n leadOutcomeSchema,\n type LeadOutcome,\n type OutcomeRecordInput,\n type RequestOptions,\n} from \"../types/platform\";\nimport { ValidationError } from \"../utils/errors\";\nimport { signOutcomePayload } from \"../webhooks\";\n\nconst outcomeListSchema = z\n .object({ items: z.array(leadOutcomeSchema) })\n .passthrough();\n\nexport class Outcomes {\n constructor(private readonly rest: RestClient) {}\n\n /**\n * Declined without a reason code, and funded without an amount and date,\n * fail here and do not call the server.\n */\n async record(\n leadId: string,\n input: OutcomeRecordInput,\n options: RequestOptions = {},\n ): Promise<LeadOutcome> {\n const id = String(leadId || \"\").trim();\n const state = String(input?.state || \"\").trim();\n if (!id) throw new ValidationError(\"A lead id is required.\");\n if (!OUTCOME_STATES.includes(state as (typeof OUTCOME_STATES)[number])) {\n throw new ValidationError(\"That outcome state is not recognized.\");\n }\n const reasonCode = input.reasonCode ? String(input.reasonCode).trim() : \"\";\n if (state === \"declined\") {\n if (\n !DECLINE_REASON_CODES.includes(\n reasonCode as (typeof DECLINE_REASON_CODES)[number],\n )\n ) {\n throw new ValidationError(\"A decline needs a reason code.\");\n }\n if (reasonCode === \"other\" && !String(input.reasonText || \"\").trim()) {\n throw new ValidationError(\"A decline needs a reason code.\");\n }\n }\n if (state === \"funded\") {\n const amount = Number(input.fundedAmount);\n const date = String(input.fundedOn || \"\").trim();\n if (!Number.isFinite(amount) || amount <= 0) {\n throw new ValidationError(\"Funded needs an amount.\");\n }\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(date)) {\n throw new ValidationError(\"Funded needs a date as YYYY-MM-DD.\");\n }\n }\n const body: Record<string, unknown> = { state };\n if (input.lenderId) body.lenderId = input.lenderId;\n if (reasonCode) body.reasonCode = reasonCode;\n if (input.reasonText) body.reasonText = input.reasonText;\n if (state === \"funded\") {\n body.fundedAmount = Number(input.fundedAmount);\n body.fundedOn = String(input.fundedOn);\n }\n if (input.surface) body.surface = input.surface;\n return this.rest.send({\n method: \"POST\",\n path: routeWithId(PLATFORM_ROUTES.outcomes, id),\n body,\n schema: leadOutcomeSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async list(leadId: string): Promise<LeadOutcome[]> {\n const id = String(leadId || \"\").trim();\n if (!id) throw new ValidationError(\"A lead id is required.\");\n const page = await this.rest.send({\n method: \"GET\",\n path: routeWithId(PLATFORM_ROUTES.outcomes, id),\n schema: outcomeListSchema,\n featureGated: true,\n });\n return page.items;\n }\n\n /** Header value for POST /v1/webhooks/lender-outcomes. */\n signPayload(rawBody: string, secret: string): string {\n return signOutcomePayload(rawBody, secret);\n }\n}\n","import { PLATFORM_ROUTES } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n creditBoxSchema,\n creditBoxViewSchema,\n type CreditBox,\n type CreditBoxView,\n type CreditBoxWriteInput,\n type RequestOptions,\n} from \"../types/platform\";\nimport { ValidationError } from \"../utils/errors\";\n\nexport class CreditBoxClient {\n constructor(private readonly rest: RestClient) {}\n\n async get(): Promise<CreditBoxView> {\n return this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.creditBox,\n schema: creditBoxViewSchema,\n featureGated: true,\n });\n }\n\n async put(\n input: CreditBoxWriteInput | Record<string, unknown>,\n options: RequestOptions = {},\n ): Promise<CreditBox> {\n const body = writeBody(input);\n return this.rest.send({\n method: \"PUT\",\n path: PLATFORM_ROUTES.creditBox,\n body,\n schema: creditBoxSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async pause(\n input: { until?: string } = {},\n options: RequestOptions = {},\n ): Promise<CreditBox> {\n return this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.pauseCreditBox,\n body: input.until ? { until: input.until } : {},\n schema: creditBoxSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async resume(options: RequestOptions = {}): Promise<CreditBox> {\n return this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.resumeCreditBox,\n body: {},\n schema: creditBoxSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n}\n\nfunction writeBody(\n input: CreditBoxWriteInput | Record<string, unknown>,\n): Record<string, unknown> {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n throw new ValidationError(\"A credit box needs criteria.\");\n }\n if (\"criteria\" in input) {\n const criteria = input.criteria;\n if (!criteria || typeof criteria !== \"object\" || Array.isArray(criteria)) {\n throw new ValidationError(\"A credit box needs criteria.\");\n }\n return input as Record<string, unknown>;\n }\n return { criteria: input };\n}\n","import { z } from \"zod\";\nimport { PLATFORM_ROUTES, routeWithId } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n FEEDBACK_TARGETS,\n FEEDBACK_TYPES,\n feedbackCreatedSchema,\n feedbackEventSchema,\n type FeedbackCreated,\n type FeedbackEvent,\n type FeedbackSubmitInput,\n type RequestOptions,\n} from \"../types/platform\";\nimport { ValidationError } from \"../utils/errors\";\n\nconst feedbackListSchema = z\n .object({ items: z.array(feedbackEventSchema) })\n .passthrough();\n\nexport class Feedback {\n constructor(private readonly rest: RestClient) {}\n\n async submit(\n event: FeedbackSubmitInput,\n options: RequestOptions = {},\n ): Promise<FeedbackCreated> {\n const type = String(event?.type || \"\").trim();\n const kind = String(event?.target?.kind || \"\").trim();\n const key = String(event?.target?.key || \"\").trim();\n if (!FEEDBACK_TYPES.includes(type as (typeof FEEDBACK_TYPES)[number])) {\n throw new ValidationError(\"That feedback type is not recognized.\");\n }\n if (\n !FEEDBACK_TARGETS.includes(kind as (typeof FEEDBACK_TARGETS)[number]) ||\n !key\n ) {\n throw new ValidationError(\"Feedback needs a target.\");\n }\n if (type === \"rating\") {\n const rating = Number(event.rating);\n if (!Number.isInteger(rating) || rating < 1 || rating > 9) {\n throw new ValidationError(\"A rating is a whole number from 1 to 9.\");\n }\n }\n return this.rest.send({\n method: \"POST\",\n path: PLATFORM_ROUTES.feedback,\n body: {\n type,\n surface: event.surface || \"api\",\n target: { kind, key },\n ...(event.rating != null ? { rating: event.rating } : {}),\n ...(event.comment ? { comment: event.comment } : {}),\n ...(event.generationId ? { generationId: event.generationId } : {}),\n ...(event.caseId ? { caseId: event.caseId } : {}),\n ...(event.before != null ? { before: event.before } : {}),\n ...(event.after != null ? { after: event.after } : {}),\n },\n schema: feedbackCreatedSchema,\n featureGated: true,\n idempotencyKey: options.idempotencyKey,\n });\n }\n\n async listForCase(caseId: string): Promise<FeedbackEvent[]> {\n const id = String(caseId || \"\").trim();\n if (!id) throw new ValidationError(\"A case id is required.\");\n const page = await this.rest.send({\n method: \"GET\",\n path: routeWithId(PLATFORM_ROUTES.caseFeedback, id),\n schema: feedbackListSchema,\n featureGated: true,\n });\n return page.items;\n }\n}\n","import { PLATFORM_ROUTES } from \"../contract\";\nimport { RestClient } from \"../rest\";\nimport {\n liquidityReportSchema,\n type LiquidityMetrics,\n type LiquidityQuery,\n} from \"../types/platform\";\n\nexport class Liquidity {\n constructor(private readonly rest: RestClient) {}\n\n async get(query: LiquidityQuery = {}): Promise<LiquidityMetrics> {\n return this.rest.send({\n method: \"GET\",\n path: PLATFORM_ROUTES.liquidity,\n query: {\n groupBy: query.groupBy || \"product\",\n from: query.from,\n to: query.to,\n },\n schema: liquidityReportSchema,\n featureGated: true,\n });\n }\n}\n","import { z } from \"zod\";\nimport { MCPClient } from \"./utils/mcp\";\nimport * as types from \"./types\";\nimport { SecureLendError, ValidationError } from \"./utils/errors\";\nimport { RestClient } from \"./rest\";\nimport { Leads } from \"./resources/leads\";\nimport { Matches } from \"./resources/matches\";\nimport { Packages } from \"./resources/packages\";\nimport { Consents } from \"./resources/consents\";\nimport { Outcomes } from \"./resources/outcomes\";\nimport { CreditBoxClient } from \"./resources/creditBox\";\nimport { Feedback } from \"./resources/feedback\";\nimport { Liquidity } from \"./resources/liquidity\";\nimport { parseEvent, signWebhook, verifyWebhook } from \"./webhooks\";\n\n// Minimal interface definitions to satisfy the compiler.\n// This is necessary because `@modelcontextprotocol/sdk` may not export `ToolResult` as expected.\ninterface ContentItem {\n type: \"resource\" | \"text\";\n resource?: {\n mimeType: string;\n text: string;\n };\n text?: string;\n}\ninterface ToolResult {\n content: ContentItem[];\n structuredContent?: unknown;\n}\n\n/**\n * SecureLend MCP-native SDK Client\n *\n * @example\n * ```typescript\n * import { SecureLend } from '@securelend/sdk';\n *\n * const securelend = new SecureLend();\n *\n * const loans = await securelend.compareBusinessLoans({\n * amount: 200000,\n * purpose: 'equipment',\n * business: {\n * revenue: 1200000,\n * creditScore: 720,\n * timeInBusiness: 36\n * }\n * });\n * ```\n */\nexport class SecureLend {\n private mcpClient: MCPClient;\n private rest: RestClient;\n\n /** Raw access to the underlying MCP client */\n public readonly mcp: MCPClient[\"mcp\"];\n\n /** Place a borrower lead. REST base, not the comparison MCP host. */\n public readonly leads: Leads;\n /** Ranked lenders for one lead, plus generationId when outcome matching is on. */\n public readonly matches: Matches;\n /** Underwriting packages via POST /v1/lender/mcp. */\n public readonly packages: Packages;\n public readonly consents: Consents;\n public readonly outcomes: Outcomes;\n public readonly creditBox: CreditBoxClient;\n public readonly feedback: Feedback;\n public readonly liquidity: Liquidity;\n public readonly webhooks: {\n verify: typeof verifyWebhook;\n parseEvent: typeof parseEvent;\n sign: typeof signWebhook;\n };\n\n /**\n * Create a new SecureLend client\n *\n * @param config - Optional configuration\n */\n constructor(config?: types.SecureLendConfig) {\n let mcpURL = config?.serverUrl || \"https://mcp.securelend.ai/mcp\";\n\n // Handle relative URLs in browser environments\n if (typeof window !== \"undefined\" && mcpURL.startsWith(\"/\")) {\n mcpURL = window.location.origin + mcpURL;\n }\n\n this.mcpClient = new MCPClient({ apiKey: config?.apiKey || \"\", mcpURL });\n this.mcp = this.mcpClient.mcp;\n\n let apiBaseUrl = config?.apiBaseUrl || \"https://securelend.ai\";\n if (typeof window !== \"undefined\" && apiBaseUrl.startsWith(\"/\")) {\n apiBaseUrl = window.location.origin + apiBaseUrl;\n }\n this.rest = new RestClient({\n baseUrl: apiBaseUrl,\n apiKey: config?.apiKey,\n fetchImpl: config?.fetch,\n });\n this.leads = new Leads(this.rest);\n this.matches = new Matches(this.rest);\n this.packages = new Packages(this.rest);\n this.consents = new Consents(this.rest);\n this.outcomes = new Outcomes(this.rest);\n this.creditBox = new CreditBoxClient(this.rest);\n this.feedback = new Feedback(this.rest);\n this.liquidity = new Liquidity(this.rest);\n this.webhooks = { verify: verifyWebhook, parseEvent, sign: signWebhook };\n }\n\n // --- Loan Comparison ---\n // These methods call the comparison MCP (default https://mcp.securelend.ai/mcp).\n // They are not sent to /v1/lender/mcp.\n\n async comparePersonalLoans(\n request: types.PersonalLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_personal_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareBusinessLoans(\n request: types.BusinessLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_business_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async comparePersonalMortgages(\n request: types.MortgageSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_personal_mortgages\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareBusinessMortgages(\n request: types.MortgageSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_business_mortgages\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareCarLoans(\n request: types.AutoLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_car_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n async compareStudentLoans(\n request: types.StudentLoanSearchParams,\n ): Promise<types.LoanComparisonResponse> {\n return this.callTool(\n \"compare_student_loans\",\n request,\n types.loanComparisonResponseSchema,\n );\n }\n\n // --- Banking & Credit Cards ---\n\n async compareBusinessBanking(\n request: types.BusinessBankingSearchSchema,\n ): Promise<types.BusinessBankingComparisonResponse> {\n return this.callTool(\n \"compare_business_banking\",\n request,\n types.businessBankingComparisonResponseSchema,\n );\n }\n\n async comparePersonalBanking(\n request: types.PersonalBankingSearchSchema,\n ): Promise<types.PersonalBankingComparisonResponse> {\n return this.callTool(\n \"compare_personal_banking\",\n request,\n types.personalBankingComparisonResponseSchema,\n );\n }\n\n async compareSavingsAccounts(\n request: types.SavingsSearchSchema,\n ): Promise<types.SavingsAccountComparisonResponse> {\n return this.callTool(\n \"compare_savings_accounts\",\n request,\n types.savingsComparisonResponseSchema,\n );\n }\n\n async compareBusinessCreditCards(\n request: types.BusinessCreditCardSearchParams,\n ): Promise<types.BusinessCreditCardComparisonResponse> {\n return this.callTool(\n \"compare_business_credit_cards\",\n request,\n types.businessCreditCardComparisonResponseSchema,\n );\n }\n\n async comparePersonalCreditCards(\n request: types.PersonalCreditCardSearchSchema,\n ): Promise<types.PersonalCreditCardComparisonResponse> {\n return this.callTool(\n \"compare_personal_credit_cards\",\n request,\n types.personalCreditCardComparisonResponseSchema,\n );\n }\n\n // --- Financial Calculators ---\n\n async calculateLoanPayment(\n request: types.LoanPaymentParams,\n ): Promise<types.LoanCalculationResponse> {\n return this.callTool(\n \"calculate_loan_payment\",\n request,\n types.loanPaymentResponseSchema,\n );\n }\n\n async calculateMortgagePayment(\n request: types.MortgagePaymentParams,\n ): Promise<types.MortgageCalculationResponse> {\n return this.callTool(\n \"calculate_mortgage_payment\",\n request,\n types.mortgagePaymentResponseSchema,\n );\n }\n\n async compareLeaseVsPurchase(\n request: types.LeaseVsPurchaseParams,\n ): Promise<types.LeaseVsPurchaseResponse> {\n return this.callTool(\n \"compare_lease_vs_purchase\",\n request,\n types.leaseVsPurchaseResponseSchema,\n );\n }\n\n // --- Application Management ---\n\n async getOffer(\n request: types.GetOfferParams,\n ): Promise<types.PersonalApplication> {\n return this.callTool(\"get_offer\", request, types.personalApplicationSchema);\n }\n\n async getMultipleOffers(\n request: types.GetMultipleOffersParams,\n ): Promise<types.PersonalApplication> {\n return this.callTool(\n \"get_multiple_offers\",\n request,\n types.personalApplicationSchema,\n );\n }\n\n async displayOfferForm(\n request: types.DisplayOfferFormParams,\n ): Promise<types.DisplayOfferFormResponse> {\n return this.callTool(\n \"display_offer_form\",\n request,\n types.displayOfferFormResponseSchema,\n );\n }\n\n async trackOfferStatus(\n request: types.TrackOfferStatusParams,\n ): Promise<types.TrackOfferStatusResponse> {\n return this.callTool(\n \"track_offer_status\",\n request,\n types.trackOfferStatusResponseSchema,\n );\n }\n\n async displayUploadDocumentsForm(\n request: types.DisplayUploadDocumentsFormParams,\n ): Promise<types.DisplayUploadDocumentsFormResponse> {\n return this.callTool(\n \"display_upload_documents_form\",\n request,\n types.displayUploadDocumentsFormResponseSchema,\n );\n }\n\n async submitDocuments(\n request: types.SubmitDocumentsParams,\n ): Promise<types.SubmitDocumentsResponse> {\n return this.callTool(\n \"submit_documents\",\n request,\n types.submitDocumentsResponseSchema,\n );\n }\n\n // --- Core Methods ---\n\n /**\n * Manually connect to the MCP server.\n * Connection is otherwise established on the first tool call.\n */\n async connect(): Promise<void> {\n await this.mcpClient.connect();\n }\n\n /**\n * Enable debug logging\n */\n enableDebug(): void {\n this.mcpClient.enableDebug();\n }\n\n /**\n * Disable debug logging\n */\n disableDebug(): void {\n this.mcpClient.disableDebug();\n }\n\n /**\n * Set the API key for subsequent requests.\n * @param apiKey - The new API key\n */\n setApiKey(apiKey: string): void {\n this.mcpClient.setApiKey(apiKey);\n this.rest.setApiKey(apiKey);\n }\n\n // --- Private Helpers ---\n\n private async callTool<T extends { widget?: string }>(\n toolName: string,\n request: unknown,\n schema: z.ZodType<T>,\n ): Promise<T> {\n const toolResult = await this.mcpClient.callTool(\n toolName,\n request as Record<string, unknown>,\n );\n const data = this.parseJsonResponse(toolResult as ToolResult, schema);\n\n return { ...data, widget: this.getWidget(toolResult as ToolResult) };\n }\n\n private parseJsonResponse<T>(\n toolResult: ToolResult,\n schema: z.ZodType<T>,\n ): T {\n try {\n let jsonData: unknown;\n\n // Prefer structuredContent if available from the underlying MCP-SDK\n if (toolResult.structuredContent) {\n jsonData = toolResult.structuredContent;\n } else {\n const jsonContent = toolResult.content.find(\n (c: ContentItem) =>\n (c.type === \"resource\" &&\n c.resource &&\n c.resource.mimeType === \"application/json\") ||\n c.type === \"text\",\n );\n\n if (!jsonContent) {\n throw new SecureLendError(\n \"Invalid response from MCP server: missing JSON content\",\n \"mcp_error\",\n toolResult,\n );\n }\n\n if (jsonContent.type === \"text\" && jsonContent.text) {\n jsonData = JSON.parse(jsonContent.text);\n } else if (jsonContent.type === \"resource\" && jsonContent.resource) {\n jsonData = JSON.parse(jsonContent.resource.text);\n } else {\n throw new Error(\"Invalid content structure\");\n }\n }\n return schema.parse(jsonData);\n } catch (e) {\n if (e instanceof z.ZodError) {\n throw new ValidationError(\n \"Invalid response from MCP server: failed to validate JSON content\",\n { validationErrors: e.issues, serverResponse: toolResult },\n );\n }\n throw new SecureLendError(\n \"Invalid response from MCP server: failed to parse JSON content\",\n \"mcp_error\",\n { originalError: e, serverResponse: toolResult },\n );\n }\n }\n\n private getWidget(toolResult: ToolResult): string | undefined {\n const widgetContent = toolResult.content.find(\n (c: ContentItem) =>\n c.type === \"resource\" && c.resource?.mimeType === \"text/html\",\n );\n if (widgetContent?.type === \"resource\" && widgetContent.resource) {\n return widgetContent.resource.text;\n }\n return undefined;\n }\n}\n"]}