Skip to main content
Glama

search_people

Find business contacts and prospects using filters like job title, company, location, industry, and seniority to identify leads for sales outreach.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
q_keywordsNoSearch keywords for person name or title
person_titlesNoJob titles (e.g., ["CEO", "CTO", "VP Sales"])
person_senioritiesNoSeniority levels: "senior", "manager", "director", "vp", "c_suite", "owner", "partner"
organization_idsNoFilter by specific organization IDs
organization_locationsNoLocations (e.g., ["San Francisco, CA", "New York, NY"])
organization_industry_tag_idsNoIndustry tags to filter by
person_locationsNoPerson locations
pageNoPage number (default: 1)
per_pageNoResults per page (default: 25, max: 100)

Implementation Reference

  • Executes the search_people tool by posting search parameters to Apollo's /mixed_people/search API endpoint, processes the response data, and returns formatted text results listing matching people with their details including ID, title, company, location, email, LinkedIn, and seniority.
    private async searchPeople(args: any) { const response = await this.axiosInstance.post("/mixed_people/search", args); const people = response.data.people || []; const pagination = response.data.pagination || {}; let result = `Found ${pagination.total_entries || people.length} people\n`; result += `Page ${pagination.page || 1} of ${pagination.total_pages || 1}\n\n`; people.forEach((person: any, index: number) => { result += `${index + 1}. ${person.first_name} ${person.last_name}\n`; result += ` ID: ${person.id}\n`; result += ` Title: ${person.title || "N/A"}\n`; result += ` Company: ${person.organization?.name || "N/A"}\n`; result += ` Location: ${person.city ? `${person.city}, ${person.state || ""}` : "N/A"}\n`; result += ` Email: ${person.email || "N/A"}\n`; result += ` LinkedIn: ${person.linkedin_url || "N/A"}\n`; result += ` Seniority: ${person.seniority || "N/A"}\n\n`; }); return { content: [ { type: "text", text: result, }, ], }; }
  • Defines the input schema for the search_people tool, specifying parameters like keywords, titles, seniorities, organization filters, locations, pagination for validating and documenting tool inputs.
    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)", }, }, },
  • src/index.ts:118-170 (registration)
    Registers the search_people tool in the MCP server's tool list returned by getTools(), including name, description, and input schema. This makes it discoverable via ListTools.
    { 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)", }, }, }, },
  • src/index.ts:62-63 (registration)
    Dispatches calls to the search_people handler in the CallToolRequestSchema request handler switch statement.
    case "search_people": return await this.searchPeople(args);

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/masridigital/apollo.io-mcp'

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