Harmonic MCP Server
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., "@Harmonic MCP Server find AI startups in San Francisco"
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.
Harmonic MCP Server
MCP (Model Context Protocol) server for the Harmonic AI API - company and person enrichment for VC deal flow.
Features
This MCP server provides 13 tools for interacting with Harmonic's API:
Search Tools
harmonic_search_companies - Natural language search for companies (e.g., "AI startups in San Francisco")
harmonic_search_typeahead - Quick autocomplete search by company name or domain
harmonic_find_similar_companies - Find companies similar to a given company
Company Tools
harmonic_lookup_company - Look up company by domain, LinkedIn URL, or other identifiers
harmonic_get_company - Get full company details by ID
harmonic_get_company_employees - Get employees with filtering (founders, executives, etc.)
harmonic_get_company_connections - Find team network connections to a company
Person Tools
harmonic_lookup_person - Look up person by LinkedIn URL
harmonic_get_person - Get full person details by ID
Saved Search Tools
harmonic_list_saved_searches - List all saved searches/views
harmonic_get_saved_search_results - Get results from a saved search
harmonic_get_saved_search_net_new_results - Get only new results since last check (for deal flow monitoring)
harmonic_clear_saved_search_net_new - Mark net new results as "seen"
Related MCP server: Harmonic MCP Server
Installation
No installation required when using npx (see Usage below).
Optional: Global Install
npm install -g @alludium/harmonic-mcp-serverOptional: From Source
git clone https://github.com/alludium/harmonic-mcp-server.git
cd harmonic-mcp-server
npm install
npm run buildConfiguration
Set your Harmonic API key as an environment variable:
export HARMONIC_API_KEY=your_api_key_hereWhen using with Claude Desktop or Claude Code, set the key in the MCP server configuration's env block (see Usage section below).
Usage
With Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"harmonic": {
"command": "npx",
"args": ["-y", "@alludium/harmonic-mcp-server"],
"env": {
"HARMONIC_API_KEY": "your_api_key_here"
}
}
}
}With Claude Code
Add to your Claude Code MCP settings:
{
"mcpServers": {
"harmonic": {
"command": "npx",
"args": ["-y", "@alludium/harmonic-mcp-server"],
"env": {
"HARMONIC_API_KEY": "your_api_key_here"
}
}
}
}Development Mode
# Run with tsx for development
HARMONIC_API_KEY=your_key npm run devAPI Coverage
Based on the Harmonic API documentation, this MCP covers:
Endpoint | Tool | Type |
GET /search/search_agent | harmonic_search_companies | Entry point |
GET /search/typeahead | harmonic_search_typeahead | Entry point |
GET /search/similar_companies/{id} | harmonic_find_similar_companies | Discovery |
POST /companies | harmonic_lookup_company | Entry point |
GET /companies/{id} | harmonic_get_company | Detail |
GET /companies/{id}/employees | harmonic_get_company_employees | Detail |
GET /companies/{id}/userConnections | harmonic_get_company_connections | Detail |
POST /persons | harmonic_lookup_person | Entry point |
GET /persons/{id} | harmonic_get_person | Detail |
GET /savedSearches | harmonic_list_saved_searches | Entry point |
GET /savedSearches:results/{id} | harmonic_get_saved_search_results | Detail |
GET /savedSearches:netNewResults/{id} | harmonic_get_saved_search_net_new_results | Monitoring |
POST /savedSearches:clearNetNew/{id} | harmonic_clear_saved_search_net_new | Monitoring |
Response Formats
All tools support two response formats:
json (default): Structured data for programmatic use
markdown: Human-readable formatted output
Use the response_format parameter to switch between formats.
Rate Limiting
The Harmonic API has a rate limit of 10 requests per second. This MCP server implements automatic throttling and retry logic for rate-limited requests.
Error Handling
The server provides clear, actionable error messages:
400: Bad request with parameter guidance
401: Authentication failure with API key setup instructions
404: Resource not found with alternative lookup suggestions
429: Rate limit exceeded with retry guidance
5xx: Server errors with wait/retry suggestions
Example Workflows
Find and Research a Company
1. harmonic_lookup_company { website_domain: "stripe.com" }
2. harmonic_get_company_employees { company_id: "142540", employee_group_type: "FOUNDERS_AND_CEO" }
3. harmonic_get_person { person_id: "person_id_from_step_2" }Find Similar Companies
1. harmonic_search_companies { query: "fintech payment processing" }
2. harmonic_find_similar_companies { company_id: "id_from_step_1", size: 10 }
3. harmonic_get_company { company_id: "each_similar_company_id" }Monitor Deal Flow
1. harmonic_list_saved_searches {}
2. harmonic_get_saved_search_results { search_id: "search_id_from_step_1", size: 50 }License
MIT
Available Tools
13 toolsharmonic_clear_saved_search_net_newClear Saved Search Net New ResultsAIdempotent
Mark all net new results as "seen" so they won't appear in future calls to harmonic_get_saved_search_net_new_results.
When to use: Call this AFTER you've processed net new results to reset the queue. Future calls to harmonic_get_saved_search_net_new_results will only return results that become new matches after this point.
Input:
search_id: The saved search ID
Workflow:
harmonic_get_saved_search_net_new_results → get new matches
Process/analyze the results
harmonic_clear_saved_search_net_new → mark as seen
Repeat on schedule
Inputs: search_id (required).
harmonic_find_similar_companiesFind Similar CompaniesARead-onlyIdempotent
Find companies similar to a given company. Core use case for VCs: "I like this company, find me more like it."
What it does: Uses Harmonic's similarity algorithm to find companies with similar characteristics (industry, stage, business model, etc.).
Input:
company_id: Either numeric ID (e.g., "1") or full URN (e.g., "urn:harmonic:company:1")
Returns (JSON): { "data": ["urn:harmonic:company:763898", "urn:harmonic:company:11578442", ...], "count": number }
Next Steps: Use harmonic_get_company with each URN to get full company details.
Example workflow:
Find a company you like: harmonic_lookup_company with domain
Get similar: harmonic_find_similar_companies with that company's ID
Get details: harmonic_get_company for each similar company
Inputs: company_id (required), size, response_format.
harmonic_get_companyGet CompanyARead-onlyIdempotent
Get company details by ID with field filtering for optimal response size.
Input:
company_id: Numeric ID (e.g., "1") or full URN (e.g., "urn:harmonic:company:1")
include_fields: Optional array of fields to include (e.g., ["name", "funding", "headcount"])
Response sizes:
Default (basic fields): ~3KB per company
All fields: ~368KB per company (not recommended)
Default fields returned: name, description, website, headcount, location, funding, stage, founding_date, company_type, customer_type, contact, socials
When to use:
After harmonic_search_companies to get full details
After harmonic_find_similar_companies
When you have a company ID from another source
Note: Uses batch endpoint internally for proper field filtering. The GET endpoint ignores include_fields.
Inputs: company_id (required), include_fields, response_format.
harmonic_get_company_connectionsGet Team ConnectionsARead-onlyIdempotent
Find which team members have connections to a company. Key for warm introductions in VC deal flow.
What it does: Returns your team's network connections to people at the target company, showing who knows whom and how they're connected.
Returns: { "data": [ { "user_urn": "urn:harmonic:user:17115", "target_person_urn": "urn:harmonic:person:73639745", "target_person_email_address": "mike@harmonic.ai", "connection_sources": ["EMAIL", "LINKEDIN"] } ] }
Connection sources:
EMAIL: Connected via email correspondence
LINKEDIN: LinkedIn connection
CALENDAR: Met via calendar events
Use case: Before reaching out to a company, find if anyone on your team has a warm intro path.
Inputs: company_id (required), first, after, response_format.
harmonic_get_company_employeesGet Company EmployeesARead-onlyIdempotent
Get employees of a company with filtering options.
Input:
company_id: Numeric ID or URN
employee_group_type: Filter by role (ALL, FOUNDERS_AND_CEO, EXECUTIVES, FOUNDERS, LEADERSHIP, NON_LEADERSHIP, ADVISORS, NON_PARTNERS)
employee_status: Filter by status (ACTIVE, NOT_ACTIVE, ACTIVE_AND_NOT_ACTIVE)
Note: Filter values confirmed via API testing. Documentation had incorrect values (EMPLOYEES, CURRENT, PAST do not work).
Returns: Person URNs that you can use with harmonic_get_person to get full details.
Example Response (JSON): { "data": [ { "urn": "urn:harmonic:person:113554", "id": "113554" }, { "urn": "urn:harmonic:person:155348322", "id": "155348322" } ], "count": 72, "hasMore": false }
Common workflows:
Get founders: employee_group_type="FOUNDERS_AND_CEO"
Get leadership: employee_group_type="LEADERSHIP"
Get former employees: employee_status="NOT_ACTIVE"
Inputs: company_id (required), size, page, employee_group_type, +2 more.
harmonic_get_personGet PersonARead-onlyIdempotent
Get full person details by ID. Use after getting person URNs from company employees.
Input:
person_id: Numeric ID (e.g., "161780079") or full URN (e.g., "urn:harmonic:person:161780079")
Returns same data as harmonic_lookup_person:
Full name and profile picture
Contact info (emails)
Location
Education history
Work experience with company links
When to use:
After harmonic_get_company_employees to get full details on each person
When you have a person ID from another Harmonic response
To expand on a person URN from search results
Inputs: person_id (required), response_format.
harmonic_get_saved_search_net_new_resultsGet Saved Search Net New ResultsARead-onlyIdempotent
Get only NEW results from a saved search since your last check. This is the incremental/delta endpoint for monitoring deal flow.
PREREQUISITE: You must subscribe to the saved search via Harmonic web UI first. Returns 404 if not subscribed.
What "net new" means: Returns companies/people that have NEWLY matched your search criteria since you subscribed (or since new_results_since date). For example, if your search looks for companies with >100 headcount, this returns companies that recently grew past 100.
Input:
search_id: The saved search ID (get from harmonic_list_saved_searches)
size: Number of results (default: 3, max: 5)
cursor: Pagination cursor for more results
new_results_since: Optional UTC datetime (e.g., 2024-09-21T00:00:00Z)
Response sizes: ~27KB per result (same as regular results)
Workflow:
Call this tool to get new matches
Process the results
Call harmonic_clear_saved_search_net_new to mark as "seen"
Repeat on your monitoring schedule
Use cases:
Daily deal flow monitoring for investors
Trigger deep research agents on new matches
Alert on companies meeting investment criteria
Inputs: search_id (required), size, cursor, new_results_since, +1 more.
harmonic_get_saved_search_resultsGet Saved Search ResultsARead-onlyIdempotent
Get results from a saved search. Returns full company/person data matching the search criteria.
WARNING: Response sizes are LARGE:
size=3 (default): ~81KB
size=5 (max): ~135KB
Field filtering does NOT work on this endpoint. Each result contains full company data (~27KB). Use pagination (cursor) for more results rather than large sizes.
Input:
search_id: The saved search ID (get from harmonic_list_saved_searches)
size: Number of results (default: 3, max: 5)
cursor: Pagination cursor for more results
Returns (for COMPANIES_LIST type): { "data": [ { "id": 65200417, "name": "Stealth Company (John Smith)", "description": "...", "headcount": 1, "funding": { "funding_total": 0, "funding_stage": "STEALTH" }, "location": { "city": "San Francisco", "country": "United States" }, "contact": { "primary_email": "john@example.com" } } ], "count": number, "totalAvailable": number, "hasMore": boolean, "nextCursor": string | null }
Use cases:
Monitor deal flow with pre-defined criteria
Get companies matching specific investment thesis
Track stealth companies or recent launches
Inputs: search_id (required), size, cursor, response_format.
harmonic_list_saved_searchesList Saved SearchesARead-onlyIdempotent
Get all saved searches accessible to your Harmonic account. Saved searches enable monitoring deal flow and tracking companies over time.
What it does: Returns all saved searches (also called "Saved Views" in Harmonic UI) that your team has created. Each saved search has specific filter criteria.
Returns: { "data": [ { "id": 141648, "name": "Stealth Feed", "type": "COMPANIES_LIST", "is_private": false, "created_at": "2024-10-10T18:48:38.438102", "updated_at": "2025-06-16T00:53:15.505131" } ], "count": number }
Search types:
COMPANIES_LIST: Search for companies
PERSONS: Search for people
Next steps: Use harmonic_get_saved_search_results with the search ID to get matching companies/persons.
Use cases:
List all team deal flow monitors
Find a specific saved search by name
Check when a search was last updated
Inputs: response_format.
harmonic_lookup_companyLookup CompanyARead-onlyIdempotent
Look up a company by domain, website URL, or social media URL. This is a READ operation (does not create data).
What it does: Finds and enriches a company profile by any of its known identifiers. Returns full company details including funding, headcount, location, and contact info.
Supported identifiers (use ONE):
website_domain: e.g., "harmonic.ai", "stripe.com"
website_url: Full URL like "https://www.stripe.com"
linkedin_url: LinkedIn company page
crunchbase_url: Crunchbase profile
pitchbook_url: Pitchbook profile
twitter_url: Twitter/X profile
instagram_url: Instagram profile
facebook_url: Facebook page
angellist_url: AngelList profile
Returns full company data including:
Basic info: name, description, logo
Contact: emails, primary_email, exec_emails
Funding: total amount, stage, investors, rounds
Social: LinkedIn, Twitter with follower counts
Metrics: headcount, web_traffic
Example Response (JSON): { "id": 1, "entity_urn": "urn:harmonic:company:1", "name": "Harmonic", "description": "...", "headcount": 67, "funding": { "funding_total": 30150000, "funding_stage": "SERIES_A", "investors": [...] }, "contact": { "primary_email": "max@harmonic.ai", "emails": [...] } }
HTTP 404 Note: If company not found, Harmonic may trigger background enrichment. Try again later or use a different identifier.
Inputs: website_domain, website_url, linkedin_url, crunchbase_url, +6 more.
harmonic_lookup_personLookup PersonARead-onlyIdempotent
Look up a person by their LinkedIn URL. This is a READ operation (does not create data).
What it does: Finds and enriches a person's profile by their LinkedIn URL. Returns full profile including work history, education, contact info, and social links.
Input:
linkedin_url: Full LinkedIn profile URL (e.g., "https://linkedin.com/in/username")
Returns: { "id": 161780079, "entity_urn": "urn:harmonic:person:161780079", "full_name": "Max Ruderman", "contact": { "emails": ["max@harmonic.ai"], "primary_email": "max@harmonic.ai" }, "location": { "city": "New York", "state": "New York", "country": "United States" }, "education": [ { "school": { "name": "Cornell University" }, "degree": "Bachelor of Science (B.S.)", "field": "Labor and Industrial Relations" } ], "experience": [ { "title": "Chief Executive Officer", "company": "urn:harmonic:company:1", "company_name": "Harmonic", "is_current_position": true, "start_date": "2022-07-01T00:00:00Z" } ] }
HTTP 404 Note: If person not found, Harmonic may trigger background enrichment. Try again later.
Use cases:
Research a founder or executive before a meeting
Find contact information for outreach
Verify a person's current role and company
Inputs: linkedin_url (required), response_format.
harmonic_search_companiesSearch Companies (Natural Language)ARead-onlyIdempotent
Search for companies using natural language queries. This is the primary entry point for discovering companies.
What it does: Searches Harmonic's database using AI-powered natural language understanding. You can describe what you're looking for in plain English.
Example queries:
"AI startups in San Francisco"
"fintech companies with Series A funding"
"B2B SaaS companies founded after 2020"
"healthcare startups in Boston with 50-100 employees"
Returns:
Company URNs (use harmonic_get_company to get full details)
Total count of matching companies
Query interpretation showing how your query was parsed
Pagination cursor for more results
Returns (JSON): { "data": [{ "urn": "urn:harmonic:company:123", "id": "123" }], "count": number, "totalAvailable": number, "hasMore": boolean, "nextCursor": string | null, "queryInterpretation": { "semantic": string, "faceted": [...] } }
Next Steps: Use the numeric ID from URN with harmonic_get_company for full company details.
Inputs: query (required), size, similarity_threshold, cursor, +1 more.
harmonic_search_typeaheadSearch Companies (Typeahead)ARead-onlyIdempotent
Quick autocomplete search for companies by name or domain. Use this for fast lookups when you know part of the company name.
What it does: Returns company matches ranked by relevance. Lower ranking_score = better match.
Example queries:
"Harmonic" - finds companies with Harmonic in the name
"stripe.com" - finds by domain
"Str" - partial name search
Returns (JSON): { "data": [ { "entity_urn": "urn:harmonic:company:1", "text": "Harmonic", "ranking_score": 10.0 } ], "count": number }
When to use:
Quick lookup by known company name
Autocomplete suggestions
Finding company by domain
When NOT to use:
Complex searches with multiple criteria (use harmonic_search_companies instead)
Searching by funding stage, location, etc.
Inputs: query (required), response_format.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools have distinct purposes, but some overlap exists. For example, harmonic_get_company and harmonic_lookup_company both retrieve company details, though one uses an ID and the other uses external identifiers. Similarly, harmonic_search_companies and harmonic_search_typeahead both search for companies, but with different query styles. The descriptions help clarify these distinctions, preventing major confusion.
All tool names follow a consistent verb_noun pattern with snake_case, starting with 'harmonic_' as a prefix. Examples include harmonic_get_company, harmonic_search_companies, and harmonic_list_saved_searches. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
With 13 tools, the server is well-scoped for its domain of company and person data retrieval, search, and monitoring in a VC context. Each tool serves a specific function, such as fetching details, searching, or managing saved searches, and none appear redundant or unnecessary for the intended workflows.
The tool set covers core CRUD-like operations for the domain, including lookup, search, retrieval, and monitoring workflows. Minor gaps exist, such as no explicit update or delete tools for saved searches or companies, but these are likely handled outside the MCP scope. The tools support key use cases like deal flow monitoring and network analysis without dead ends.
Related MCP Connectors
B2B lead finding, company enrichment, email discovery and funding tracking as 10 agent tools.
Company profile lookup and B2B company search for AI agents.
Funding rounds, AI startup and investor search, email discovery, agent-readiness. No API key.
Search companies, enrich contacts, and reveal emails and phones from your AI agent.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Apollo.io API for sales and marketing activities. Provides tools to search for companies and contacts, enrich person and organization data, and manage accounts with comprehensive lead generation capabilities.11MIT
- AlicenseNot gradedqualityDmaintenanceProvides access to Harmonic.ai's API for searching and retrieving detailed information about companies and professionals. Supports company searches by domain or query, people searches, saved search results, and employee listings with pagination.2ISC
- FlicenseBqualityDmaintenanceExposes Apollo.io API functionalities as MCP tools for people and organization enrichment, search, and job postings. Enables natural language interaction with Apollo.io data.516-
- AlicenseNot gradedqualityDmaintenanceProvides tools to search and enrich people and companies, retrieve job postings, and search news articles via the Apollo.io API.78 npmMIT