mcp-new-hire-finder
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., "@mcp-new-hire-finderWho joined stripe.com in a sales role in the last 3 months?"
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.
New Hire Finder MCP Server
An MCP server for the Mamba Labs New Hire Finder actor on Apify. Find the people who started a role at a company in the last few months. Give a company domain, the titles you sell to, and a lookback window. Get one flat row per person: name, profile URL, title, start month, prior role, move type (new hire or internal promotion), and the source that found them.
What's Inside
Related MCP server: ats-jobs-mcp
What it does
Find people who started a role matching your titles at a company inside a lookback window. Give company_domain (or company_domains), target_titles, and lookback_months. Returns one flat, Clay-ready JSON row per person with name, profile URL, title, start month, prior role, move type (new hire, internal promotion, or announcement only), and source, plus one summary row per company that says whether anyone was found or why nothing could be looked up. Runs on your own Prospeo, Serper, SerpApi, or Exa keys passed as inputs, and on a people list you send; it never fetches LinkedIn and holds no key of its own. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN and consumes Apify credits per call.
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-new-hire-finder": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-new-hire-finder"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The find_new_hires 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.
Example prompts
"Who joined example.com in a marketing role in the last 6 months?"
"Find new heads of content at these 10 companies since June."
Tool
find_new_hires. One tool. Example arguments:
{
"company_domain": "example.com",
"target_titles": [
"marketing"
],
"lookback_months": "6"
}Inputs
Every buyer facing input of the live actor, unchanged. Omitted inputs take the actor's own defaults.
Input | Type | Required | Description |
| string | no | One company domain, for example zapier.com. Use this or Company domains (batch); both are merged. |
| array | no | A list of company domains. Each company gets its own summary row. |
| string | no | Optional, single company runs only. Leave empty and the name is read from the homepage. |
| array | no | Title phrases to match, for example marketing, head of content, editor. A title matches when it contains every word of a phrase as a whole word. Also sent to Prospeo and web search as the title filter. |
| array | no | Optional. Keep only these seniority levels. |
| array | no | Optional. Keep only these departments. |
| array | no | Optional. Drop any title that contains one of these phrases, for example intern. |
| boolean | no | Also match a short synonym list (marketing also matches growth, brand, demand generation). Off by default, because every row is charged. |
| string | no | How many calendar months back to look, including this month. 1 to 24, default 6. 6 in October means May to October. Typed as text so Clay can send it. |
| array | no | Which moves to return and charge. new_hire is a person who came from another employer. promotion is a new role at the same employer. unknown is a hire announcement with no work history. Default new_hire only. |
| boolean | no | Also return people whose start is known only to the year and could fall inside the window. They are charged like any row. Off by default. |
| array | no | People you already hold, with role histories. Each item: person_name, company_domain, profile_url (optional), and roles, a list of {title, company_name, start (YYYY-MM), end (YYYY-MM or null)}. The same window, title, and move rules run on them, with no provider call. |
| array | no | Routes to run. Default all. buyer_data is your people list; prospeo and web_search run only with your key; news, newsroom, and team_pages are free. |
| string | no | Your own Prospeo key. Gives the work history behind start month and move type. One Prospeo credit per search page of 25 people and one per person enrichment, billed by Prospeo to you. Never stored. Your own key, sent as a run input; never stored by the actor. |
| string | no | Which of your search keys to use. auto takes the first key present: Serper, then SerpApi, then Exa. |
| string | no | Your own Serper.dev key for web search. One search per company by default. Search results carry no start date, so they are dated with your Prospeo key or counted as undated. Your own key, sent as a run input; never stored by the actor. |
| string | no | Your own SerpApi key for web search. A different vendor from Serper. Your own key, sent as a run input; never stored by the actor. |
| string | no | Your own Exa key. Exa people search returns work histories with start months, so its results need no enrichment. Your own key, sent as a run input; never stored by the actor. |
| string | no | Most person rows to return per company, newest starts first. 1 to 100, default 25. |
| string | no | Web search queries per company on your key. 1 to 4, default 1. |
| string | no | Prospeo enrichment calls per company to date people found by web search, headlines, and team pages. 0 to 25, default 5. |
| string | no | Prospeo search pages of 25 people per company. 1 to 4, default 1. |
| number | no | Optional. The run stops before any charge that would take this run past this amount, and keeps every row already paid for. Leave empty to rely only on the maximum cost per run set in Apify, which the run also honors. |
| boolean | no | Search again even when the same company and filters ran in the last 7 days. A cached result is returned free. |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.085 | $0.08075 | $0.0765 | $0.07225 |
| $0.001 | $0.001 | $0.001 | $0.001 |
Your keys
The actor holds no provider key of its own. Every paid provider key is yours, passed as an input and stored by Apify as a secret input. Without a key, the actor skips that step and says so in the run.
Full actor documentation
apify.com/mambalabs/new-hire-finder
License
MIT. See LICENSE.
Available Tools
1 toolfind_new_hiresFind new hiresARead-onlyIdempotent
Find people who started a role matching your titles at a company inside a lookback window. Give company_domain (or company_domains), target_titles, and lookback_months. Returns one flat, Clay-ready JSON row per person with name, profile URL, title, start month, prior role, move type (new hire, internal promotion, or announcement only), and source, plus one summary row per company that says whether anyone was found or why nothing could be looked up. Runs on your own Prospeo, Serper, SerpApi, or Exa keys passed as inputs, and on a people list you send; it never fetches LinkedIn and holds no key of its own. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN and consumes Apify credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| people | No | People you already hold, with role histories. Each item: person_name, company_domain, profile_url (optional), and roles, a list of {title, company_name, start (YYYY-MM), end (YYYY-MM or null)}. The same window, title, and move rules run on them, with no provider call. | |
| sources | No | Routes to run. Default all. buyer_data is your people list; prospeo and web_search run only with your key; news, newsroom, and team_pages are free. | |
| seniority | No | Optional. Keep only these seniority levels. | |
| move_types | No | Which moves to return and charge. new_hire is a person who came from another employer. promotion is a new role at the same employer. unknown is a hire announcement with no work history. Default new_hire only. | |
| skip_cache | No | Search again even when the same company and filters ran in the last 7 days. A cached result is returned free. | |
| departments | No | Optional. Keep only these departments. | |
| exa_api_key | No | Your own Exa key. Exa people search returns work histories with start months, so its results need no enrichment. Your own key, sent as a run input; never stored by the actor. | |
| company_name | No | Optional, single company runs only. Leave empty and the name is read from the homepage. | |
| target_titles | No | Title phrases to match, for example marketing, head of content, editor. A title matches when it contains every word of a phrase as a whole word. Also sent to Prospeo and web search as the title filter. | |
| company_domain | No | One company domain, for example zapier.com. Use this or Company domains (batch); both are merged. | |
| exclude_titles | No | Optional. Drop any title that contains one of these phrases, for example intern. | |
| max_charge_usd | No | Optional. The run stops before any charge that would take this run past this amount, and keeps every row already paid for. Leave empty to rely only on the maximum cost per run set in Apify, which the run also honors. | |
| serper_api_key | No | Your own Serper.dev key for web search. One search per company by default. Search results carry no start date, so they are dated with your Prospeo key or counted as undated. Your own key, sent as a run input; never stored by the actor. | |
| company_domains | No | A list of company domains. Each company gets its own summary row. | |
| lookback_months | No | How many calendar months back to look, including this month. 1 to 24, default 6. 6 in October means May to October. Typed as text so Clay can send it. | |
| prospeo_api_key | No | Your own Prospeo key. Gives the work history behind start month and move type. One Prospeo credit per search page of 25 people and one per person enrichment, billed by Prospeo to you. Never stored. Your own key, sent as a run input; never stored by the actor. | |
| serpapi_api_key | No | Your own SerpApi key for web search. A different vendor from Serper. Your own key, sent as a run input; never stored by the actor. | |
| include_year_only | No | Also return people whose start is known only to the year and could fall inside the window. They are charged like any row. Off by default. | |
| web_search_provider | No | Which of your search keys to use. auto takes the first key present: Serper, then SerpApi, then Exa. | |
| expand_title_synonyms | No | Also match a short synonym list (marketing also matches growth, brand, demand generation). Off by default, because every row is charged. | |
| max_enrich_per_company | No | Prospeo enrichment calls per company to date people found by web search, headlines, and team pages. 0 to 25, default 5. | |
| max_people_per_company | No | Most person rows to return per company, newest starts first. 1 to 100, default 25. | |
| max_prospeo_pages_per_company | No | Prospeo search pages of 25 people per company. 1 to 4, default 1. | |
| max_search_queries_per_company | No | Web search queries per company on your key. 1 to 4, default 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/idempotent, but the description adds substantial context beyond them: it runs on the caller's own Prospeo/Serper/SerpApi/Exa keys, never fetches LinkedIn, holds no key of its own, requires an APIFY_TOKEN, consumes Apify credits per call, and returns failed runs as errors carrying the run ID. Auth, cost, and failure semantics are all disclosed.
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?
A dense but well-ordered block: purpose first, then required inputs, output shape, execution model, error handling, and safety. Every sentence carries information for a 24-parameter tool, though the single-paragraph density is slightly heavy.
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 no output schema, the description properly explains the return shape (one flat Clay-ready row per person with named fields, plus one summary row per company and its reason when nothing is found) and the costs/keys involved. Given the tool's complexity and zero required params, this is complete enough to call correctly.
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 schema already documents all 24 parameters in detail. The description restates only the three key inputs and names the move-type categories, adding little beyond what the schema enums already explain. Baseline 3 is appropriate.
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 states a specific verb and resource with scope: 'Find people who started a role matching your titles at a company inside a lookback window.' It is precise enough that an agent knows exactly what kind of result to expect, with no sibling tools to confuse it with.
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 tells the agent which inputs to supply ('Give company_domain (or company_domains), target_titles, and lookback_months') and clarifies the alternate data path (runs on a people list you send). It stops short of explicit when-not-to-use or exclusions, but the usage context is clear.
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
v0.1.0- First observed
find_new_hires
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of misselection between overlapping tools. Its purpose (finding new hires at target companies) is stated unambiguously in both name and description.
The single tool uses a clear snake_case verb_noun pattern (find_new_hires) that would scale predictably if more tools were added. No competing conventions exist to create inconsistency.
A single tool is on the thin side for what is otherwise a parameter-rich, multi-source lookup service; splitting discovery (companies/people lookup by run ID, retry of a failed run, credit/error inspection) into separate tools would make the surface easier to consume.
The one tool covers the core end-to-end workflow (company input, lookback window, title matching, flat per-person output plus per-company summary), which is solid for a read-only search service. Minor gaps: failed runs return a run ID but there is no tool to re-fetch or inspect a prior run, and no way to validate/normalize company domains separately.
Maintenance
Related MCP Connectors
Company hiring signals + open jobs from Greenhouse, Lever, Ashby boards, API + MCP. 20 free/day.
Find and enrich people from 750M professional profiles, with Next Move Signal job-change scores.
Search and track open roles at venture-backed startups that raised in the last six months.
Find companies hiring for a role and geo, qualify them, and watch them for changes.
Related MCP Servers
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1250 npm1MIT
- AlicenseNot gradedqualityAmaintenanceEnables users to discover applicant tracking system job boards from company domains, list open roles, detect hiring changes over time, and generate hiring summaries across multiple ATS platforms.MIT
- AlicenseNot gradedqualityBmaintenanceEnables users to find companies hiring by role and geography, qualify them, and monitor them for hiring changes.MIT
- AlicenseAqualityCmaintenanceEnables querying job boards for a company's open roles, pulling from Greenhouse, Workday, and an opt-in LinkedIn source and normalizing the results into one shape. It discovers boards, searches one or many companies at once, and returns full postings with title-based AI/ML and junior filtering.7MIT