ICP Fit Scorer
Scores pre-enriched companies against your Ideal Customer Profile using weighted signals. Returns a 0 to 100 fit score, A to D tier, and per-signal breakdown. Deterministic and LLM modes. Built for Clay enrichment and batch processing. MCP-ready for Claude Desktop and AI agents.
Install
npx @mambalabsdev/mcp-icp-fit-scorerUse Cases
- Lead prioritization. Score every company in your pipeline from 0-100 against your custom ICP criteria, then route A-tier leads to sales and B/C-tier to nurture.
- Clay enrichment column. Add icp_score, icp_tier, and a full signal breakdown as flat columns in your Clay table.
Features
- icp_score 0 to 100 and an A to D tier
- lead_tag: priority, nurture or disqualify
- Per-source score breakdown, 8 categories
- 23 flat fields, snake_case, one row per company
- Plain-English mode builds the config for you
Input
company_domainstringrequiredIdentity for the row.
company_namestringoptionalIdentity for the row, used in the output and for attribution.
scoring_configobjectoptionalExact weights per signal. Must sum to 100.
templatestringoptionalOne of six presets instead of writing a config.
icp_descriptionstringoptionalPlain-English mode. llm_provider defaults to openai.
llm_api_keystringoptionalYour own model key, required only for plain-English mode.
tier_thresholdsobjectoptionalA, B and C cutoffs.
funded_within_daysintegeroptionalThe funding recency window.
fetch_signalsbooleanoptionalLet the actor pull signals itself instead of you supplying them. When off, you supply the signal fields; all are optional and anything absent lands in signals_missing. Default: false.
apify_tokenstringoptionalYour Apify token, required only when fetch_signals is on.
include_explanationbooleanoptionalReturn score_explanation. Default: false.
min_score_to_outputintegeroptionalSuppress rows below this score.
previous_scoreintegeroptionalUnlocks delta tracking.
dataset_idstringoptionalBatch input source. An existing Apify dataset to score.
csv_urlstringoptionalBatch input source. A CSV of companies to score.
webhook_urlstringoptionalPost results onward.
Output schema
{
"company_domain": "example.com",
"company_name": "Example Inc",
"icp_score": 78,
"icp_tier": "B",
"lead_tag": "nurture",
"score_hiring": 20,
"score_tech_stack": 18,
"score_headcount": 15,
"score_firmographic": 10,
"score_industry": 10,
"score_funding": 5,
"score_social": 0,
"score_job_board": 0,
"signals_matched": ["gtm_hiring_signal", "crm_detected", "headcount_in_range"],
"signals_missing": ["total_followers", "job_count"],
"config_source": "template:saas_outbound",
"previous_score": 55,
"score_delta": 23,
"score_direction": "up",
"run_date": "2026-06-18T16:20:26.776Z",
"error": null
}Pricing
Pay-per-event billing on the Apify platform. You are charged only when the actor returns a result. No subscription, no seat license.
Free-tier Apify accounts include monthly free compute. Upgrade for higher concurrency and volume.