Mcp Career Change Signal Engine

com.mambabuiltPublished by mambabuilt.comv1.0.2Updated Nov 7, 2026

Watch your contacts and get back only job changes: leavers, landings, replacements, new hires.

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Thin MCP client for an Apify actor that watches a contact list and returns only job changes: leavers, landings, replacements and new hires.

What you can do
  • Run a watch list of contacts and get back only what changed since the last run: who left, who landed where, who replaced them, and who started after a role closed
  • Receive per-row evidence, source date, segment, a first-line draft, and ready-made Slack, HubSpot, HeyReach and Instantly payloads
  • Control state handling per watch list, read mode, first-run baseline versus report, spend cap, sweep interval and concurrency
  • Optionally supply replies, bounces, posting changes, suppression lists, ICP tiers and your own provider keys
  • Optionally post up to 100 signal rows per request to a signed webhook
When to use it
Useful for sales, recruiting or partnership teams that track a list of past champions, prospects or deal contacts and want a periodic digest of job changes rather than a full re-read of every profile. Also fits workflows that push those changes into CRM or outreach tools.
Requirements
Runs locally via npx, so Node.js 18 or newer is needed, plus an Apify account and an APIFY_TOKEN environment variable. Calls consume Apify credits. Optional provider keys (serper or serpapi, prospeo, bounceban, findymail, exa) and a webhook secret can be passed as run inputs.
Before you install
Calls are billed per event to your Apify account (contact checked, signal delivered, run start), so costs scale with list size; a max spend cap can be set. The APIFY_TOKEN and any provider keys or webhook secret are sent to Apify, which stores provider keys as secret inputs. Contact data, replies and bounces are sent to third-party providers and to any webhook URL you configure; reply text is reduced to a hash. Rows include drafted outreach text, so review before sending.

Installation

In SourceWeft

  1. Open Mcp Career Change Signal Engine in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Career Change Signal Engine MCP Server

[Glama score] [MCP Registry] [npm version] [npm downloads] [license] [mcpservers.org]

[Career Change Signal Engine MCP server]

An MCP server for the Mamba Labs Career Change Signal Engine actor on Apify. Career Change Signal Engine reads the people on your watch list and returns only what changed since you last checked: who left, who landed where, who replaced them, and who started after a role closed. Every row says how the person was matched, which source answered, and how old that source is.

What's Inside

What it does

Read a watch list of contacts and return only what changed since the last run: who left, who landed where, who replaced them, and who started after a role closed. Each row carries evidence, a source date, a segment, a first line draft, and Slack, HubSpot, HeyReach, and Instantly payloads. Pass people (required) and, optionally, replies, bounces, posting changes, suppression, and your own provider keys in providerKeys; it never fetches LinkedIn and holds no key of its own. State is kept per watch_list_id. A run that does not succeed is returned as an error with its run ID. 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:

json
{  "mcpServers": {    "mamba-career-change-signal-engine": {      "command": "npx",      "args": [        "-y",        "@mambalabsdev/mcp-career-change-signal-engine"      ],      "env": {        "APIFY_TOKEN": "your-apify-token"      }    }  }}

Restart the client. The watch_career_changes tool appears.

Prerequisites

Example prompts

  • "Check my 50 past champions and tell me who left and where they landed."
  • "Run my watch list and draft a first line for each person who changed jobs."

Tool

watch_career_changes. One tool. Example arguments:

json
{  "people": [    {      "person_name": "Jane Doe",      "company_domain": "example.com",      "company_name": "Example Inc",      "title": "Head of Content",      "external_id": "example-1"    }  ],  "watch_list_id": "default"}

Inputs

Every buyer facing input of the live actor, unchanged. Omitted inputs take the actor's own defaults.

