UNPKG

heyreach-mcp-server

Version:

Production-ready Model Context Protocol server for HeyReach LinkedIn automation with comprehensive validation

104 lines (103 loc) 4.01 kB
import { HeyReachConfig, Campaign, Lead, ApiResponse, PaginatedResponse, Conversation, OverallStats, LeadList, MyNetworkProfile, LinkedInAccount, CampaignSequence, CampaignSettings, CampaignAnalytics } from './types.js'; export declare class HeyReachClient { private client; private apiKey; constructor(config: HeyReachConfig); /** * Verify API key is valid - TESTED AND WORKING ✅ */ checkApiKey(): Promise<ApiResponse<boolean>>; /** * Get all campaigns - TESTED AND WORKING ✅ */ getAllCampaigns(offset?: number, limit?: number): Promise<PaginatedResponse<Campaign>>; /** * Get campaign details - FIXED TO USE WORKING ENDPOINT ✅ */ getCampaignDetails(campaignId: number): Promise<ApiResponse<Campaign>>; /** * Pause or resume campaign - TESTED AND WORKING ✅ */ toggleCampaignStatus(campaignId: number, action: 'pause' | 'resume'): Promise<ApiResponse<Campaign>>; /** * Get conversations - NEW WORKING ENDPOINT ✅ */ getConversations(filters?: { linkedInAccountIds?: number[]; campaignIds?: number[]; searchString?: string; leadLinkedInId?: string; leadProfileUrl?: string; seen?: boolean; }, offset?: number, limit?: number): Promise<PaginatedResponse<Conversation>>; /** * Get lead details - NEW WORKING ENDPOINT ✅ */ getLeadDetails(profileUrl: string): Promise<ApiResponse<Lead>>; /** * Get overall stats - NEW WORKING ENDPOINT ✅ */ getOverallStats(accountIds?: number[], campaignIds?: number[], startDate?: string, endDate?: string): Promise<ApiResponse<OverallStats>>; /** * Get all lists - NEW WORKING ENDPOINT ✅ */ getAllLists(offset?: number, limit?: number): Promise<PaginatedResponse<LeadList>>; /** * Create empty list - NEW WORKING ENDPOINT ✅ */ createEmptyList(name: string, type?: 'USER_LIST' | 'COMPANY_LIST'): Promise<ApiResponse<LeadList>>; /** * Get my network for sender - NEW WORKING ENDPOINT ✅ */ getMyNetworkForSender(senderId: number, pageNumber?: number, pageSize?: number): Promise<PaginatedResponse<MyNetworkProfile>>; /** * Add leads to campaign - PRODUCTION-READY IMPLEMENTATION ✅ * Based on HeyReach API docs with comprehensive validation */ addLeadsToCampaign(campaignId: number, leads: Array<{ linkedInAccountId?: number | null; lead: { firstName?: string; lastName?: string; profileUrl: string; location?: string; summary?: string; companyName?: string; position?: string; about?: string; emailAddress?: string; customUserFields?: Array<{ name: string; value: string; }>; }; }>): Promise<ApiResponse<{ addedCount: number; }>>; /** * Get LinkedIn accounts - CRITICAL NEW ENDPOINT ✅ */ getLinkedInAccounts(offset?: number, limit?: number): Promise<PaginatedResponse<LinkedInAccount>>; /** * Create campaign - CRITICAL NEW ENDPOINT ✅ */ createCampaign(name: string, listId: number, linkedInAccountIds: number[], sequence: CampaignSequence, settings?: CampaignSettings): Promise<ApiResponse<Campaign>>; /** * Pause campaign - SEPARATE ENDPOINT ✅ */ pauseCampaign(campaignId: number): Promise<ApiResponse<Campaign>>; /** * Resume campaign - SEPARATE ENDPOINT ✅ */ resumeCampaign(campaignId: number): Promise<ApiResponse<Campaign>>; /** * Remove lead from campaign - NEW ENDPOINT ✅ */ removeLeadFromCampaign(campaignId: number, leadId: string): Promise<ApiResponse<{ removed: boolean; }>>; /** * Get campaign analytics - NEW ENDPOINT ✅ */ getCampaignAnalytics(campaignId: number, startDate?: string, endDate?: string): Promise<ApiResponse<CampaignAnalytics>>; }