mcpField
I
Icp Fit Scorer

Icp Fit Scorer

Local
github.com/mambalabsdevDeveloper Tools3Updated 1w ago

About Icp Fit Scorer

An MCP server wrapping the Mamba Labs ICP Fit Scorer actor on Apify, for sales development and revenue operations teams. It scores one company using a template, JSON weights, or an ICP description and returns a score, tier, and signal breakdown.

Key features

  1. 01Score with a template, weights, or ICP description
  2. 02Return a 0–100 score and A–D tier
  3. 03Show per-signal score details
  4. 04Optionally fetch hiring and tech-stack signals
  5. 05List six built-in ICP templates

Use cases

  1. 01Screen companies against a target customer profile
  2. 02Assess prospects using hiring and technology signals
  3. 03Use scoring output in Clay, a CRM, or an Agent workflow

MCP support

It exposes `score_icp_fit` and `list_icp_templates` tools to MCP clients. Scoring runs through the actor on Apify and returns a Clay-ready flat JSON row; the template list is returned locally.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"icp-fit-scorer": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-icp-fit-scorer"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>"
}
}
}
}
Run commandnpx -y @mambalabsdev/mcp-icp-fit-scorer
Environment variables to set
APIFY_TOKENSecretApify API token from https://console.apify.com/account/integrations

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mambalabsdev/mcp-icp-fit-scorer1.3.0

Tools

1

Saved tool list · updated 3w ago

ParameterTypeRequiredDescription
company_domainstringYesThe primary domain of the company to score. Example: clay.com
company_namestringNoOptional display name of the company.
templatestringNoName of a prebuilt scoring config. Alternative to scoring_config or icp_description.
scoring_configobjectNoJSON object of scoring weights. Alternative to template or icp_description.
icp_descriptionstringNoPlain-English description of your target ICP. Requires llm_api_key. Alternative to template or scoring_config.
llm_api_keystringNoYour OpenAI or Anthropic API key. Required only when using icp_description.
llm_providerstringNoLLM provider to use with icp_description: openai or anthropic.
fetch_signalsbooleanNoIf true, the actor fetches hiring and tech-stack signals for the company automatically before scoring.
include_explanationbooleanNoIf true, adds a score_explanation string to the output describing how the score was derived.
tier_thresholdsobjectNoOptional. Minimum score for each tier as { "tier_a": number, "tier_b": number, "tier_c": number }. Scores at or above tier_a are A, tier_b are B, tier_c are C, else D. Defaults to 80 / 60 / 40.
funded_within_daysintegerNoOptional. How recent a funding round must be to count for the recently_funded signal, in days. Defaults to 540 (18 months).
min_score_to_outputintegerNoIf set, rows scoring below this threshold are skipped from output (not pushed to dataset). Skipped rows are logged only.
previous_scoreintegerNoPrevious ICP score for this company. If provided, output includes score_change and score_trend fields.
gtm_hiring_signalstringNoWhether the company is actively hiring for GTM/sales roles. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
gtm_role_countstringNoNumber of open GTM/sales roles. Scores via the gtm_role_count_strong signal when at or above min_gtm_roles (default 2). Accepts a numeric string (e.g. "8"). Sent as a string for Clay compatibility and coerced to integer at runtime.
uses_hubspotstringNoWhether the company uses HubSpot. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
uses_salesforcestringNoWhether the company uses Salesforce. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
uses_claystringNoWhether the company uses Clay. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
crm_detectedstringNoWhether any CRM was detected. Accepts a boolean-like string ("true"/"false") or any non-empty CRM name (e.g. "Salesforce"). Sent as a string for Clay compatibility and coerced to boolean at runtime. Auto-derived from uses_hubspot/uses_salesforce if not set.
seq_tool_detectedstringNoWhether a sales sequencing tool (Outreach, SalesLoft, Apollo, Lemlist) was detected. Accepts a boolean-like string ("true"/"false") or any non-empty tool name (e.g. "Outreach"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
tech_stackstringNoComma-separated list of technologies. Used to auto-detect CRM/sequencing tools if booleans are not set.
headcountstringNoCurrent employee headcount. Accepts a numeric string (e.g. "3000"). Sent as a string for Clay compatibility and coerced to integer at runtime.
headcount_minintegerNoMinimum headcount for the headcount_in_range signal.
headcount_maxintegerNoMaximum headcount for the headcount_in_range signal.
headcount_in_rangebooleanNoOverride: whether headcount is in your target range.
employee_bandstringNoFirmographic employee band from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g), e.g. "201-500". Scores via employee_band_match when it is in target_employee_bands.
revenue_estimatestringNoEstimated annual revenue in dollars from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Scores via revenue_in_range. Accepts a numeric string (e.g. "50000000"). Coerced to integer at runtime.
hq_locationstringNoHeadquarters location from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored.
founded_yearstringNoYear the company was founded, from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored. Accepts a numeric string (e.g. "2015").
recently_fundedbooleanNoOverride: whether the company was recently funded (within funded_within_days, default 540).
last_funding_datestringNoISO date of last funding round (legacy field; latest_funding_date is preferred). Used to auto-detect recently_funded if the boolean is not set.
latest_funding_datestringNoISO date of the latest funding round (from C1 Funding & Press Signal Scanner when it ships). Drives recently_funded against funded_within_days.
latest_funding_amountstringNoDollar amount of the latest funding round (from C1 when it ships). Scores via well_funded when at or above min_funding_amount (default 1000000). Accepts a numeric string (e.g. "50000000").
funding_stagestringNoFunding stage (e.g. seed, series_a, series_b, growth). Used to infer recently_funded.
industrystringNoThe company's industry (from the Company Firmographic Enricher, Actor ID YlUtLWjfPpqykmB8g).
industry_matchbooleanNoOverride: whether the company's industry matches your target list.
target_industriesstringNoComma-separated list of target industries for the industry_match signal.
social_platforms_foundstringNoNumber of official social platforms found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via social_presence when at or above min_social_platforms (default 2). Accepts a numeric string.
total_followersstringNoTotal social followers across platforms, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via strong_social_following when at or above min_total_followers (default 1000). Accepts a numeric string.
has_linkedinstringNoWhether a company LinkedIn page was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h) or the Domain to LinkedIn URL Resolver (Actor ID 3HtnSaqPHOg1Qg5gx). Contributes to social_presence. Accepts a boolean-like string.
has_twitterstringNoWhether a company X/Twitter profile was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Contributes to social_presence. Accepts a boolean-like string.
job_countstringNoNumber of open jobs found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via active_hiring_volume when at or above min_job_count (default 3). Accepts a numeric string.
keyword_match_countstringNoNumber of target-keyword matches found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via keyword_signal_match when at or above min_keyword_matches (default 1). Accepts a numeric string.