InputTypeRequiredDescription
peoplearrayyesYour watch list, one object per person: person_name, profile_url (optional), company_domain, company_name, title, work_email, relationship (prospect, mgl, deal_contact, customer_champion), external_id, crm_id, deal_id, known_history (a HeyReach copy, a Proofed LinkedIn reader row, or generic roles), last_reading (with state_source caller). The engine reads only these people. At most max_people_per_run per run.
watch_list_idstringnoNames the list. State is kept per watch list id when state_source is actor.
state_sourcestringnoactor: the engine keeps state between runs in a named store. caller: you send last_reading per person and keep state yourself.
read_modestringnostored_first: your known_history first, then your keys. live_only: ignore known_history. stored_only: only known_history, no key calls.
first_run_modestringnoreport: the first run returns every change it finds. baseline: the first run stores state and returns nothing, charging only contact_checked.
max_people_per_runintegernoA list longer than this fails the run before any read or charge. Default 150, at most 1,000.
providerKeysobjectnoYour own keys: serper or serpapi (web search), prospeo, bounceban (verifier), findymail, exa. Never written to state, output, logs, or the webhook. Your own key, sent as a run input; never stored by the actor.
linkedin_reader_dataset_idstringnoOptional: the dataset id of a Proofed LinkedIn reader run on the same Apify account. Rows join to people by profile URL.
repliesarraynoOptional reply texts: external_id or work_email or profile_url, text, received_at, channel, is_auto_reply. Text is classified and dropped; only its sha1 is kept.
bouncesarraynoOptional bounces: work_email, bounce_type, smtp_code, smtp_text, bounced_at.
posting_changesarraynoOptional Account Hiring Watch rows. A closed posting starts a new hire search at that company.
suppressionobjectnoemails, profile_urls, opted_out_emails, opted_out_profile_urls, company_domains, company_names. Suppressed people are dropped before the read and cost nothing.
icp_tiersobjectnoOptional map of company domain to tier, shown on landed rows. Never blocks a row.
featuresobjectnoSwitches: replacement, closed_posting, contact_data, first_line, icp, include_promotions. Defaults on except include_promotions.
sender_contextstringnoOptional topic phrase for the first line draft, for example: content production at scale.
max_replacement_candidatesintegernoCandidates proposed per leaver. A person confirms each.
max_spend_usdintegernoStops the run before a charge that would cross it.
sweep_interval_daysintegernoWith state_source actor, a person read within this many days is skipped.
concurrencyintegernoPeople read at once.
webhook_urlstringnoOptional: signed Standard Webhooks POST of up to 100 signal rows per request.
webhook_secretstringnoSigning secret; a whsec_ value is base64 decoded. Your own key, sent as a run input; never stored by the actor.

Pricing

Pay per event on Apify, billed to your Apify account. Prices in USD.

EventFree planBronzeSilverGold
contact_checked, per contact checked$0.02$0.019$0.018$0.017
signal_delivered, per change row delivered$0.068$0.0646$0.0612$0.0578
apify-actor-start, per run start$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/career-change-signal-engine

License

MIT. See LICENSE.

Source: README.md at commit 5ab2873

Tools

1

watch_career_changes

Watch career changes

Read a watch list of contacts and return only what changed since the last run: who left, who landed where, who replaced them, and who started after a role closed. Each row carries evidence, a source date, a segment, a first line draft, and Slack, HubSpot, HeyReach, and Instantly payloads. Pass people (required) and, optionally, replies, bounces, posting changes, suppression, and your own provider keys in providerKeys; it never fetches LinkedIn and holds no key of its own. State is kept per watch_list_id. A run that does not succeed is returned as an error with its run ID. Requires an APIFY_TOKEN and consumes Apify credits per call.

Parameterspeoplerequiredbouncesrepliesfeaturesicp_tiersread_modeconcurrencysuppressionwebhook_urlproviderKeysstate_sourcemax_spend_usd+9 more

Version history

3
  1. v1.0.2LatestNov 5, 2026
  2. v1.0.1Oct 16, 2026
  3. v1.0.0Oct 14, 2026

Score

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.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts