Skip to main content
Glama
FromSmall2Big

Apollo.io MCP Server

Apollo.io MCP Server

A Model Context Protocol (MCP) server that provides tools for interacting with the Apollo.io API. This server enables AI assistants to search for accounts, enrich people and organization data, and retrieve contact information.

Features

Account Management

  • Search Accounts: Find companies by name, location, employee count, and industry

  • Get Account Details: Retrieve comprehensive account information by ID

  • Create Accounts: Add new accounts to your Apollo.io database

  • Update Accounts: Modify existing account information

People & Contact Data

  • Search People: Find contacts by job title, seniority, company, and location

  • Enrich Person: Get detailed contact information including emails and phone numbers

  • Bulk Enrichment: Enrich multiple people or organizations simultaneously

Organization Data

  • Enrich Organizations: Get detailed company information from domain

  • Bulk Organization Enrichment: Enrich up to 10 companies at once

  • Technology Stack: See what technologies companies use

  • Financial Data: Access funding information and revenue data

Additional Features

  • Persona Information: Access created persona data and counts

  • Intent Data: Integration ready for Bombora intent data

  • Email Accounts: Manage email accounts for sequences

  • Opportunities: Search and manage sales opportunities

  • Health Checks: Verify API connectivity and authentication

Related MCP server: Apollo MCP Server

Prerequisites

  • Python 3.8 or higher

  • UV package manager

  • Apollo.io API key

Installation

  1. Clone or create the project:

    mkdir apollo-mcp-server
    cd apollo-mcp-server
  2. Install UV (if not already installed):

    curl -LsSf https://astral.sh/uv/install.sh | sh
  3. Install dependencies:

    uv sync
  4. Set up environment variables:

    cp .env.example .env
    # Edit .env and add your Apollo.io API key

Configuration

Apollo.io API Key

  1. Log in to your Apollo.io account

  2. Go to Settings → Integrations → API

  3. Generate or copy your API key

  4. Add it to your .env file:

    APOLLO_API_KEY=your_actual_api_key_here

Usage

Running the Server

uv run python src/apollo_mcp_server.py

Or using the installed script:

uv run apollo-mcp-server

Available Tools

search_accounts({
    "q_organization_name": "Google",
    "organization_locations": ["California, US"],
    "organization_num_employees_ranges": ["1000,10000"],
    "page": 1,
    "per_page": 25
})
search_people({
    "q_organization_domains": "apollo.io\ngoogle.com",
    "person_titles": ["CEO", "CTO", "VP Engineering"],
    "person_seniorities": ["senior", "manager"],
    "organization_locations": ["California, US"],
    "page": 1,
    "per_page": 10
})

Person Enrichment

enrich_person({
    "first_name": "Tim",
    "last_name": "Zheng",
    "email": "tim@apollo.io",
    "organization_name": "Apollo",
    "domain": "apollo.io",
    "linkedin_url": "http://www.linkedin.com/in/tim-zheng-677ba010",
    "reveal_personal_emails": true,
    "reveal_phone_number": false
})

Organization Enrichment

enrich_organization({
    "domain": "apollo.io"
})

Bulk Organization Enrichment

bulk_enrich_organizations([
    "apollo.io",
    "google.com",
    "microsoft.com"
])

API Endpoints Covered

  • /v1/accounts/search - Account search

  • /v1/accounts/{id} - Get account by ID

  • /v1/accounts - Create/update accounts

  • /v1/mixed_people/search - People search

  • /v1/people/match - Person enrichment

  • /api/v1/people/bulk_match - Bulk people enrichment

  • /v1/organizations/enrich - Organization enrichment

  • /api/v1/organizations/bulk_enrich - Bulk organization enrichment

  • /v1/opportunities/search - Opportunities search

  • /v1/email_accounts - Email accounts

  • /v1/auth/health - Health check

Error Handling

The server includes comprehensive error handling for:

  • Invalid API keys

  • Rate limiting

  • Network errors

  • Invalid request parameters

  • API response errors

All errors are returned in a structured format with descriptive messages.

Rate Limiting

Apollo.io has different rate limits for different endpoints:

  • Single enrichment endpoints: Standard rate limits

  • Bulk enrichment endpoints: 1/10th of standard rate limits

  • Search endpoints: Higher rate limits for pagination

The server respects these limits and will return appropriate error messages if limits are exceeded.

Credit Usage

Different Apollo.io operations consume different types of credits:

  • Email Credits: 1 credit per verified email found

  • Export Credits: 1 credit per non-empty record (newer plans)

  • Phone Credits: Additional charges for phone number reveals

Development

Running Tests

uv run pytest

Code Formatting

uv run black src/
uv run isort src/

Type Checking

uv run mypy src/

Integration with AI Assistants

This MCP server can be used with AI assistants that support the Model Context Protocol, such as:

  • Claude Desktop

  • Cody

  • Continue

  • Any MCP-compatible tool

Configure your AI assistant to connect to this server to enable Apollo.io functionality.

Persona and Intent Data

Persona Information

The server provides access to persona counts and created persona information through the account and organization endpoints. Persona data helps understand the types of contacts and their roles within organizations.

Intent Data Integration

While Apollo.io doesn't directly provide Bombora intent data through their standard API, the server is structured to easily integrate intent data when available. This typically requires:

  1. Separate Bombora API integration

  2. Data correlation between Apollo.io contacts and Bombora intent signals

  3. Custom enrichment workflows

Contact Apollo.io support for information about intent data partnerships and availability.

Support

For issues with this MCP server:

  1. Check the error messages and logs

  2. Verify your API key is valid

  3. Ensure you have sufficient API credits

  4. Check Apollo.io API documentation for any changes

For Apollo.io API issues:

  • Visit Apollo.io support documentation

  • Contact Apollo.io customer support

  • Check API status page

License

MIT License - see LICENSE file for details.

Available Tools

11 tools
bulk_enrich_organizationsB

Bulk enrich multiple organizations at once.

This tool enriches multiple companies simultaneously based on their domains. Up to 10 domains can be processed in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the batch limit (10 domains) but lacks details on permissions, rate limits, what 'enrich' entails (e.g., data sources, fields added), error handling, or response format. For a mutation tool with zero annotation coverage, this is insufficient.

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 front-loaded with the core purpose in the first sentence, followed by a clarifying detail. Both sentences are essential—no wasted words. It's appropriately sized for a simple tool.

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

Completeness3/5

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

Given 1 parameter with 0% schema coverage, an output schema exists (so return values are covered), and no annotations, the description is minimally adequate. It covers the batch nature and limit but misses behavioral aspects like mutation effects or error cases. For a bulk operation tool, more context on outcomes would be helpful.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that 'domains' are used for enrichment and specifies a limit of 10 items, adding some meaning. However, it doesn't explain domain format requirements (e.g., valid TLDs), whether duplicates are allowed, or other constraints, leaving gaps in parameter understanding.

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: 'Bulk enrich multiple organizations at once' and specifies it's based on domains. It distinguishes from the sibling 'enrich_organization' by emphasizing bulk capability. However, it doesn't explicitly contrast with other siblings like 'enrich_person' or 'search_accounts'.

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

Usage Guidelines3/5

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

The description implies usage context by stating 'Up to 10 domains can be processed in a single request,' suggesting this tool is for batch processing. It doesn't explicitly state when to use this versus 'enrich_organization' (single vs. bulk) or other alternatives, nor does it provide exclusion criteria or prerequisites.

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

create_accountC

Create a new account in Apollo.io.

This tool creates a new account with the provided information. The domain and address will be intelligently parsed for additional data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
domainNo
phone_numberNo
raw_addressNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions that domain and address will be 'intelligently parsed for additional data', it doesn't disclose important behavioral traits like authentication requirements, rate limits, whether this is a write operation (implied but not stated), what happens on duplicate accounts, or what the response contains. The description adds minimal behavioral context beyond the basic operation.

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

Conciseness4/5

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

The description is appropriately concise with two sentences. The first sentence clearly states the core purpose, and the second adds useful information about intelligent parsing. There's no wasted verbiage, though the second sentence could be more specific about what 'additional data' means.

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

Completeness3/5

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

Given that there's an output schema (which handles return values), no annotations, and 4 parameters with 0% schema coverage, the description is incomplete. It provides basic purpose but lacks crucial context about parameter usage, behavioral constraints, and differentiation from sibling tools. For a creation tool with multiple parameters, this leaves significant gaps in understanding.

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

Parameters2/5

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

With 0% schema description coverage and 4 parameters (only 1 required), the description provides almost no parameter guidance. It mentions that 'domain and address will be intelligently parsed' which hints at how those parameters might be used, but doesn't explain the purpose of 'name' (the only required parameter) or 'phone_number', nor does it provide format expectations, constraints, or examples for any parameters.

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

Purpose3/5

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

The description states 'Create a new account in Apollo.io' which provides a clear verb ('Create') and resource ('account'), but it doesn't differentiate from sibling tools like 'update_account' or 'get_account_by_id'. The second sentence is somewhat tautological, restating the tool name rather than adding specificity about what makes this creation tool unique.

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?

No guidance is provided about when to use this tool versus alternatives like 'update_account' or 'get_account_by_id'. The description mentions intelligent parsing of domain and address, but doesn't explain when this tool is preferred over other account-related operations or what prerequisites might exist.

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

enrich_organizationC

Enrich organization/company information.

This tool enriches company data based on domain, returning detailed information about the organization including industry, employee count, contact info, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool returns detailed information (e.g., industry, employee count, contact info), which adds some context about output behavior. However, it lacks critical details such as data sources, rate limits, authentication requirements, or error handling, leaving significant gaps for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is appropriately concise with two sentences that efficiently convey the core functionality. The first sentence states the purpose, and the second elaborates on inputs and outputs without redundancy. However, it could be slightly more front-loaded by integrating key details earlier, but overall it's well-structured.

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

Completeness3/5

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

Given the tool's moderate complexity (enriching data), no annotations, low schema coverage (0%), but with an output schema present, the description is partially complete. It covers the basic purpose and output types but lacks details on parameters, behavioral traits, and usage context. The output schema mitigates some gaps, but overall it's adequate with clear room for improvement.

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

Parameters2/5

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

The input schema has 1 parameter ('request') with 0% description coverage and no enums, making it completely undocumented. The description adds minimal semantics by implying the parameter is a domain or related data, but it doesn't specify the exact format (e.g., string vs. object), required fields, or examples. This insufficiently compensates for the low schema coverage.

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: 'enriches company data based on domain, returning detailed information about the organization.' It specifies the verb ('enriches'), resource ('company data/organization'), and key input ('domain'). However, it doesn't explicitly differentiate from sibling tools like 'bulk_enrich_organizations' or 'enrich_person,' which would be needed for a perfect score.

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 sibling tools like 'bulk_enrich_organizations' for multiple domains or 'enrich_person' for individual data, nor does it specify prerequisites or exclusions. The only implied context is enriching single organizations by domain, but this is minimal.

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

enrich_personC

Enrich a person's information and reveal contact details.

This tool enriches person data and can reveal email addresses and phone numbers. The more information provided, the higher the match likelihood.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'can reveal email addresses and phone numbers', which hints at data retrieval, but it doesn't clarify if this is a read-only operation, requires authentication, has rate limits, or what happens on failure. For a tool with no annotations and potential privacy implications, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is concise with three sentences that are front-loaded: the first sentence states the core purpose, the second elaborates slightly, and the third adds a usage tip. There's no wasted text, but the structure could be improved by more clearly separating purpose from guidelines.

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

Completeness3/5

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

Given the tool's complexity (enriching person data with contact details), no annotations, and an output schema exists (which should cover return values), the description is moderately complete. It states what the tool does but lacks details on behavioral traits and parameter usage. The presence of an output schema helps, but the description doesn't fully compensate for the missing annotations and low parameter coverage.

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

Parameters2/5

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