Details

From the project README

ICP Fit Scorer MCP Server

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

Icp Fit Scorer MCP server

An MCP server that scores a company against your ideal customer profile. It wraps the Mamba Labs ICP Fit Scorer actor on Apify and returns a Clay-ready flat JSON row to any MCP client.

What's Inside

What it does

Give it a company domain and a definition of your ICP, and it scores the company on weighted signals, returning a 0 to 100 score, an A to D tier, and a per-signal breakdown. Define your ICP three ways: a prebuilt template, a JSON scoring config, or a plain-English description (which uses your own LLM key). Turn on fetch_signals and the actor will gather hiring and tech-stack signals for you before scoring. One flat row, ready for Clay, a CRM, or an AI agent workflow. All of the scoring runs on Apify. This package is a thin client that calls the actor and hands back the result.

Quick start

You need Node.js 18 or newer and an Apify account with an API token.

Add this to your Claude Desktop config:

{
  "mcpServers": {
    "mamba-icp-scorer": {
      "command": "npx",
      "args": ["-y", "@mambalabsdev/mcp-icp-fit-scorer"],
      "env": {
        "APIFY_TOKEN": "your-apify-token"
      }
    }
  }
}

Get your token at https://console.apify.com/account/integrations, paste it in, and restart Claude Desktop. The score_icp_fit and list_icp_templates tools will be available.

Prerequisites

  • Node.js 18 or newer
  • An Apify account with an API token

Example prompts

  • "Score clay.com against the b2b_saas template and fetch its signals."
  • "How well does stripe.com fit an ICP of mid-market fintech companies? Explain the score."
  • "Score figma.com with my scoring config and include the per-signal breakdown."
  • "Rate openai.com against this ICP description: enterprise AI teams hiring for go-to-market."

