enrich_company
Enrich company data from a domain name or company name. Returns industry, employee count, funding, tech stack, social profiles, and more. Uses Clearbit API (falls back to mock data if no API key configured).
domaincompanyName
io.github.OpafexPublished by GitHub account Opafexv0.1.1Updated Oct 26, 2026
Multi-source entity enrichment: company data, contacts, email verification, and phone validation
Local MCP server that enriches companies and contacts and verifies emails and phone numbers via Clearbit, Hunter.io and Twilio, with a mock mode.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
MCP server for multi-source entity enrichment — company data, contact lookup, email verification, phone validation, and email discovery.
Uses Clearbit, Hunter.io, and Twilio APIs. Works in mock mode with no API keys configured.
Requires Node.js 20+.
Create or edit .mcp.json in your project root:
Omit the env block to run in mock mode.
enrich_companyEnrich company data from a domain name or company name. Returns industry, employee count, funding, tech stack, social profiles, and more.
Provider: Clearbit
enrich_contactEnrich contact/person data from an email address or LinkedIn URL.
Provider: Clearbit
verify_emailVerify an email address for deliverability. Returns validity, deliverability score, disposable/free provider detection, role-based detection, and SMTP validation.
Provider: Hunter.io
verify_phoneValidate and look up a phone number. Returns validity, formatted number, line type (mobile/landline/voip), carrier info, and location.
Provider: Twilio
find_emailFind the email address for a specific person at a company.
Provider: Hunter.io
server_info (built-in)Returns server metadata: name, version, registered tools, and resources. Added automatically by @opafex/mcp-shared.
When no API keys are configured, all tools return realistic mock data. This is great for development and testing — you can build against the MCP without any API accounts.
Mock mode activates automatically:
CLEARBIT_API_KEY, HUNTER_API_KEY, or TWILIO_ACCOUNT_SID are setCLEARBIT_API_KEY, company/contact tools use real data while email/phone tools fall back to mock)Check enrichment://status resource or the server_info tool to see which providers are active.
The enrichment service can be used programmatically (not just as an MCP server):
The default in-memory cache works out of the box. For Redis, SQLite, or any custom store, implement the CacheProvider interface:
Found a bug or have a feature request? Open an issue.
Pull requests welcome — see the main repo for development setup.
MIT — see LICENSE.
Source: packages/enrichment/README.md at commit f85607b
Enrich company data from a domain name or company name. Returns industry, employee count, funding, tech stack, social profiles, and more. Uses Clearbit API (falls back to mock data if no API key configured).
domaincompanyNameEnrich contact/person data from an email address or LinkedIn URL. Returns name, title, seniority, department, social profiles, and company info. Uses Clearbit API.
emaildomaincompanylastNamefirstNamelinkedinUrlVerify an email address for deliverability. Returns validity, deliverability score, disposable/free provider detection, role-based detection, MX records check, and SMTP validation. Uses Hunter.io API.
emailrequiredValidate and look up a phone number. Returns validity, formatted number, line type (mobile/landline/voip), carrier info, and location. Uses Twilio Lookup API.
phonerequiredcountryCodeFind the email address for a specific person at a company. Provide their first name, last name, and the company domain. Returns the most likely email and a confidence score. Uses Hunter.io API.
domainrequiredlastNamerequiredfirstNamerequiredReturns server metadata: name, version, registered tools, and registered resources. Useful for introspection and health checks.
Takes no parameters.
90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
# Clone and build from sourcegit clone https://github.com/opafex/opafex-mcps.gitcd opafex-mcpsnpm install && npm run build{ "mcpServers": { "enrichment": { "command": "node", "args": ["/path/to/opafex-mcps/packages/enrichment/dist/index.js"], "env": { "CLEARBIT_API_KEY": "sk-...", "HUNTER_API_KEY": "...", "TWILIO_ACCOUNT_SID": "...", "TWILIO_AUTH_TOKEN": "..." } } }}{ "success": true, "company": { "name": "Company for stripe.com", "domain": "stripe.com", "description": "A leading technology company specializing in innovative solutions.", "industry": "Technology", "sector": "Software", "employees": 150, "employeesRange": "101-250", "founded": 2015, "location": { "city": "London", "country": "United Kingdom" }, "socialProfiles": { "linkedin": "https://linkedin.com/company/example" }, "techStack": ["React", "Node.js", "PostgreSQL", "AWS"], "type": "private" }, "provider": "mock", "cached": false, "timestamp": "2026-03-15T00:00:00.000Z"}{ "success": true, "email": "[email protected]", "valid": true, "deliverable": true, "disposable": false, "freeProvider": false, "role": false, "score": 95, "provider": "mock", "cached": false}{ "success": true, "email": "[email protected]", "score": 85, "sources": ["LinkedIn", "Company Website"], "provider": "mock", "cached": false}npm run build # Compile TypeScriptnpm run dev # Run with tsx (no build needed)npm test # Run testsnpm start # Run compiled serverimport { EnrichmentService } from '@opafex/mcp-enrichment/service';import type { CacheProvider } from '@opafex/mcp-enrichment/service';
const service = new EnrichmentService({ clearbitApiKey: 'sk-...', hunterApiKey: '...',});
const result = await service.enrichCompany({ domain: 'stripe.com' });import { EnrichmentService } from '@opafex/mcp-enrichment/service';import type { CacheProvider } from '@opafex/mcp-enrichment/service';
const redisCache: CacheProvider = { async get(key) { /* ... */ }, async set(key, data, ttlMs) { /* ... */ }, async delete(key) { /* ... */ }, async clear() { /* ... */ },};
const service = new EnrichmentService({ clearbitApiKey: '...', cache: redisCache,});