The input schema has 1 parameter ('request') with 0% description coverage, and the description doesn't explain what 'request' should contain (e.g., person's name, ID, or other identifiers). It vaguely states 'The more information provided, the higher the match likelihood', but this doesn't add meaningful semantics beyond the schema. With low schema coverage, the description fails to compensate adequately.

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 a person's information and reveal contact details.' It specifies the verb ('enrich'), resource ('person's information'), and outcome ('reveal contact details'). However, it doesn't explicitly differentiate from sibling tools like 'search_people' or 'get_account_by_id', which might also retrieve person information, so it doesn't reach the highest score.

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 minimal guidance: 'The more information provided, the higher the match likelihood' implies that better input leads to better results, but it doesn't specify when to use this tool versus alternatives like 'search_people' or 'get_account_by_id'. There's no explicit context, exclusions, or named alternatives, leaving the agent with little direction on tool selection.

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

get_account_by_idA

Retrieve detailed information for a specific account by ID.

This tool fetches comprehensive account data including contact information, custom fields, and associated personas.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions fetching 'comprehensive account data' but doesn't disclose behavioral traits such as whether this is a read-only operation, authentication requirements, rate limits, error handling, or data freshness. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves beyond basic functionality.

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 appropriately sized with two sentences: the first states the core purpose, and the second elaborates on the data included. It's front-loaded with the main action and resource, with no wasted words. Every sentence adds value by clarifying scope and content.

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

Completeness4/5

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

Given the tool's low complexity (single parameter), lack of annotations, and presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose, parameter semantics, and data scope. However, it could improve by addressing behavioral aspects like read-only nature or error cases, which are missing despite the output schema.

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

Parameters4/5

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

The description adds meaning by specifying that the tool retrieves data 'by ID', which clarifies the purpose of the 'account_id' parameter beyond what the schema provides (schema coverage is 0%). Since there's only one parameter and the description explains its role, it compensates well for the lack of schema descriptions, though it doesn't detail format constraints like ID structure.

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 verb ('Retrieve', 'fetches') and resource ('detailed information for a specific account by ID'), making the purpose evident. It distinguishes from siblings like 'search_accounts' by specifying retrieval by ID rather than search criteria. However, it doesn't explicitly contrast with 'get_email_accounts' or 'enrich_organization', leaving some sibling differentiation incomplete.

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

Usage Guidelines3/5

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

The description implies usage when you need comprehensive account data for a known account ID, but it doesn't explicitly state when to use this versus alternatives like 'search_accounts' (for unknown IDs) or 'enrich_organization' (for organization-level data). No exclusions or prerequisites are mentioned, leaving usage context partially implied rather than fully guided.

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

get_email_accountsB

Retrieve email accounts associated with your Apollo.io account.

This tool returns the list of configured email accounts for sending sequences and campaigns.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
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 'returns the list of configured email accounts' but doesn't cover critical aspects like authentication needs, rate limits, error handling, or whether it's a read-only operation. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 efficiently structured in two sentences: the first states the core purpose, and the second clarifies the return value. There's no wasted language, and it's front-loaded with the main action, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters) and the presence of an output schema, the description is minimally adequate. However, with no annotations and sibling tools present, it lacks context on usage scenarios and behavioral traits, which could hinder the agent's ability to invoke it correctly in practice.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. A baseline of 4 is applied since no parameters exist and schema coverage is complete.

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 with 'Retrieve email accounts associated with your Apollo.io account' and specifies the resource (email accounts) and context (Apollo.io). However, it doesn't explicitly differentiate from sibling tools like 'get_account_by_id' or 'search_accounts' that might also retrieve account information, missing full sibling distinction.

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 prerequisites, exclusions, or compare to sibling tools like 'get_account_by_id' or 'search_accounts', leaving the agent without context for tool selection.

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

health_checkA

Check the health and authentication status of the Apollo.io API connection.

This tool verifies that the API key is valid and the service is accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the tool's behavior as a read-only diagnostic check ('check', 'verify'), which is appropriate, but lacks details like rate limits, error responses, or specific output format. The description adds basic context without contradictions, but more behavioral traits could be included.

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 appropriately sized with two concise sentences that are front-loaded with the main purpose. Every sentence adds value by explaining what the tool does and its specific checks, with zero waste or unnecessary details.

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

Completeness4/5

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

Given the tool's low complexity (0 parameters, simple diagnostic purpose) and the presence of an output schema, the description is mostly complete. It covers the purpose and usage context adequately, but could benefit from more behavioral details like what 'health' entails or authentication specifics, though the output schema may handle return values.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description does not mention parameters, which is acceptable, earning a baseline score of 4 for not introducing confusion or redundancy.

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

Purpose5/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 with specific verbs ('check', 'verify') and resources ('health and authentication status', 'API connection', 'API key', 'service accessibility'). It distinguishes itself from sibling tools by focusing on system diagnostics rather than data operations like enrichment, search, or updates.

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

