Company Headcount Estimator MCP Server
Retrieves GitHub public member counts and open jobs as context for company headcount estimation, using an optional GitHub token to raise rate limits on large batches.
Reads LinkedIn company size as printed in Google search results to estimate employee headcount bands for a domain, without directly requesting linkedin.com.
Queries Wikidata for employee counts on items whose official website matches the company domain, contributing to headcount estimates.
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., "@Company Headcount Estimator MCP ServerHow many employees does linear.app have?"
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.
Company Headcount Estimator MCP Server
An MCP server for the Mamba Labs Company Headcount Estimator actor on Apify. Give it a company domain or a list. Each domain returns an employee count band with the source it came from and a confidence score.
What's Inside
Related MCP server: Company Firmographic Enricher MCP Server
What it does
For each domain the actor reads, in order: the LinkedIn company size as Google prints it in its search results (a result counts only when it shows the domain as the company website; no request goes to linkedin.com), the employee count on Wikidata for the item whose official website is the domain, and the numberOfEmployees the homepage declares. It returns employee_band, employee_band_min, employee_band_max, an exact employee_count when a source gives one, estimate_source, confidence (0 to 1), and sources_agree, plus GitHub public members and open jobs as context. Rows with no size come back free with row_status no_data.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-company-headcount-estimator": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-company-headcount-estimator"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The estimate_company_headcount tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.Optional:
GITHUB_TOKEN, your own free GitHub token, for GitHub member counts on large batches.
Example prompts
"How many employees does linear.app have?"
"Estimate the headcount band for these 20 domains and keep only the ones with 51 to 500 staff."
"Which of these companies have more than 1,000 employees, and how sure is each answer?"
Tool
estimate_company_headcount. One tool. Example arguments:
{
"domains": ["Linear | linear.app", "posthog.com", "clay.com"]
}Inputs
Every buyer facing input of the actor. Omitted inputs take the actor's own defaults.
Input | Type | Description |
| string | One company domain |
| string | The name for that one domain; empty reads it from the homepage |
| array | Up to 500 domains; |
| array | Any of |
| string | true or false. Default false; a row from the last 7 days comes back free |
| string | Optional cost cap for the run |
The actor's github_token input is filled from this server's GITHUB_TOKEN environment variable when it is set.
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.036 | $0.0342 | $0.0324 | $0.0306 |
| $0.0015 | $0.0015 | $0.0015 | $0.0015 |
No data, invalid input, error, and cached rows are free.
Your keys
The actor needs no key. A GitHub token is optional and only raises the GitHub limit for member counts. Proxy traffic and Google result pages add nothing to your price: Mamba Labs pays the platform costs of the run.
Full actor documentation
apify.com/mambalabs/company-headcount-estimator
License
MIT. See LICENSE.
Available Tools
1 toolestimate_company_headcountEstimate company headcountARead-onlyIdempotent
Estimate the employee count band of a company from its website domain. Give domain (for example linear.app) or domains (up to 500, one per item, Name | domain.com to pass a name). Each domain returns one row: employee_band (1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, or 10001+), employee_band_min and employee_band_max, an exact employee_count when Wikidata or the homepage gives one, estimate_source (linkedin_search_snippet: the LinkedIn company size as Google prints it in its results, matched by the website the result shows; wikidata; or homepage_structured_data), a 0 to 1 confidence, sources_agree, and context columns (GitHub public members, open jobs). No request goes to linkedin.com. Rows with no size come back free with row_status no_data. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per estimated company.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | One company website domain, for example linear.app. A URL or an email address also works. | |
| domains | No | Up to 500 domains. Write Name | domain.com to pass the name too. | |
| sources | No | Sources to check. Empty: all. github and jobs need homepage. | |
| skip_cache | No | true reads every source again instead of returning a row estimated in the last 7 days (cached rows are free). Default false. | |
| company_name | No | The company name for that one domain. Empty: read from the homepage. | |
| max_charge_usd | No | Optional. The run stops before any row that would take its charges over this amount. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive, open-world), the description discloses operational facts an agent cannot infer structurally: an APIFY_TOKEN is required, Apify charges per estimated company, a max_charge_usd cap can halt a run, no request is ever made to linkedin.com, and failed runs return an error carrying a run ID. This is exactly the extra behavioral surface annotations cannot express.
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?
Purpose and accepted input forms are front-loaded in the first two sentences, and the dense output-column enumeration is justified because there is no output schema. The middle sentences are information-rich but read as a single long run-on block, which costs a little readability.
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?
With six parameters, no output schema, and no siblings, the description carries the full burden — and it does: it defines every returned column (employee_band, min/max, employee_count, estimate_source with all three values, confidence, sources_agree, context columns), covers the no_data row case, and states the error contract. Nothing an agent needs to call this correctly or interpret results is missing.
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 description coverage is 100%, so the heavy lifting is already done, and most of the description's parameter talk (domain example, 500-domain limit, Name | domain.com format) restates the schema. The one genuinely additive note is that linkedin as a source still makes no request to linkedin.com, which clarifies the 'sources' enum, but the remaining parameters (skip_cache, company_name, max_charge_usd) get no extra explanation.
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 first sentence names a specific verb and resource — estimate the employee count band of a company from its website domain — and the description immediately enumerates the exact output band values, so an agent knows precisely what comes back. With no siblings to disambiguate against, this is about as clear as a purpose statement gets.
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 explains the two entry paths (single domain vs. batch domains up to 500, one per item, with an optional Name | domain.com form) and gives cost-saving rules of thumb such as 'Rows with no size come back free' and the skip_cache 7-day cache behavior. It stops short of stating when to prefer this tool over another approach or when not to use it, so it is clear context without explicit exclusions.
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.
1 tool update
v1.0.0- First observed
estimate_company_headcount
TDQS
Scored across 1 tool
The server exposes only one tool, so there is no risk of selecting the wrong operation. Its purpose—estimating company headcount from domains—is clear and unambiguous.
The single tool name, estimate_company_headcount, follows a clear verb_noun convention. There are no competing names or mixed styles to create inconsistency.
The server is a focused, single-purpose headcount estimator, and one tool is sufficient for that scope. Batch input support means the single tool can handle both individual and bulk requests without needing extra tools.
For its stated purpose, the tool covers the core operation thoroughly: batch domains, band output, exact counts when available, confidence, sources, and error reporting. Minor gaps could exist around richer validation or follow-up operations, but the core estimator surface is complete.
Maintenance
Related MCP Connectors
Company enrichment for AI agents: firmographics, tech stack, headcount, funding, domain emails.
Enrich any domain into a full company profile with firmographics and buying signals.
Is a company hiring? Domains to open roles, ATS, departments and seniority from public job boards.
Company & brand data by domain or ticker/ISIN: industry, headcount, HQ, social, colors, logos.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceDomain -> company intelligence for AI agents. Look up company name, country, contacts, and social profiles from any MCP-compatible client.6MIT
- AlicenseAqualityAmaintenanceEnables enriching company domains into structured firmographics including employee band, industry, HQ, founded year, revenue estimate, logo, and description, with source provenance and data completeness scoring.1226 npm1MIT
- AlicenseAqualityBmaintenanceDomain and company intelligence for AI agents. Enables vetting companies, qualifying leads, and mapping targets from free public data without API keys.62 npm1MIT
- AlicenseAqualityCmaintenanceEnables enrichment of company domains with verified firmographic signals including tech stack, hiring activity, email infrastructure, and SOC 2 compliance, returning compact typed JSON for AI agents.31 npmMIT