com.mambabuilt/mcp-career-change-signal-engine·Messaging

mcp-career-change-signal-engine

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

Stars
0
Version
1.0.0
License
MIT
Review
Passed
Language
TypeScript
Last commit
3h ago
Forks
0
Open issues
0
Registry update
Oct 14, 2026

Connect

npm
Terminal
$claude mcp add mcp-career-change-signal-engine \  -e APIFY_TOKEN=<apify-token> \  -- npx -y @mambalabsdev/[email protected]

Environment variables

  • APIFY_TOKENrequiredsecret

    Apify API token from https://console.apify.com/account/integrations

Security review

Review passed

Reviewed 1h ago.

metadata
scanned
packages
1 checked

No findings.

Tools

This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.

Career Change Signal Engine MCP Server

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

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:

{
  "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:

{
  "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.

From the server's repository — third-party content, read it before running anything it suggests.

More in Messaging

Listing from the official MCP Registry · repository facts from GitHub, 1h ago.