Usage Guidelines4/5

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

The description implies usage context for verifying API connectivity and authentication validity, which is clear guidance for when to use this tool. However, it does not explicitly state when not to use it or name specific alternatives among the siblings, such as distinguishing from data retrieval tools that might also fail due to auth issues.

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

search_accountsC

Search for accounts/companies in Apollo.io database.

This tool allows you to search for companies by name, location, employee count, and other criteria. Useful for finding potential prospects and account information.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions search capabilities by name, location, employee count, and other criteria, but doesn't describe pagination, rate limits, authentication requirements, result format, or what 'other criteria' might include. For a search tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is appropriately concise with two sentences. The first sentence establishes the core purpose, and the second adds context about search criteria and use cases. No wasted words, though it could be slightly more structured by explicitly listing parameters.

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

Completeness3/5

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

Given the tool's moderate complexity (search functionality), no annotations, and an output schema exists (so return values are documented elsewhere), the description is minimally adequate. It covers what the tool does and some use cases, but lacks parameter details and behavioral context that would make it fully complete for an AI agent.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no information about the single 'request' parameter. It mentions search criteria like name, location, and employee count, but doesn't explain how to structure these in the request parameter. With low coverage and no parameter guidance in the description, this fails to compensate for the schema gap.

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: 'Search for accounts/companies in Apollo.io database' with specific resources (accounts/companies) and a database context. It distinguishes from siblings like 'search_people' by focusing on companies, but doesn't explicitly differentiate from 'get_account_by_id' or 'bulk_enrich_organizations' which also involve account data.

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

Usage Guidelines3/5

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

The description provides implied usage guidance: 'Useful for finding potential prospects and account information' suggests prospecting use cases. However, it doesn't explicitly state when to use this vs. alternatives like 'get_account_by_id' (for known IDs) or 'search_people' (for individuals), nor does it mention exclusions or prerequisites.

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

search_opportunitiesB

Search for opportunities in Apollo.io.

This tool searches for sales opportunities with filtering and sorting options. Useful for tracking deals and pipeline management.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo
account_stage_idsNo
sort_by_fieldNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions filtering and sorting capabilities, it doesn't describe important behavioral traits like whether this is a read-only operation, what permissions are required, rate limits, pagination behavior (implied by page/per_page parameters but not explained), or what the search returns. The description is too sparse for a tool with 4 parameters and no annotation coverage.

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

Conciseness4/5

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

The description is appropriately concise with three sentences that are front-loaded with the core purpose. Each sentence adds value: the first states what the tool does, the second elaborates on capabilities, and the third provides usage context. There's no wasted verbiage or redundancy.

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

Completeness3/5

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

Given that there's an output schema (which handles return values), no annotations, and 4 parameters with 0% schema coverage, the description is incomplete. It covers the basic purpose and some usage context but lacks parameter explanations and behavioral details needed for a search tool with filtering/sorting capabilities. The existence of an output schema prevents the lowest score, but significant gaps remain.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. It mentions 'filtering and sorting options' in general terms but doesn't specify what parameters are available, what they mean, or how they work. The four parameters (page, per_page, account_stage_ids, sort_by_field) receive no explanation in the description, leaving significant gaps in understanding.

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 searches for sales opportunities in Apollo.io with filtering and sorting, specifying both the verb ('searches') and resource ('sales opportunities'). It distinguishes from obvious siblings like search_accounts and search_people by focusing on opportunities rather than accounts or people, though it doesn't explicitly contrast with all siblings.

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

Usage Guidelines3/5

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

The description provides implied usage context ('Useful for tracking deals and pipeline management'), suggesting when this tool might be appropriate. However, it doesn't explicitly state when to use this versus alternatives like search_accounts or search_people, nor does it provide exclusions or prerequisites for usage.

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

search_peopleC

Search for people/contacts in Apollo.io database.

This tool allows you to search for people by job title, seniority, company domain, location, and other criteria. Returns contact information and employment details.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the tool returns contact information and employment details, which is helpful, but lacks critical behavioral traits: it doesn't specify if this is a read-only operation, what permissions are needed, whether there are rate limits, or how results are paginated/limited. For a search tool with no annotations, this leaves significant gaps.

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

Conciseness4/5

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

