Skip to main content
Glama
mambalabsdev

Company Headcount Estimator MCP Server

Company Headcount Estimator MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

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

domain

string

One company domain

company_name

string

The name for that one domain; empty reads it from the homepage

domains

array

Up to 500 domains; Name | domain.com passes the name

sources

array

Any of linkedin, wikidata, homepage, github, jobs; empty means all

skip_cache

string

true or false. Default false; a row from the last 7 days comes back free

max_charge_usd

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

company-estimated, per row with an employee band

$0.036

$0.0342

$0.0324

$0.0306

apify-actor-start, per run start (one per GB of run memory)

$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 tool
estimate_company_headcountEstimate company headcountA
Read-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.

NameRequiredDescriptionDefault
domainNoOne company website domain, for example linear.app. A URL or an email address also works.
domainsNoUp to 500 domains. Write Name | domain.com to pass the name too.
sourcesNoSources to check. Empty: all. github and jobs need homepage.
skip_cacheNotrue reads every source again instead of returning a row estimated in the last 7 days (cached rows are free). Default false.
company_nameNoThe company name for that one domain. Empty: read from the homepage.
max_charge_usdNoOptional. The run stops before any row that would take its charges over this amount.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev1.0.0
    • First observedestimate_company_headcount

TDQS

A4.5/5.0

Scored across 1 tool

Disambiguation5/5

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.

Naming Consistency5/5

The single tool name, estimate_company_headcount, follows a clear verb_noun convention. There are no competing names or mixed styles to create inconsistency.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables 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.
    1
    226 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Domain and company intelligence for AI agents. Enables vetting companies, qualifying leads, and mapping targets from free public data without API keys.
    6
    2 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    3
    1 npm
    MIT