import { TextContent, ImageContent, EmbeddedResource } from "@modelcontextprotocol/sdk/types.js"; import { ObjectId } from "mongodb"; export interface ToolArguments { session_id?: string; imo?: string; user_id?: string; questionNo?: string; document_link?: string; download_path?: string; json_output?: string; md_output?: string; parsing_instruction?: string; format?: string; extract_only?: boolean; llama_api_key?: string; vendor_model?: string; delete_downloads?: boolean; operation?: "write_casefile" | "write_page" | "get_casefiles" | "get_casefile_plan"; casefile_url?: string; casefileName?: string; casefileSummary?: string; currentStatus?: string; importance?: number; category?: string; role?: string; content?: string; casefile?: string; tags?: string[]; topic?: string; summary?: string; mailId?: string; facts?: string; links?: string[]; detailed_report?: string; query?: string; min_importance?: number; page_size?: number; pagination?: number; num_results?: number; filters?: Record; sort_by?: string; sort_order?: string; max_results?: number; vendorName?: string; service?: string; locationRegion?: string; vendorId?: string; limit?: number; start_date?: string; end_date?: string; startDate?: string; endDate?: string; dateFrom?: string; dateTo?: string; daysAgo?: number; lookbackHours?: number; lookback_hours?: number; requisitionId?: string; orderId?: string; status?: string; type?: string; stage?: string; priority?: string; year?: number; vesselId?: string; purchaseRequisitionNumber?: string; purchaseOrderNumber?: string; purchaseRequisitionStatus?: string; purchaseOrderStatus?: string; purchaseRequisitionType?: string; purchaseOrderStage?: string; vesselName?: string; orderPriority?: string; daysOverdue?: number; sessionId?: string; vendor?: string; collection?: string; projection?: Record; skip?: number; group?: string; period?: string; per_page?: number; query_keyword?: string; tag?: string; vessel_name?: string; } export interface VesselInfo { imo: string; name: string; } export interface PurchaseRequisition { id: string; vesselId: string; status: string; priority: string; } export interface PurchaseOrder { id: string; requisitionId: string; status: string; } export interface BudgetData { vesselId: string; year: number; month: number; amount: number; } export interface Casefile { id: string; title: string; content: string; createdAt: Date; updatedAt: Date; } export interface VendorInfo { id: string; name: string; contactDetails: { email?: string; phone?: string; address?: string; }; } export type ToolResponse = Array; export interface ServerConfig { serverName: string; serverVersion: string; capabilities: { resources: { read: boolean; list: boolean; templates: boolean; }; tools: { list: boolean; call: boolean; }; prompts: { list: boolean; get: boolean; }; }; } export interface CasefileDocument { _id?: ObjectId; vesselId: string | null; imo: string; vesselName: string | null; casefile: string; currentStatus?: string; summary?: string; originalImportance: number; importance: number; category: string; role?: string; followUp: string; createdAt: Date; updatedAt: Date; index: CasefileIndex[]; pages: CasefilePage[]; link?: string; tags?: string[]; casefilePlans?: any[]; } export interface CasefileIndex { pagenum: number; type: string; createdAt: Date; topic: string; plan_status: string; } export interface CasefilePage { pagenum: number; summary: string; createdAt: Date; subject: string; flag: string; type: string; link: { link: string; }[]; plan_status: string; } export interface TypesenseDocument { id: string; vesselId: string | null; imo: string; vesselName: string | null; casefile: string; currentStatus?: string; summary?: string; originalImportance: number; importance: number; category: string; role?: string; followUp: string; createdAt: Date; updatedAt: Date; link?: string; tags?: string[]; importance_score?: number; embedding?: number[]; embedding_text?: string; } export interface VendorDocument { id: string; vendorName: string; service?: string; locationRegion?: string; address?: string; contactEmail?: string; contactNumber?: string; } export interface SearchResult { found: number; out_of: number; page: number; hits: any[]; } export interface Config { mongoUri: string; mongoDbName: string; typesenseHost: string; typesensePort: number; typesenseProtocol: string; typesenseApiKey: string; openaiApiKey: string; llamaApiKey: string; vendorModel: string; s3ApiToken: string; s3GenerateHtmlUrl: string; perplexityApiKey: string; googleSearchApiKey: string; googleSearchEngineId: string; baseUrl?: string; snapshotUrl?: string; jwtToken?: string; }