Inputs

Every input the tool accepts, generated from the server's own tool list.

score_icp_fit
InputTypeRequiredDescription
company_domainstringyesThe primary domain of the company to score. Example: clay.com
company_namestringnoOptional display name of the company.
templateone of full_signal, saas_outbound, b2b_services, fintech, smb_local, enterprisenoName of a prebuilt scoring config, one of the six the actor ships: full_signal, saas_outbound, b2b_services, fintech, smb_local, enterprise. Alternative to scoring_config or icp_description. Call list_icp_templates to see them.
scoring_configobjectnoJSON object of scoring weights. Alternative to template or icp_description.
icp_descriptionstringnoPlain-English description of your target ICP. Requires llm_api_key. Alternative to template or scoring_config.
llm_api_keystringnoYour OpenAI or Anthropic API key. Required only when using icp_description.
llm_providerone of openai, anthropicnoLLM provider to use with icp_description: openai or anthropic.
fetch_signalsbooleannoIf true, the actor fetches hiring and tech-stack signals for the company automatically before scoring.
include_explanationbooleannoIf true, adds a score_explanation string to the output describing how the score was derived.
tier_thresholdsobjectnoOptional. Minimum score for each tier as { "tier_a": number, "tier_b": number, "tier_c": number }. Scores at or above tier_a are A, tier_b are B, tier_c are C, else D. Defaults to 80 / 60 / 40.
funded_within_daysintegernoOptional. How recent a funding round must be to count for the recently_funded signal, in days. Defaults to 540 (18 months).
min_score_to_outputintegernoIf set, rows scoring below this threshold are skipped from output (not pushed to dataset). Skipped rows are logged only.
previous_scoreintegernoPrevious ICP score for this company. If provided, output includes score_change and score_trend fields.
gtm_hiring_signalstringnoWhether the company is actively hiring for GTM/sales roles. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
gtm_role_countstringnoNumber of open GTM/sales roles. Scores via the gtm_role_count_strong signal when at or above min_gtm_roles (default 2). Accepts a numeric string (e.g. "8"). Sent as a string for Clay compatibility and coerced to integer at runtime.
uses_hubspotstringnoWhether the company uses HubSpot. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
uses_salesforcestringnoWhether the company uses Salesforce. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
uses_claystringnoWhether the company uses Clay. Accepts a boolean-like string ("true"/"false"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
crm_detectedstringnoWhether any CRM was detected. Accepts a boolean-like string ("true"/"false") or any non-empty CRM name (e.g. "Salesforce"). Sent as a string for Clay compatibility and coerced to boolean at runtime. Auto-derived from uses_hubspot/uses_salesforce if not set.
seq_tool_detectedstringnoWhether a sales sequencing tool (Outreach, SalesLoft, Apollo, Lemlist) was detected. Accepts a boolean-like string ("true"/"false") or any non-empty tool name (e.g. "Outreach"). Sent as a string for Clay compatibility and coerced to boolean at runtime.
tech_stackstringnoComma-separated list of technologies. Used to auto-detect CRM/sequencing tools if booleans are not set.
headcountstringnoCurrent employee headcount. Accepts a numeric string (e.g. "3000"). Sent as a string for Clay compatibility and coerced to integer at runtime.
headcount_minintegernoMinimum headcount for the headcount_in_range signal.
headcount_maxintegernoMaximum headcount for the headcount_in_range signal.
headcount_in_rangebooleannoOverride: whether headcount is in your target range.
employee_bandstringnoFirmographic employee band from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g), e.g. "201-500". Scores via employee_band_match when it is in target_employee_bands.
revenue_estimatestringnoEstimated annual revenue in dollars from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Scores via revenue_in_range. Accepts a numeric string (e.g. "50000000"). Coerced to integer at runtime.
hq_locationstringnoHeadquarters location from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored.
founded_yearstringnoYear the company was founded, from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored. Accepts a numeric string (e.g. "2015").
recently_fundedbooleannoOverride: whether the company was recently funded (within funded_within_days, default 540).
last_funding_datestringnoISO date of last funding round (legacy field; latest_funding_date is preferred). Used to auto-detect recently_funded if the boolean is not set.
latest_funding_datestringnoISO date of the latest funding round (from C1 Funding & Press Signal Scanner when it ships). Drives recently_funded against funded_within_days.
latest_funding_amountstringnoDollar amount of the latest funding round (from C1 when it ships). Scores via well_funded when at or above min_funding_amount (default 1000000). Accepts a numeric string (e.g. "50000000").
funding_stagestringnoFunding stage (e.g. seed, series_a, series_b, growth). Used to infer recently_funded.
industrystringnoThe company's industry (from the Company Firmographic Enricher, Actor ID YlUtLWjfPpqykmB8g).
industry_matchbooleannoOverride: whether the company's industry matches your target list.
target_industriesstringnoComma-separated list of target industries for the industry_match signal.
social_platforms_foundstringnoNumber of official social platforms found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via social_presence when at or above min_social_platforms (default 2). Accepts a numeric string.
total_followersstringnoTotal social followers across platforms, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via strong_social_following when at or above min_total_followers (default 1000). Accepts a numeric string.
has_linkedinstringnoWhether a company LinkedIn page was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h) or the Domain to LinkedIn URL Resolver (Actor ID 3HtnSaqPHOg1Qg5gx). Contributes to social_presence. Accepts a boolean-like string.
has_twitterstringnoWhether a company X/Twitter profile was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Contributes to social_presence. Accepts a boolean-like string.
job_countstringnoNumber of open jobs found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via active_hiring_volume when at or above min_job_count (default 3). Accepts a numeric string.
keyword_match_countstringnoNumber of target-keyword matches found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via keyword_signal_match when at or above min_keyword_matches (default 1). Accepts a numeric string.
max_charge_usdnumbernoOptional spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged.
list_icp_templates

