heyreach-mcp-server
Version:
Production-ready Model Context Protocol server for HeyReach LinkedIn automation with comprehensive validation
104 lines (103 loc) • 4.01 kB
TypeScript
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>>;
}