get_scored_leads
Retrieve AI-scored sales leads tailored to your ideal customer profile. Filter by buyer intent score, buying stage, and industry to prioritize high-intent prospects with recommended outreach strategies.
Instructions
Get AI-scored sales leads based on your ICP (Ideal Customer Profile). Returns companies with recent business events scored by AI for buyer intent, buying stage, and recommended outreach strategy.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| min_score | No | Minimum buyer intent score (0-100). Default: 0 | |
| max_results | No | Max leads to return (1-50). Default: 25 | |
| buying_stages | No | Filter by buying stage: 'Active Evaluation', 'Decision', 'Research', 'Awareness' | |
| industries | No | Filter by industry (e.g., ['SaaS', 'HealthTech', 'FinTech']) |
Implementation Reference
- src/index.ts:177-201 (handler)The handler function for the 'get_scored_leads' tool. It calls the API endpoint /signals with parameters (min_score, max_results, buying_stages, industries), processes the response, and formats the results into a readable text output.
case "get_scored_leads": { const data = await apiRequest("POST", "/signals", { min_score: (args as any).min_score ?? 0, max_results: (args as any).max_results ?? 25, buying_stages: (args as any).buying_stages, industries: (args as any).industries, }); const leads = data.signals || []; if (leads.length === 0) { return textResult("No scored leads found for your current ICP. Leads are generated daily by the AI scoring engine."); } const summary = leads .map( (lead: any, i: number) => `${i + 1}. **${lead.company_name}** (Score: ${lead.score}/100)\n` + ` Stage: ${lead.buying_stage} | Priority: ${lead.priority}\n` + ` Pain Point: ${lead.pain_point}\n` + ` Outreach: ${lead.outreach_angle}\n` + ` Action: ${lead.recommended_action}\n` + (lead.domain ? ` Domain: ${lead.domain}\n` : "") + (lead.industries?.length ? ` Industries: ${lead.industries.join(", ")}\n` : "") ) .join("\n"); return textResult(`Found ${data.signals_found} scored leads (showing ${leads.length}):\n\n${summary}`); } - src/index.ts:79-95 (schema)Input schema for 'get_scored_leads' tool, defining parameters: min_score (number), max_results (number), buying_stages (array of strings), and industries (array of strings).
inputSchema: { type: "object" as const, properties: { min_score: { type: "number", description: "Minimum buyer intent score (0-100). Default: 0" }, max_results: { type: "number", description: "Max leads to return (1-50). Default: 25" }, buying_stages: { type: "array", items: { type: "string" }, description: "Filter by buying stage: 'Active Evaluation', 'Decision', 'Research', 'Awareness'", }, industries: { type: "array", items: { type: "string" }, description: "Filter by industry (e.g., ['SaaS', 'HealthTech', 'FinTech'])", }, }, }, - src/index.ts:73-96 (registration)Registration of the 'get_scored_leads' tool within the ListToolsRequestSchema handler, including its name and description.
{ name: "get_scored_leads", description: "Get AI-scored sales leads based on your ICP (Ideal Customer Profile). " + "Returns companies with recent business events scored by AI for buyer intent, " + "buying stage, and recommended outreach strategy.", inputSchema: { type: "object" as const, properties: { min_score: { type: "number", description: "Minimum buyer intent score (0-100). Default: 0" }, max_results: { type: "number", description: "Max leads to return (1-50). Default: 25" }, buying_stages: { type: "array", items: { type: "string" }, description: "Filter by buying stage: 'Active Evaluation', 'Decision', 'Research', 'Awareness'", }, industries: { type: "array", items: { type: "string" }, description: "Filter by industry (e.g., ['SaaS', 'HealthTech', 'FinTech'])", }, }, }, }, - src/index.ts:21-56 (helper)The apiRequest helper function used by the handler to make authenticated HTTP requests, and the textResult helper used to format the output.
async function apiRequest( method: string, path: string, params?: Record<string, any> ): Promise<any> { const apiKey = getApiKey(); const url = new URL(`${API_BASE}${path}`); const options: RequestInit = { method, headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json", "User-Agent": "fundzwatch-mcp/1.0.1", }, }; if (method === "GET" && params) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { url.searchParams.append(key, String(value)); } }); } else if (method !== "GET" && params) { options.body = JSON.stringify(params); } const response = await fetch(url.toString(), options); if (!response.ok) { const errBody: any = await response.json().catch(() => ({ message: response.statusText })); throw new Error(`API error ${response.status}: ${errBody.message || errBody.error || response.statusText}`); } return response.json(); }