apollo-io-mcp
This server provides MCP tools to access Apollo.io sales intelligence data for B2B prospecting, enrichment, and research.
Search People: Find prospects by job title, location, seniority, industry, department, technologies used, company, education, and years of experience.
Search Companies: Discover accounts by location, size, industry keywords, revenue, funding, technologies, job titles, and employee count.
Enrich Person: Get detailed person data using email, LinkedIn URL, or name + company.
Enrich Company: Retrieve company details by domain or name.
Bulk Enrich People: Enrich multiple people in one request.
Bulk Enrich Organizations: Enrich multiple companies by domain or name in one request.
Get Organization Job Postings: Fetch current job postings for a known Apollo organization ID.
Get Complete Organization Info: Obtain comprehensive organization data for a given Apollo ID.
Search News Articles: Find company news such as funding or acquisition events.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@apollo-io-mcpfind sales directors at tech companies in Austin"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apollo.io MCP Server and CLI

An Apollo.io MCP server and CLI for Claude Desktop, MCP clients, and terminal workflows. Use Apollo sales intelligence data for B2B prospecting, account research, contact enrichment, company enrichment, job-posting research, and company news discovery.
The friendliest path is the Claude Desktop extension bundle (.mcpb). The terminal install is here when you need it.
If this project helps your Apollo.io or MCP workflow, please star it on GitHub.
Contents
Related MCP server: @louis030195/apollo-io-mcp
Best Install: Claude Desktop Extension
Create an Apollo API key in Apollo under Settings > Integrations > API.
Download the newest
apollo-io-mcp-v*.mcpbfrom GitHub Releases.Open the
.mcpbfile with Claude Desktop.Paste your Apollo API key when Claude asks for it.
Restart Claude Desktop if prompted.
Try prompts like:
"Find VP Sales leaders in California at SaaS companies."
"Search for cybersecurity companies in Austin with 51-200 employees."
"Enrich the company profile for apollo.io."
"Find recent funding news for fintech companies."
People search is best for building prospect lists. If you are looking for one known person, use enrichment with an email, LinkedIn URL, or name plus company.
Terminal Install
Use this if you are comfortable running one command and want the installer to update Claude Desktop's config for you.
npx @thevgergroup/apollo-io-mcp@latest setupUseful follow-up commands:
# Check Claude Desktop config, runtime versions, and update status
npx @thevgergroup/apollo-io-mcp@latest doctor
# Remove the server from Claude Desktop config
npx @thevgergroup/apollo-io-mcp@latest remove
# Print install and tool-selection guidance for agents
npx @thevgergroup/apollo-io-mcp@latest skillsThe setup command preserves your other MCP servers and writes an apollo entry that runs the latest npm package through npx.
Claude Desktop Examples
Claude can use the Apollo tools together: search companies, find executives, enrich companies, check news, and shape the results into a useful working file.

