Skip to main content
Glama
lkm1developer

Apollo.io MCP Server

people_enrichment

Enrich contact data by adding professional details like company information, LinkedIn profiles, and email addresses using provided names or domains.

Instructions

Use the People Enrichment endpoint to enrich data for 1 person

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
first_nameNoPerson's first name
last_nameNoPerson's last name
emailNoPerson's email address
domainNoCompany domain
organization_nameNoOrganization name
linkedin_urlNoPerson's LinkedIn profile URL

Implementation Reference

  • Core handler function that executes the People Enrichment API call to Apollo.io using axios.
     * https://docs.apollo.io/reference/people-enrichment
     */
    async peopleEnrichment(query: PeopleEnrichmentQuery): Promise<any> {
      try {
        const url = `${this.baseUrl}/people/match`;
        console.log('url', url);
        console.log('query', query);
        const response = await this.axiosInstance.post(url, query);
        
        if (response.status === 200) {
          return response.data;
        } else {
          console.error(`Error: ${response.status} - ${response.statusText}`);
          return null;
        }
      } catch (error: any) {
        console.error(`Error: ${error.response?.status} - ${error.response?.statusText || error.message}`);
        return null;
      }
    }
  • TypeScript interface defining the input query parameters for people_enrichment.
    export interface PeopleEnrichmentQuery {
      first_name?: string;
      last_name?: string;
      email?: string;
      domain?: string;
      organization_name?: string;
      [key: string]: any;
    }
  • src/index.ts:79-111 (registration)
    Tool registration including name, description, and input schema in the ListTools handler.
    {
      name: 'people_enrichment',
      description: 'Use the People Enrichment endpoint to enrich data for 1 person',
      inputSchema: {
        type: 'object',
        properties: {
          first_name: { 
            type: 'string', 
            description: "Person's first name" 
          },
          last_name: { 
            type: 'string', 
            description: "Person's last name" 
          },
          email: { 
            type: 'string', 
            description: "Person's email address" 
          },
          domain: { 
            type: 'string', 
            description: "Company domain" 
          },
          organization_name: { 
            type: 'string', 
            description: "Organization name" 
          },
          linkedin_url: {
            type: 'string',
            description: "Person's LinkedIn profile URL"
          }
        }
      }
    },
  • MCP CallToolRequestSchema handler case that delegates to ApolloClient.peopleEnrichment and formats response.
    case 'people_enrichment': {
      const result = await this.apollo.peopleEnrichment(args);
      return {
        content: [{
          type: 'text',
          text: JSON.stringify(result, null, 2)
        }]
      };
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool enriches data for one person but doesn't describe what 'enrich' entails (e.g., adding contact info, job history, social profiles), whether it requires authentication, rate limits, or what the output looks like. This is a significant gap for a tool with no annotations or output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's core function. It's appropriately sized for a tool with a clear purpose and well-documented schema, with zero wasted words or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'enrichment' means, what data is returned, or how parameters are used. For a data enrichment tool with multiple input options and no structured output documentation, this leaves significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters with clear descriptions. The description adds no additional parameter semantics beyond implying these fields are used for enrichment. This meets the baseline of 3 when schema does the heavy lifting, but doesn't compensate with extra context like which parameters are most important or how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'enrich data for 1 person' with the specific verb 'enrich' and resource 'person'. It distinguishes from siblings like 'employees_of_company' (multiple people) and 'get_person_email' (specific data point). However, it doesn't specify what 'enrich' means in terms of data types or sources, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'people_search' (which might find multiple people) or 'organization_enrichment' (which enriches company data). There's no context about prerequisites or exclusions, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/lkm1developer/apollo-io-mcp-server'

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