UNPKG

@iriseller/mcp-server

Version:

Model Context Protocol (MCP) server providing access to IRISeller's AI sales intelligence platform with 7 AI agents, multi-CRM integration, advanced sales workflows, email automation, Rosa demo functionality with action scoring, DNC compliance checking, G

122 lines (121 loc) 4.14 kB
import { z } from 'zod'; // Base types for IRISeller data structures export const LeadSchema = z.object({ id: z.string(), name: z.string(), email: z.string().optional(), company: z.string(), title: z.string().optional(), phone: z.string().optional(), status: z.string().optional(), industry: z.string().optional(), source: z.string().optional(), score: z.number().optional(), }); export const OpportunitySchema = z.object({ id: z.string(), name: z.string(), amount: z.number().optional(), stage: z.string(), probability: z.number().optional(), closeDate: z.string().optional(), accountId: z.string().optional(), ownerId: z.string().optional(), }); export const ContactSchema = z.object({ id: z.string(), name: z.string(), email: z.string().optional(), phone: z.string().optional(), title: z.string().optional(), accountId: z.string().optional(), department: z.string().optional(), }); export const CompanySchema = z.object({ name: z.string(), industry: z.string().optional(), size: z.string().optional(), website: z.string().optional(), location: z.string().optional(), revenue: z.string().optional(), }); // Agent execution types export const AgentExecutionRequestSchema = z.object({ agent_name: z.enum([ 'rosa_sdr', 'prospecting', 'personalization', 'sequence', 'social_selling', 'nurturing', 'objection_handling' ]), input_data: z.record(z.any()), options: z.object({ timeout: z.number().optional(), priority: z.enum(['low', 'medium', 'high']).optional(), include_research: z.boolean().optional(), }).optional(), }); export const WorkflowExecutionRequestSchema = z.object({ workflow_type: z.enum([ 'full_sdr_workflow', 'account_based_prospecting', 'lead_qualification_enhancement', 'outreach_sequence_creation', 'social_selling_campaign', 'lead_nurturing_setup' ]), input_data: z.record(z.any()), agents_to_include: z.array(z.string()).optional(), options: z.object({ timeout: z.number().optional(), priority: z.enum(['low', 'medium', 'high']).optional(), }).optional(), }); // CRM query types export const CRMQuerySchema = z.object({ entity_type: z.enum(['leads', 'opportunities', 'contacts', 'accounts']), filters: z.union([ z.record(z.any()), // Object format: {quarter: "Q4"} z.array(z.object({ field: z.string(), value: z.any() })) // Array format: [{field: "quarter", value: "Q4"}] ]).optional().transform((filters) => { // Convert array format to object format if needed if (Array.isArray(filters)) { const obj = {}; filters.forEach(filter => { obj[filter.field] = filter.value; }); return obj; } return filters; }), limit: z.number().min(1).max(100).default(10), offset: z.number().min(0).default(0), sort_by: z.string().optional(), sort_order: z.enum(['asc', 'desc']).default('desc'), }); // Research types export const CompanyResearchRequestSchema = z.object({ company_name: z.string(), industry: z.string().optional(), research_depth: z.enum(['basic', 'comprehensive', 'competitive']).default('basic'), include_competitors: z.boolean().default(false), include_news: z.boolean().default(true), include_financials: z.boolean().default(false), }); // Personalization types export const PersonalizationRequestSchema = z.object({ prospect_data: z.object({ name: z.string(), company: z.string(), title: z.string().optional(), industry: z.string().optional(), email: z.string().optional(), linkedin_url: z.string().optional(), }), message_type: z.enum(['email', 'linkedin', 'phone_script', 'sequence']), tone: z.enum(['professional', 'casual', 'consultative', 'friendly']).default('professional'), objectives: z.array(z.string()).optional(), context: z.string().optional(), });