Good prompts to try:
"Find 20 EdTech companies in the DC metro area with $5-20M revenue. Track down their technologies, recent news, and CEO, CTO, CIO, or CFO contacts. Build an export file."
"Search for software companies in California with 50-200 employees, then summarize the strongest account-fit signals."
"Find C-level executives in healthcare companies in Boston. Prioritize operations, technology, and revenue leaders."
"Find VP Sales leaders in California at SaaS companies using Salesforce."
"Enrich the company data for google.com."
"Find recent funding news for fintech companies and list the companies worth researching next."
For one-off known contacts, ask for enrichment instead of search:
"Enrich the person profile for tim@apollo.io."
"Enrich John Doe at Example Company using the company name and person name."
What It Can Do
This server exposes Apollo.io as MCP tools:
apollo_search_people: prospect lists by title, seniority, department, company, location, industry, and technology.apollo_search_companies: account lists by location, headcount, industry keywords, technology, revenue, funding, and job postings.apollo_enrich_person: one known person by email, LinkedIn URL, or name plus company.apollo_enrich_company: company details by domain or name.apollo_bulk_enrich_people: multiple known people in one request.apollo_bulk_enrich_organizations: multiple known company domains in one request.apollo_get_organization_job_postings: job postings for a known Apollo organization ID.apollo_get_complete_organization_info: complete details for a known Apollo organization ID.apollo_search_news_articles: company news such as funding or acquisition events.
Apollo plan limits, API permissions, credits, and rate limits can affect which tools return data.
CLI Quick Start
Install globally:
npm install -g @thevgergroup/apollo-io-mcp
export APOLLO_API_KEY="your-actual-api-key-here"Run a few searches:
apollo-io-cli search-people \
--person_titles "VP Sales,Head of Sales" \
--person_locations "California" \
--per_page 10
apollo-io-cli search-companies \
--q "cybersecurity" \
--organization_locations "Austin" \
--organization_num_employees_ranges "51,200"
apollo-io-cli enrich-company --domain "apollo.io"One-off usage also works:
APOLLO_API_KEY="your-actual-api-key-here" \
npx -p @thevgergroup/apollo-io-mcp apollo-io-cli search-companies --q "fintech"See CLI.md for the full command reference.
Updates
For terminal and npx installs:
npx @thevgergroup/apollo-io-mcp@latest doctordoctor checks your Claude Desktop config, Node.js and npm versions, the installed package version, the latest npm version, and whether an Apollo API key is configured.
For .mcpb installs, download the newest apollo-io-mcp-v*.mcpb from GitHub Releases and open it with Claude Desktop. Each release uses the same version for npm, GitHub tag, and MCPB bundle.
Local Release Check
Before cutting a release, you can validate the package, tests, release metadata, and MCPB bundle locally:
npm test
npm run build:mcpb
npm run check:release
npm audit --omit=dev --audit-level=moderatenpm run build:mcpb writes release/apollo-io-mcp-v<version>.mcpb and validates it with @anthropic-ai/mcpb.
Troubleshooting
APOLLO_API_KEYerrors: re-run setup or check your Claude Desktop MCP config.Empty people results: use titles and location filters first, then add company, industry, or technology filters.
Trying to find one known person: use
apollo_enrich_person, not people search.API access denied: check Apollo API key permissions and plan access.
Rate limits or credit issues: check Apollo API usage and credit limits.
Claude does not see the tools: restart Claude Desktop, then run
npx @thevgergroup/apollo-io-mcp@latest doctor.
For Developers
Detailed source setup, MCP Inspector usage, tool schemas, filter references, testing, and release notes now live in docs/development/developer-guide.md.
Other useful files:
About The VGER Group
AI, Data, and Software Engineering.
The VGER Group designs and builds AI systems, data platforms, production software, and cloud architecture for teams that need working systems, not just strategy decks. This Apollo.io MCP server is part of our open source work: practical tools we needed, built well, and released publicly.
Website: https://thevgergroup.com/
Project: https://github.com/thevgergroup/apollo-io-mcp
License
MIT. See LICENSE.
Available Tools
9 toolsapollo_bulk_enrich_organizationsBulk Enrich OrganizationsB
Bulk enrich multiple organizations using Apollo match. Provide an array of organizations with domain or name.
| Name | Required | Description | Default |
|---|---|---|---|
| organizations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It mentions 'using Apollo match' but does not disclose rate limits, authentication, return format, potential errors, or what 'enrich' entails behaviorally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded with the action. Could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a bulk operation with nested objects and no output schema, the description is incomplete. It does not explain return values, error handling, or limitations. Agents need more context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds meaning by specifying that organizations can be identified by 'domain or name', which clarifies the parameter structure. However, it does not detail optionality or constraints beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Bulk enrich multiple organizations using Apollo match' with specific verb and resource. It distinguishes from siblings like apollo_enrich_company (singular) and apollo_bulk_enrich_people (person focus).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites or when not to use it. The description only states what it does, not the context of use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_bulk_enrich_peopleBulk Enrich PeopleB
Bulk enrich multiple people using Apollo match. Provide an array of people with email, linkedin_url, name, or company.
| Name | Required | Description | Default |
|---|---|---|---|
| people | Yes | ||
| reveal_phone_number | No | Reveal phone numbers (default: false) | |
| reveal_personal_emails | No | Reveal personal emails (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly fails it. It says enrichment happens "using Apollo match" and what inputs to supply, but discloses nothing about credit consumption, whether reveal_phone_number/reveal_personal_emails incur extra cost, match-rate limitations, partial-match handling, or mutation side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope followed by the input requirement. No filler, no repetition of the title, nothing that fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch operation with no annotations and no output schema, key information is absent: response shape per record, behavior on unmatched entries, credit costs, batch size limits, and rate limits. An agent can construct the call but cannot predict its cost or outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description fills the most important gap: the people array and its accepted identifier fields (email, linkedin_url, name, company) are undocumented in the schema but spelled out here. The two reveal_* booleans are already described in the schema, so the description neither adds nor repeats value for them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ("Bulk enrich multiple people") and names the mechanism ("Apollo match"), which lets an agent distinguish it from the single-record sibling apollo_enrich_person by the word "bulk" / "multiple". It stops short of explicitly naming the sibling it replaces, so it is clear but not fully self-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Bulk framing implies the usage context (multiple records at once vs. the single-person enrich tool), but there is no explicit when/when-not statement, no mention of alternatives, and no prerequisites or credit-cost warnings. Usage must be inferred from the word "bulk".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_enrich_companyEnrich CompanyC
Enrich a company/organization by domain or name using Apollo match.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose if enrichment is a read or write operation, any side effects, or rate limits. Only mentions the mechanism, not behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that front-loads the purpose. Could include more detail without losing conciseness, but currently no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two optional parameters and no output schema, the description is minimally complete. However, it lacks explanation of what enrichment means or the expected outcome, leaving room for ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only mentions parameters implicitly ('by domain or name') but adds no format details, constraints, or usage notes. Minimal additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it enriches a company by domain or name using Apollo match, distinguishing from search tools but not fully from other enrich tools. The verb 'enrich' is slightly vague but acceptable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like search_companies, get_complete_organization_info, or bulk_enrich. Missing context on prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_enrich_personEnrich PersonC
Enrich a person by email, linkedin_url, or name+company using Apollo match.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| No | |||
| company | No | ||
| linkedin_url | No | ||
| reveal_phone_number | No | Reveal phone numbers (default: false) | |
| reveal_personal_emails | No | Reveal personal emails (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It discloses nothing about cost/credit consumption for enrichment, whether reveal_phone_number or reveal_personal_emails incur extra charges, rate limits, or result-empty behavior. For a paid enrichment endpoint this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the resource and matching modes front-loaded. No filler, though it is arguably too terse for a six-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A six-parameter, zero-required-parameter mutation-adjacent tool with no output schema and no annotations needs more: which identifier combinations are valid, what happens on a miss, and whether phone/personal-email reveals are billable are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, but the description does add meaning by grouping the three matching keys (email, linkedin_url, name+company) as alternative identifiers. It omits that at least one identifier must be supplied despite zero required parameters, and says nothing about the two reveal_* flags beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (enrich) and resource (a person) and names the accepted matching keys. It implicitly differentiates from siblings like apollo_bulk_enrich_people and apollo_enrich_company, though it never names them. Clear enough for an agent to identify the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists valid input keys but gives no when-to-use guidance: no distinction from apollo_search_people (lookup vs enrichment), no mention that this is the single-record counterpart to the bulk variant. Usage must be inferred entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_get_complete_organization_infoGet Complete Organization InfoB
Get complete information for a specific organization by organization ID.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | The Apollo organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It only states that the tool 'gets' information, implying a read operation, but fails to mention any side effects, data freshness, authentication requirements, or error conditions. Minimal behavioral context is added beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 9 words that directly states the action and input. It is front-loaded with the key verb and resource, with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter, the description is adequate but lacks detail on what 'complete information' includes, especially compared to sibling enrichment tools. It does not clarify scope or limitations, so completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a description for the only parameter (organization_id). The tool description adds no additional semantic detail; it merely restates the parameter purpose. Baseline 3 is appropriate as the schema already documents the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and resource 'complete information for a specific organization', and explicitly mentions the input (organization ID). It clearly distinguishes from sibling tools like apollo_enrich_company which are for enrichment, not full info retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as apollo_enrich_company or apollo_search_companies. There is no mention of use cases or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_get_organization_job_postingsGet Organization Job PostingsB
Get job postings for a specific organization by organization ID.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | The Apollo organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only states the basic action without disclosing return format, pagination, or any side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundancy, directly communicates the purpose. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema provided, and the description lacks details on the structure of job postings, pagination, or typical usage. Incomplete for a tool with no other context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter. Description adds no extra meaning beyond schema, which is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'job postings', and the qualifier 'for a specific organization by organization ID'. It distinguishes itself from siblings like apollo_get_complete_organization_info which focuses on broader org info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as apollo_get_complete_organization_info or search tools. The usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_search_companiesSearch CompaniesA
Search for companies/organizations in Apollo with comprehensive filtering options. Use filters to target specific company types, locations, sizes, and industries.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| query | No | Search query for company names, industries, or keywords | |
| filters | No | Advanced filtering options. Start with location + keywords for best results. | |
| per_page | No | Results per page (1-200, default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks disclosure of behavior beyond input schema, such as rate limits, authentication, or side effects like credit consumption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and contains no unnecessary words. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic purpose, it lacks details on return format, error handling, or query limits, which are missing given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value with usage tips like 'Start with location + keywords for best results' and warnings about restrictive filters, enhancing understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for companies/organizations in Apollo' using a specific verb and resource, and distinguishes it from sibling tools like apollo_search_people or enrichment tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises 'Use filters to target specific company types, locations, sizes, and industries' but does not explicitly compare with alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_search_news_articlesSearch News ArticlesC
Search for news articles related to companies in Apollo. Supports 'query', 'filters', pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | No | ||
| filters | No | ||
| per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should reveal behavioral traits. It only mentions support for query, filters, and pagination, omitting details like authentication, rate limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, but it lacks front-loading and could be more structured to highlight key aspects like required parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 4 parameters with zero descriptions, this description is severely incomplete—missing information on result format, filter usage, and parameter constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must add meaning. It lists three parameter categories but does not explain the structure of 'filters' or the valid ranges for pagination parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for news articles related to companies, distinguishing it from other Apollo search tools that target companies or people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like apollo_search_companies, nor are any prerequisites or limitations mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apollo_search_peopleSearch PeopleA
Search for people in Apollo with advanced filtering options. Use filters to target specific roles, locations, seniority levels, and companies.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| query | No | Search query for names, titles, or keywords | |
| filters | No | Advanced filtering options for targeting specific people | |
| per_page | No | Results per page (1-200, default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only mentions 'advanced filtering options' but does not mention pagination, authentication, rate limits, or whether results are returned. This is a significant gap for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second adds usage guidance. No wasted words. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested filters, 4 parameters, no output schema), the description is incomplete. It lacks details on pagination, result format, and prerequisites. An agent would need to infer behavior from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond summarizing filter types. It reiterates 'roles, locations, seniority levels, and companies' which are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for people in Apollo' with a specific verb and resource. It distinguishes from sibling tools like 'apollo_search_companies' and 'apollo_search_news_articles' by focusing on people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives guidance on using filters for roles, locations, seniority, and companies. However, it does not explicitly state when to use this tool versus alternatives like 'apollo_enrich_person'.
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.
2 tool updates
v3.0.0- Changed
apollo_bulk_enrich_people1 field changed- changed
Input schema / properties / people / items / properties / email / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
apollo_enrich_person1 field changed- changed
Input schema / properties / email / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
9 tool updates
v2.2.1- First observed
apollo_bulk_enrich_organizations - First observed
apollo_bulk_enrich_people - First observed
apollo_enrich_company - First observed
apollo_enrich_person - First observed
apollo_get_complete_organization_info - First observed
apollo_get_organization_job_postings - First observed
apollo_search_companies - First observed
apollo_search_news_articles - First observed
apollo_search_people
TDQS
Scored across 9 tools
Most tools are clearly distinct by resource type (person vs. organization) and action (enrich vs. bulk enrich vs. search vs. get). Minor overlap exists between enrich_company and get_complete_organization_info, both retrieving organization details, but the descriptions and ID-vs-name/domain distinction clarify usage.
All tool names use a consistent snake_case pattern with the apollo_ prefix, and verbs are predictably structured (enrich, bulk_enrich, get, search). The naming is highly predictable and readable.
Nine tools are well-scoped for an Apollo data enrichment and search server, covering single and bulk operations without excessive duplication. Each tool has a clear purpose and the count is appropriate for the domain.
The surface covers enrichment, bulk enrichment, search, organization details, job postings, and news articles, which is strong coverage for Apollo's main use cases. Minor gaps exist, such as retrieving a person by ID directly or more granular job posting search, but agents can likely work around them via existing enrichment and search tools.
Maintenance
Related MCP Connectors
Your agent needs B2B contacts and the pipeline objects around them — find the company, find the person, get the email, then write it back where your team works. **What you can ask for** • "Find heads of engineering at Series-B SaaS companies in the Nordics, with emails." • "Enrich these companies with headcount, industry and funding." • "What roles is this company hiring for right now?" • "Create an account and a contact, then log this opportunity." • "Search our sequences for messages sent to this domain." **How to use it** Point any MCP client at https://mcp.aisa.one/apollo/mcp and sign in with OAuth — there is no key to create or paste. 54 tools: people and organisation search and enrichment, job postings, accounts, contacts, opportunities and their stages, custom fields, labels, notes, users, email accounts, sequence messages and phone-call search — reads and writes. **Why this rather than the source** The full object model, not just a search endpoint, so an agent can finish the job rather than hand you a CSV. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the person here, then ask the same agent what their company's traffic looks like or what they rank for — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp adds Similarweb and creator discovery around it.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Official ZoomInfo MCP server. Search and enrich companies, contacts, and buyer intent signals.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Related MCP Servers
- FlicenseBqualityCmaintenanceA Model Context Protocol (MCP) server for the Apollo.io API, giving AI coding assistants direct access to Apollo.io's sales intelligence platform for prospecting, enrichment, CRM operations, and outreach.505-
- AlicenseAqualityDmaintenanceMCP server for Apollo.io B2B sales intelligence API. Enables searching and enriching people and organizations via natural language.723 npm4MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Apollo.io API that lets LLMs search and enrich people and company data.85 npmMIT
- AlicenseAqualityCmaintenanceMCP server for Apollo.io B2B data discovery and enrichment, enabling company search, people search, contact enrichment, and organization firmographics through Apollo's REST API.8Apache 2.0