Skip to main content
Glama
mambalabsdev

Company Headcount Estimator MCP Server

Estimate company headcount

estimate_company_headcount
Read-onlyIdempotent

Estimate a company's employee count band from its website domain, returning the size range, source, and confidence so you can qualify accounts without visiting LinkedIn.

Instructions

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.

Input Schema

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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

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.

Deploy Server

Other Tools