Skip to main content
Glama
gomessoaresemmanuel-cpu

linkedin-prospection-mcp

get_pipeline_status

Monitor LinkedIn prospection pipeline status: track lead counts, invitations, messages, acceptance rates, and identify next actions.

Instructions

Get the current state of your LinkedIn prospection pipeline: lead counts by status, invitations sent, DMs sent, acceptance rates, and next actions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The tool `get_pipeline_status` is implemented here as an MCP tool handler in `src/index.ts`. It reads from `getDailyLog()` to report on pipeline status, lead counts, and next actions.
    server.registerTool(
      "get_pipeline_status",
      {
        title: "Get Pipeline Status",
        description:
          "Get the current state of your LinkedIn prospection pipeline: " +
          "lead counts by status, invitations sent, DMs sent, acceptance rates, and next actions.",
        inputSchema: {},
        annotations: { readOnlyHint: true, openWorldHint: false, destructiveHint: false },
      },
      async () => {
        const log = getDailyLog() as {
          date?: string;
          invitations_sent?: number;
          dms_sent?: number;
          leads_p1?: Array<{ name: string; status: string; priority: string; linkedin_url?: string }>;
          leads_p2?: Array<{ name: string; status: string; priority: string; linkedin_url?: string }>;
        };
    
        const allLeads = [...(log.leads_p1 || []), ...(log.leads_p2 || [])];
    
        const statusCounts: Record<string, number> = {};
        allLeads.forEach((l) => {
          const s = l.status || "unknown";
          statusCounts[s] = (statusCounts[s] || 0) + 1;
        });
    
        const lines = [
          `=== Pipeline Status (${log.date || "today"}) ===`,
          "",
          `Total leads tracked: ${allLeads.length}`,
          `Invitations sent: ${log.invitations_sent || 0}`,
          `DMs sent: ${log.dms_sent || 0}`,
          "",
          "--- Status Breakdown ---",
        ];
    
        Object.entries(statusCounts).forEach(([status, count]) => {
          lines.push(`  ${status}: ${count}`);
        });
    
        lines.push("", "--- Lead Details ---");
        allLeads.forEach((l) => {
          lines.push(`  [${l.priority}] ${l.name} — ${l.status}${l.linkedin_url ? ` — ${l.linkedin_url}` : ""}`);
        });
    
        // Session check
        lines.push("");
        if (fs.existsSync(SESSION_DIR)) {
          lines.push("LinkedIn session: ACTIVE");
        } else {
          lines.push("LinkedIn session: EXPIRED — run setup-session.js");
        }
    
        // Next actions
        lines.push("", "--- Next Actions ---");
        const pendingInvites = allLeads.filter((l) => l.status === "pending_invitation").length;
        const awaitingAccept = allLeads.filter((l) => l.status === "invitation_sent").length;
        const readyForDM = allLeads.filter((l) => l.status === "connection_accepted").length;
    
        if (pendingInvites > 0) lines.push(`  Send ${pendingInvites} pending invitations`);
        if (awaitingAccept > 0) lines.push(`  ${awaitingAccept} invitations awaiting acceptance`);
        if (readyForDM > 0) lines.push(`  Send DMs to ${readyForDM} accepted connections`);
        if (pendingInvites === 0 && awaitingAccept === 0 && readyForDM === 0) {
          lines.push("  Find new leads (run find_leads)");
        }
    
        return { content: [{ type: "text" as const, text: lines.join("\n") }] };
      },
    );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gomessoaresemmanuel-cpu/linkedin-prospection-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server