No inputs. Returns the six prebuilt template names score_icp_fit accepts, with the actor's note on how they differ. It answers locally: no Apify run, no token, and no charge.

Define your ICP with exactly one of template, scoring_config, or icp_description.

This server exposes the single-company scoring path. The actor also supports batch inputs (a dataset or CSV of companies) and a results webhook. For those, run the actor directly on Apify.

Output

The tool returns the actor's flat JSON row for the scored company, including icp_score (0 to 100), icp_tier (A to D), the per-signal breakdown, and an optional explanation. See the Apify Store page for the full output schema.

Example output

{
  "company_domain": "ramp.com",
  "icp_score": 87,
  "icp_tier": "A",
  "lead_tag": "priority",
  "score_hiring": 25,
  "score_tech_stack": 22,
  "score_headcount": 20,
  "score_funding": 20,
  "score_industry": 0,
  "run_date": "2026-05-28"
}

Features

  • User-defined JSON scoring config with custom weights
  • Returns icp_score (0 to 100), icp_tier (A to D), and lead_tag
  • Per-signal point breakdown: hiring, tech stack, headcount, funding, industry
  • Replaces 6+ manual formula columns in Clay

Pricing

You pay per event on Apify, billed to your own Apify account. Prices from the live pricing record, read 2026-10-16:

EventPrice per event (USD)Fires when
apify-default-dataset-item$0.05 on the Free plan, down to $0.0425 on higher Apify plansSingle result in the default dataset.
apify-actor-start$0.00005Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

The actor's Apify page carries the current prices. Running this server consumes Apify credits.

How each call runs

Each call starts the actor run, polls it until it finishes, then reads the dataset. The run is allowed 1,800 seconds. If the run is still going when this call stops waiting, the call returns the run id and a console link instead of a timeout, so the result is never lost.

Full actor documentation

This server is a thin client and holds no scoring logic. For the complete input and output reference, pricing, and run history, see the Apify Store page:

https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay


Mamba Labs GTM Suite

This server is one of 58 Mamba Labs MCP servers, each backed by a dedicated Apify actor and published under @mambalabsdev on npm. The ones closest to this server:

ActorImmutable Actor ID
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
ICP Fit ScorerW161DT8W4kW55dMFh
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Social Presence Mapper4k6CCemkgBDz18m2h
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6

To get twenty one of them in one install, use @mambalabsdev/mcp-gtm-suite.

Built by Mamba Labs | npm | Apify Store

License

MIT

Built by Mamba Labs. https://apify.com/mambalabs

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.