find_email
Find and verify email addresses using a person's name and company domain or LinkedIn profile URL.
Instructions
Find and verify email addresses for a person. Provide name and company domain or LinkedIn URL.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | No | First name | |
| last_name | No | Last name | |
| domain | No | Company domain | |
| linkedin_url | No | LinkedIn profile URL |
Implementation Reference
- src/index.ts:752-782 (handler)The handler function that implements the core logic of the 'find_email' tool. It calls Apollo's /people/match endpoint with provided arguments (name/domain or LinkedIn), extracts the person's email data, and returns a formatted text response.private async findEmail(args: any) { const response = await this.axiosInstance.post("/people/match", args); const person = response.data.person; if (!person) { return { content: [ { type: "text", text: "No email found for the provided information.", }, ], }; } let result = `Email Found:\n\n`; result += `Name: ${person.first_name} ${person.last_name}\n`; result += `Email: ${person.email || "Not available"}\n`; result += `Status: ${person.email_status || "N/A"}\n`; result += `Company: ${person.organization?.name || "N/A"}\n`; result += `Title: ${person.title || "N/A"}\n`; return { content: [ { type: "text", text: result, }, ], }; }
- src/index.ts:271-296 (schema)The tool definition including name, description, and input schema for 'find_email', returned by getTools() for MCP ListTools requests.{ name: "find_email", description: "Find and verify email addresses for a person. Provide name and company domain or LinkedIn URL.", inputSchema: { type: "object", properties: { first_name: { type: "string", description: "First name", }, last_name: { type: "string", description: "Last name", }, domain: { type: "string", description: "Company domain", }, linkedin_url: { type: "string", description: "LinkedIn profile URL", }, }, }, },
- src/index.ts:70-71 (registration)The switch case in the CallToolRequest handler that registers and dispatches 'find_email' calls to the findEmail method.case "find_email": return await this.findEmail(args);
- src/index.ts:116-600 (registration)The getTools() method that lists all available tools including 'find_email' for MCP protocol compliance.private getTools(): Tool[] { return [ { name: "search_people", description: "Search for people/contacts in Apollo's database with advanced filters. Use this to find prospects, leads, or specific individuals based on criteria like job title, company, location, industry, seniority, etc.", inputSchema: { type: "object", properties: { q_keywords: { type: "string", description: "Search keywords for person name or title", }, person_titles: { type: "array", items: { type: "string" }, description: 'Job titles (e.g., ["CEO", "CTO", "VP Sales"])', }, person_seniorities: { type: "array", items: { type: "string" }, description: 'Seniority levels: "senior", "manager", "director", "vp", "c_suite", "owner", "partner"', }, organization_ids: { type: "array", items: { type: "string" }, description: "Filter by specific organization IDs", }, organization_locations: { type: "array", items: { type: "string" }, description: 'Locations (e.g., ["San Francisco, CA", "New York, NY"])', }, organization_industry_tag_ids: { type: "array", items: { type: "string" }, description: "Industry tags to filter by", }, person_locations: { type: "array", items: { type: "string" }, description: "Person locations", }, page: { type: "number", description: "Page number (default: 1)", }, per_page: { type: "number", description: "Results per page (default: 25, max: 100)", }, }, }, }, { name: "search_organizations", description: "Search for companies/organizations in Apollo's database. Filter by industry, size, location, revenue, technology, and more. Great for building targeted account lists.", inputSchema: { type: "object", properties: { q_organization_name: { type: "string", description: "Organization name search", }, organization_locations: { type: "array", items: { type: "string" }, description: 'Locations (e.g., ["San Francisco, CA"])', }, organization_industry_tag_ids: { type: "array", items: { type: "string" }, description: "Industry tag IDs", }, organization_num_employees_ranges: { type: "array", items: { type: "string" }, description: 'Employee count ranges: "1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10000", "10001+"', }, revenue_range: { type: "object", properties: { min: { type: "number" }, max: { type: "number" }, }, description: "Revenue range filter", }, organization_keywords: { type: "array", items: { type: "string" }, description: "Keywords to search in organization data", }, page: { type: "number", description: "Page number (default: 1)", }, per_page: { type: "number", description: "Results per page (default: 25, max: 100)", }, }, }, }, { name: "enrich_person", description: "Enrich a person's data with email, phone, social profiles, employment info, and more. Provide either email, name+domain, or LinkedIn URL.", inputSchema: { type: "object", properties: { email: { type: "string", description: "Person's email address", }, first_name: { type: "string", description: "First name (use with domain)", }, last_name: { type: "string", description: "Last name (use with domain)", }, domain: { type: "string", description: "Company domain (e.g., apollo.io)", }, linkedin_url: { type: "string", description: "LinkedIn profile URL", }, reveal_personal_emails: { type: "boolean", description: "Include personal email addresses", }, }, }, }, { name: "enrich_organization", description: "Enrich an organization's data with detailed company information, employee count, revenue, technologies used, funding, and more. Provide domain name.", inputSchema: { type: "object", properties: { domain: { type: "string", description: "Company domain (e.g., apollo.io)", }, }, required: ["domain"], }, }, { name: "find_email", description: "Find and verify email addresses for a person. Provide name and company domain or LinkedIn URL.", inputSchema: { type: "object", properties: { first_name: { type: "string", description: "First name", }, last_name: { type: "string", description: "Last name", }, domain: { type: "string", description: "Company domain", }, linkedin_url: { type: "string", description: "LinkedIn profile URL", }, }, }, }, { name: "list_sequences", description: "List all email sequences in your Apollo account. Sequences are automated email campaigns.", inputSchema: { type: "object", properties: { page: { type: "number", description: "Page number", }, }, }, }, { name: "get_sequence", description: "Get detailed information about a specific sequence including steps, stats, and settings.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Sequence ID", }, }, required: ["id"], }, }, { name: "analyze_sequence", description: "Analyze a sequence's performance with detailed metrics: open rates, reply rates, bounce rates, contacts added, active contacts, and step-by-step analytics.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Sequence ID to analyze", }, }, required: ["id"], }, }, { name: "add_to_sequence", description: "Add contacts to a sequence. Provide sequence ID and contact email addresses or contact IDs.", inputSchema: { type: "object", properties: { sequence_id: { type: "string", description: "Sequence ID", }, contact_ids: { type: "array", items: { type: "string" }, description: "Array of contact IDs to add", }, contact_emails: { type: "array", items: { type: "string" }, description: "Array of contact emails to add", }, mailbox_id: { type: "string", description: "Mailbox ID to send from (optional)", }, }, required: ["sequence_id"], }, }, { name: "remove_from_sequence", description: "Remove contacts from a sequence. Provide sequence ID and contact IDs.", inputSchema: { type: "object", properties: { sequence_id: { type: "string", description: "Sequence ID", }, contact_ids: { type: "array", items: { type: "string" }, description: "Array of contact IDs to remove", }, }, required: ["sequence_id", "contact_ids"], }, }, { name: "get_lists", description: "Get all contact lists in your Apollo account. Lists are collections of saved contacts.", inputSchema: { type: "object", properties: { page: { type: "number", description: "Page number", }, }, }, }, { name: "get_list_contacts", description: "Scrape/retrieve all contacts from a specific list with full details including emails, titles, companies, etc.", inputSchema: { type: "object", properties: { id: { type: "string", description: "List ID", }, page: { type: "number", description: "Page number (default: 1)", }, per_page: { type: "number", description: "Results per page (default: 100)", }, }, required: ["id"], }, }, { name: "analyze_list", description: "Analyze a contact list with detailed breakdown: total contacts, job titles distribution, seniority levels, companies, locations, industries, and data completeness metrics.", inputSchema: { type: "object", properties: { id: { type: "string", description: "List ID to analyze", }, }, required: ["id"], }, }, { name: "create_contact", description: "Create a new contact in Apollo with details like name, email, title, company, etc.", inputSchema: { type: "object", properties: { first_name: { type: "string", description: "First name", }, last_name: { type: "string", description: "Last name", }, email: { type: "string", description: "Email address", }, title: { type: "string", description: "Job title", }, organization_name: { type: "string", description: "Company name", }, linkedin_url: { type: "string", description: "LinkedIn URL", }, phone_numbers: { type: "array", items: { type: "string" }, description: "Phone numbers", }, }, required: ["first_name", "last_name"], }, }, { name: "update_contact", description: "Update an existing contact's information in Apollo.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Contact ID", }, first_name: { type: "string", description: "First name", }, last_name: { type: "string", description: "Last name", }, email: { type: "string", description: "Email address", }, title: { type: "string", description: "Job title", }, linkedin_url: { type: "string", description: "LinkedIn URL", }, }, required: ["id"], }, }, { name: "create_account", description: "Create a new account/organization in Apollo with company details.", inputSchema: { type: "object", properties: { name: { type: "string", description: "Company name", }, domain: { type: "string", description: "Company domain", }, phone_number: { type: "string", description: "Company phone", }, website_url: { type: "string", description: "Website URL", }, }, required: ["name"], }, }, { name: "get_account", description: "Get detailed information about an account/organization by ID or domain.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Account ID", }, domain: { type: "string", description: "Company domain", }, }, }, }, { name: "search_job_postings", description: "Search for job postings to identify companies that are hiring and find buying signals.", inputSchema: { type: "object", properties: { q_keywords: { type: "string", description: "Keywords to search in job postings", }, organization_ids: { type: "array", items: { type: "string" }, description: "Filter by organization IDs", }, page: { type: "number", description: "Page number", }, }, }, }, { name: "get_person_activity", description: "Get activity history and engagement data for a specific person/contact.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Person/Contact ID", }, }, required: ["id"], }, }, ]; }