The description is appropriately sized with two sentences: the first states the purpose, and the second adds search criteria and return details. It's front-loaded with the core function. There's minimal waste, though it could be slightly more structured (e.g., bullet points for criteria).

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

Completeness3/5

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

Given the tool's moderate complexity (search with multiple criteria), no annotations, and an output schema that likely handles return values, the description is partially complete. It covers purpose and criteria but lacks behavioral context and detailed parameter guidance. The output schema reduces the need to explain returns, but gaps in usage and transparency remain.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists search criteria like job title, seniority, company domain, and location, which adds meaning beyond the generic 'request' parameter in the schema. However, it doesn't explain the parameter's structure, format, or how to combine criteria, leaving the single required parameter poorly defined.

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 searches for people/contacts in the Apollo.io database, specifying the resource (people/contacts) and verb (search). It distinguishes from siblings like search_accounts and search_opportunities by focusing on people rather than accounts or opportunities. However, it doesn't explicitly contrast with enrich_person, which might retrieve details for a specific person.

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 search_people over enrich_person for individual details, or how it differs from search_accounts for company-related searches. No exclusions or prerequisites are stated, leaving usage context unclear.

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

update_accountC

Update an existing account in Apollo.io.

This tool updates account information with the provided data. Only specified fields will be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
nameNo
domainNo
phone_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'Only specified fields will be updated' which adds some context about partial updates, but fails to address critical aspects like authentication requirements, rate limits, error handling, or what the update operation actually does to the account data.

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

Conciseness4/5

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

The description is appropriately brief with three sentences that get straight to the point. Each sentence adds value: establishing context, stating the action, and providing a key behavioral note about partial updates. No wasted words or redundancy.

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?

For a mutation tool with 4 parameters, 0% schema coverage, no annotations, but with an output schema, the description is insufficient. It doesn't explain the update semantics, error conditions, or relationship to sibling tools. While the output schema may cover return values, the description lacks critical context about the operation itself.

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

Parameters2/5

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

With 0% schema description coverage and 4 parameters, the description provides no information about parameter meanings beyond what's in the schema titles. It doesn't explain what 'account_id' identifies, what format 'domain' should be in, or how 'phone_number' should be structured, leaving significant gaps in parameter understanding.

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 action ('update') and resource ('account in Apollo.io'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'create_account' beyond the basic verb distinction, lacking specificity about what makes this update operation unique.

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 like 'create_account' or 'get_account_by_id'. There's no mention of prerequisites, error conditions, or typical use cases, leaving the agent without contextual usage direction.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updates
    • First observedbulk_enrich_organizations
    • First observedcreate_account
    • First observedenrich_organization
    • First observedenrich_person
    • First observedget_account_by_id
    • First observedget_email_accounts
    • First observedhealth_check
    • First observedsearch_accounts
    • First observedsearch_opportunities
    • First observedsearch_people
    • First observedupdate_account

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no significant overlap. For example, enrich_organization and enrich_person target different entity types, while search_accounts and search_people serve different search functions. The descriptions reinforce these distinctions, making tool selection straightforward.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., enrich_organization, search_accounts, update_account). The only minor deviation is health_check, which uses a compound noun instead of a verb_noun structure, but this doesn't significantly impact readability or predictability.

Tool Count5/5

With 11 tools, the count is well-scoped for a CRM/sales intelligence platform. Each tool serves a specific function in account management, enrichment, and search operations, with no apparent redundancy or missing core functionalities, making the set appropriately sized.

Completeness4/5

The tool set provides comprehensive coverage for account CRUD (create, get, update, search), organization and person enrichment, and opportunity search. A minor gap is the lack of update/delete operations for people or opportunities, but agents can likely work around this given the strong core functionality.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Integrates Apollo.io's B2B sales platform with Claude AI, enabling prospect search, contact enrichment, email sequence management, list analytics, and sales intelligence operations through natural conversation.
    19
    24
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with the Apollo.io API to search global databases and enrich company and person data. It facilitates managing contacts and accounts, retrieving tech stacks, and finding job postings through natural language.
    24
    1
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Exposes Apollo.io API functionalities as MCP tools for people and organization enrichment, search, and job postings. Enables natural language interaction with Apollo.io data.
    5
    16
    -

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/FromSmall2Big/Apollo-MCP'

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