leadpipe-mcp
LeadPipe MCP
Model Context Protocol을 위한 AI 기반 리드 자격 검증 엔진
LeadPipe는 모든 소스에서 리드를 수집하고, 회사 데이터로 보강하며, 구성 가능한 AI 규칙을 사용하여 0-100점으로 점수를 매기고, 자격을 갖춘 리드를 CRM으로 내보냅니다. 이 모든 과정은 MCP 프로토콜을 통해 이루어집니다.
주요 기능
리드 수집: 웹훅, 양식, API 또는 CSV를 통한 단일 또는 배치(최대 100개) 수집
자동 보강: 회사 데이터(산업, 규모, 국가, 기술 스택)를 통한 보강 (Hunter.io 또는 도메인 휴리스틱 사용)
AI 점수 엔진: 6가지 가중치 차원 + 사용자 지정 규칙을 사용한 점수 산정 (0-100점)
CRM 내보내기: HubSpot, Pipedrive, CSV 또는 JSON으로 내보내기
ICP 사전 자격 검증: 보강 크레딧을 사용하기 전에 무료 이메일/직함/국가/기술 스택을 기준으로 리드 필터링
파이프라인 분석: 실시간 통계, 점수 분포, 전환율 제공
구성 가능: 점수 가중치, 고가치 직함/산업, 사용자 지정 규칙 설정 가능
10개의 MCP 도구 + 3개의 MCP 리소스: 전체 리드 수명 주기 지원
Related MCP server: @bingeljell/lead-gen-mcp
빠른 시작
MCPize 마켓플레이스에서 설치
mcpize.com에서 LeadPipe MCP 검색
설치를 클릭하고 구독 등급 선택
MCP 호환 클라이언트(Cursor, VS Code 등)에서 도구와 리소스를 즉시 사용 가능
소스에서 빌드
git clone https://github.com/enzoemir1/leadpipe-mcp.git
cd leadpipe-mcp
npm ci
npm run buildMCP 클라이언트 설정에 추가:
{
"mcpServers": {
"leadpipe": {
"command": "node",
"args": ["path/to/leadpipe-mcp/dist/index.js"]
}
}
}도구
lead_qualify
보강 크레딧을 사용하기 전에 이상적인 고객 프로필(ICP)을 기준으로 리드를 필터링합니다. 이메일 도메인, 직함, 국가, 산업, 회사 규모, 기술 스택 등 로컬에서 사용 가능한 신호만 사용하므로 Hunter.io, HubSpot 또는 Pipedrive에 비용이 청구되지 않습니다.
{
"criteria": {
"reject_freemail": true,
"required_title_keywords": ["vp", "director", "head", "founder"],
"target_countries": ["US", "CA", "GB"],
"min_company_size": "11-50",
"required_tech_stack": ["shopify"]
},
"auto_disqualify": true
}리드별 자격 여부 결정, 이유 및 예상 크레딧 절감액을 반환합니다.
플랫폼 감지 도구와 함께 사용하면 좋습니다. Detecto (
detect_platform)와 같은 도구를lead_qualify앞에 연결하면, 감지된 기술 스택이company.tech_stack에 채워지며,required_tech_stack을 통해 잘못된 플랫폼의 리드를 보강이나 점수 산정 전에 걸러낼 수 있습니다.
lead_ingest
파이프라인에 단일 리드를 추가합니다.
{
"email": "jane@acme.com",
"first_name": "Jane",
"last_name": "Smith",
"job_title": "VP of Engineering",
"company_name": "Acme Corp",
"company_domain": "acme.com",
"source": "website_form",
"tags": ["demo-request"]
}lead_batch_ingest
한 번에 1-100개의 리드를 추가합니다. 중복 항목은 자동으로 건너뜁니다.
{
"leads": [
{ "email": "lead1@corp.com", "job_title": "CEO" },
{ "email": "lead2@startup.io", "job_title": "CTO" }
]
}lead_enrich
이메일 도메인을 사용하여 회사 데이터로 리드를 보강합니다.
{ "lead_id": "uuid-of-lead" }반환값: 회사명, 산업, 규모, 국가, 기술 스택, LinkedIn URL.
lead_score
자격 점수(0-100)를 계산합니다. 60점 이상인 리드는 **자격 있음(qualified)**으로 표시됩니다.
{ "lead_id": "uuid-of-lead" }점수와 6가지 차원 전반에 걸친 상세 분석을 반환합니다.
lead_search
페이지네이션을 사용하여 리드를 검색하고 필터링합니다.
{
"query": "acme",
"status": "qualified",
"min_score": 60,
"limit": 20,
"offset": 0
}lead_export
리드를 CRM 또는 파일 형식으로 내보냅니다.
{
"target": "hubspot",
"min_score": 60
}대상: hubspot, pipedrive, csv, json
Google Sheets 내보내기는 로드맵에 있습니다. 현재는 Sheets에서 바로 사용할 수 있는 형식의 데이터를 반환합니다.
pipeline_stats
파이프라인 분석을 가져옵니다. 입력이 필요하지 않습니다.
반환값: 총 리드 수, 상태/소스별 분류, 평균 점수, 점수 분포, 자격 획득률, 오늘/이번 주/이번 달 리드 수.
config_scoring
점수 산정 구성을 확인하거나 업데이트합니다.
{
"job_title_weight": 0.30,
"high_value_titles": ["ceo", "cto", "vp", "founder"],
"custom_rules": [
{
"field": "company_industry",
"operator": "equals",
"value": "fintech",
"points": 15,
"description": "Bonus for fintech companies"
}
]
}리소스
리소스 | 설명 |
| 가장 최근에 추가된 리드 50개 |
| 상태별 개수, 점수, 전환율을 포함한 파이프라인 요약 |
| 현재 점수 산정 엔진 구성 |
점수 산정 엔진
리드는 6가지 차원의 가중 평균을 사용하여 0-100점으로 점수가 매겨집니다:
차원 | 기본 가중치 | 작동 방식 |
직함 | 25% | C-level/창업자: 100, VP/이사: 85, 매니저: 65, 시니어: 50, 주니어: 15 |
회사 규모 | 20% | 선호 규모(11-50, 51-200, 201-500): 90, 기타 규모에 따라 조정 |
산업 | 20% | 고가치 산업(SaaS, 핀테크 등): 90, 기타: 40 |
참여도 | 15% | 전화번호 제공, 전체 이름, 태그, 소스 유형 (랜딩 페이지 > CSV) |
최신성 | 10% | 오늘: 100, 지난주: 75, 지난달: 35, 3개월 이상: 5 |
사용자 지정 규칙 | 10% | 사용자 정의 규칙 (각 -50 ~ +50점) |
공식: score = sum(dimension_score * weight)
60점 이상인 리드는 **자격 있음(qualified)**입니다. 60점 미만은 **자격 없음(disqualified)**입니다.
CRM 통합
HubSpot
HUBSPOT_API_KEY 환경 변수를 HubSpot 비공개 앱 액세스 토큰으로 설정하세요.
export HUBSPOT_API_KEY="pat-xxx-xxx"Pipedrive
PIPEDRIVE_API_KEY 환경 변수를 설정하세요.
export PIPEDRIVE_API_KEY="xxx"CSV / JSON
별도의 구성이 필요하지 않습니다. 내보내기 시 데이터를 직접 반환합니다.
보강
LeadPipe는 리드의 이메일에서 도메인을 추출하여 회사 데이터를 조회합니다:
Hunter.io (
HUNTER_API_KEY가 설정된 경우) — 조직, 산업, 국가, 기술 스택 반환도메인 휴리스틱 — 알려진 도메인을 회사 데이터에 매핑
무료 이메일 감지 — gmail.com, yahoo.com 등은 플래그 처리됨 (회사 보강 없음)
가격
등급 | 가격 | 리드/월 | 기능 |
무료 | $0 | 25 | 수집, 수동 점수 산정, ICP 사전 자격 검증 |
Pro | $19/월 | 300 | AI 점수 산정, Hunter.io 보강, CRM 내보내기 |
비즈니스 | $39/월 | 2,500 | 파이프라인 분석, 사용자 지정 규칙, 우선 지원 |
에이전시 | $99/월 | 10,000 | 다중 클라이언트, 화이트 라벨 내보내기 |
MCPize 마켓플레이스에서 이용 가능합니다.
개발
npm run dev # Hot reload development
npm run build # Production build
npm test # Run unit tests
npm run inspect # Open MCP InspectorPro 라이선스
LeadPipe는 무료 모드로 제공됩니다 — lead_demo_seed, lead_ingest, lead_batch_ingest, lead_search, lead_score, config_scoring은 공개되어 있습니다. 다음 도구는 Pro 라이선스가 필요합니다:
lead_qualify— ICP 사전 필터lead_enrich— 도메인 지식 기반 보강lead_export— HubSpot / Pipedrive / Google Sheets / CSV / JSONpipeline_stats— 포트폴리오 분석
Pro 라이선스 구매 (€19, 평생, 3대 기기): https://automatiabcn.lemonsqueezy.com/buy/360565a3-2577-45e2-93dd-1548a881f456
또는 Indie MCP Stack Bundle (€69, 4개 서버 모두 포함)를 구매하세요.
그런 다음 환경 변수를 설정하여 활성화하세요:
export LEMONSQUEEZY_LICENSE_KEY=YOUR-KEY-HERE또는 Claude Desktop / MCP 클라이언트 설정에서:
{
"mcpServers": {
"leadpipe-mcp": {
"command": "npx",
"args": ["-y", "leadpipe-mcp-server"],
"env": { "LEMONSQUEEZY_LICENSE_KEY": "YOUR-KEY-HERE" }
}
}
}인증은 로컬에 24시간 동안 캐시되므로, 첫 실행 후에는 서버가 완전히 오프라인 상태에서도 작동합니다.
라이선스
MIT 라이선스. 자세한 내용은 LICENSE를 참조하세요.
Automatia BCN 제작.
Available Tools
10 toolsconfig_scoringScoring ConfigurationAIdempotent
View or update the global lead scoring configuration used by lead_score. Call with no fields (empty object) to fetch the current config. Pass any subset of fields to patch-update: six dimension weights (each 0–1, should sum to ~1 but not enforced), high_value_titles (string array), high_value_industries (string array), preferred_company_sizes, and custom_rules (array of {name, condition, points}). Changes apply to future lead_score calls only — previously scored leads keep their scores until re-scored.
| Name | Required | Description | Default |
|---|---|---|---|
| job_title_weight | No | Weight for the job_title dimension (0–1). Default 0.25. The six weights should sum to ~1 but it is not strictly enforced. | |
| company_size_weight | No | Weight for the company_size dimension (0–1). Default 0.20. | |
| industry_weight | No | Weight for the industry dimension (0–1). Default 0.20. | |
| engagement_weight | No | Weight for the engagement dimension (0–1). Default 0.15. | |
| recency_weight | No | Weight for the recency dimension (0–1). Default 0.10. Recently created leads score higher. | |
| custom_rules_weight | No | Weight for the custom_rules dimension (0–1). Default 0.10. | |
| high_value_titles | No | Lowercase substrings that mark a job_title as high-value. Defaults: ["ceo", "cto", "vp", "director", "head", "founder", "owner", "manager"]. Match is case-insensitive substring. | |
| high_value_industries | No | Lowercase substrings that mark a company industry as high-value. Defaults: ["saas", "technology", "software", "fintech", "ecommerce", "marketing", "consulting"]. | |
| preferred_company_sizes | No | Company size tiers earning the maximum company_size_score. Defaults: ["11-50", "51-200", "201-500"]. | |
| custom_rules | No | Array of custom scoring rules. Each rule is {field, operator, value, points (-50..+50), description}. Replaces the existing rule list when provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and non-destructive. The description adds valuable context: updates are partial (patch-style), and changes do not affect previously scored leads until re-scored. This goes beyond annotations to explain the temporal scope of mutations.
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?
The description is a single compact paragraph of four sentences. It front-loads the primary verb ('View or update'), covers both usage modes, and lists parameter groups without redundancy. Could potentially be split into bullet points for better scanability, but it is sufficiently concise.
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?
For a read/write configuration tool with no output schema, the description should describe the return value format. It mentions 'fetch the current config' but does not specify the structure of the response (e.g., that it mirrors the input schema fields). Additionally, no mention of error handling, authentication, or rate limits. Given the complexity (10 parameters, nested custom_rules), the output format is a meaningful gap.
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?
Input schema has 100% description coverage, so baseline is 3. The description adds default values (e.g., 'Default 0.25' for job_title_weight), explains constraints ('each 0–1, should sum to ~1 but not enforced'), and clarifies behavior like 'replaces the existing rule list when provided' for custom_rules. This adds significant context beyond the schema.
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 description clearly states the dual purpose: 'View or update the global lead scoring configuration.' It specifies the exact verb-resource pair and distinguishes from sibling tools like `lead_score` by noting that the config applies to future calls only.
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?
Explicitly instructs when to fetch ('call with no fields') and when to update ('pass any subset of fields'). It also clarifies scope ('Changes apply to future lead_score calls only') and sets expectations about previously scored leads. However, it does not explicitly list sibling tools to avoid or conditions under which to avoid using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_batch_ingestBatch Ingest LeadsAIdempotent
Add 1 to 100 leads in a single call. Each lead uses the same schema as lead_ingest. Returns {ingested: Lead[], skipped: Array<{email, reason}>} — duplicates are skipped (not failed) so a partial batch still succeeds. Prefer this over repeated lead_ingest calls for bulk imports (CSV/webhook drops).
| Name | Required | Description | Default |
|---|---|---|---|
| leads | Yes | Array of 1–100 leads, each using the same shape as lead_ingest input. Duplicates within the batch and against existing pipeline emails are SKIPPED (not failed) — partial success is the norm. Returns {ingested: Lead[], skipped: Array<{email, reason}>}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that duplicates are skipped (not failed) so partial batches succeed, and specifies the return structure with ingested and skipped arrays. This adds significant detail beyond annotations, which only indicate idempotency and non-destructiveness.
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?
Three sentences, all essential: action and limits, behavior on duplicates, and usage guidance. Front-loaded with core purpose.
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?
Given the single parameter and no output schema, the description covers all important aspects: batch size, duplicate handling, return format, and comparison to sibling tool. Nothing missing.
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 coverage is 100% with detailed property descriptions. The description adds the response shape and references the sibling tool's schema, which is helpful since no output schema is provided. Baseline is 3, but the added output semantics justify a 4.
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 description clearly states 'Add 1 to 100 leads in a single call,' specifying the action and resource. It distinguishes from sibling tool lead_ingest by mentioning bulk imports and directs users to prefer this over repeated calls.
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?
Explicitly advises 'Prefer this over repeated lead_ingest calls for bulk imports (CSV/webhook drops),' giving clear context on when to use this tool and when to use the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_demo_seedSeed Demo LeadsA
Populate the pipeline with a realistic demo dataset: 14 leads across 5 archetypes (hot decision-makers, warm mid-level, cold junior/small-co, raw unenriched, and disqualified). Each lead has appropriate enrichment state, scoring breakdown, and status, so every downstream tool — lead_list, lead_search, lead_score, crm_export, and the pipeline-overview resource — returns meaningful output immediately. Use this to evaluate LeadPipe via MCP Inspector without Hunter, HubSpot, or Pipedrive API keys. Safe to call multiple times; each call appends a fresh batch with new UUIDs. Returns counts by status plus sample_lead_ids you can feed into lead_enrich, lead_score, or crm_export.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide limited behavioral detail (readOnlyHint=false, destructiveHint=false). The description adds valuable context: each call appends a fresh batch with new UUIDs, returns counts by status and sample IDs. No contradictions.
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?
Concise paragraph front-loading the core action. Every sentence adds value: counts, archetypes, enrichment state, downstream tools, use case, safety, return info. No waste.
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?
Despite no output schema, the description fully explains return values (counts by status plus sample_lead_ids) and mentions use with other tools. Complete for a demo seeding tool.
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?
No parameters exist in the input schema, so the description cannot add meaning beyond schema. With 100% coverage, baseline is 4. No additional parameter info needed.
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 description clearly states the tool's purpose: 'Populate the pipeline with a realistic demo dataset: 14 leads across 5 archetypes'. It uses specific verbs and resources, distinguishing it from sibling tools like lead_ingest and lead_batch_ingest.
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?
Explicitly states when to use: 'Use this to evaluate LeadPipe via MCP Inspector without Hunter, HubSpot, or Pipedrive API keys'. Also notes it is safe to call multiple times. Could improve by suggesting alternatives for real data, but current guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_enrichEnrich LeadAIdempotent
Derive and attach company data to an existing lead using the email domain: company name, industry, size, country, website, estimated headcount, and common tech stack. Does not call external APIs — enrichment is driven by the built-in domain knowledge base. Updates the lead in place and returns the enriched record, ready for lead_score. Run this before lead_score for the best qualification accuracy.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | UUID of the lead to enrich (returned by lead_ingest or lead_search) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent, non-destructive, mutable. Description adds that it updates the lead in place and returns the enriched record, aligning with annotations. Could specify behavior if domain not found, but overall sufficient.
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?
Three sentences efficiently cover purpose, behavior, and sequencing advice. No redundant information, every sentence adds value.
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?
For a single-param tool with no output schema, the description covers input, behavior, and recommendation. Minor gap: no mention of error cases (e.g., missing domain). Still comprehensive.
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 describes lead_id as UUID from lead_ingest/lead_search. Description adds context that enrichment uses email domain, implying lead must have one. This adds value beyond schema, so above baseline of 3.
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 description clearly states the tool enriches a lead with company data using the email domain, listing specific fields. It distinguishes from siblings by advising to run before lead_score for accuracy.
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?
Provides context that enrichment uses built-in knowledge base (no external API) and recommends ordering before lead_score. Could explicitly mention when not to use or alternative tools, but current guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_exportExport LeadsAIdempotent
Push leads to an external destination. target must be one of "hubspot", "pipedrive", "google_sheets", "csv", or "json". For CRM targets (hubspot, pipedrive) the respective API key env var must be set (HUBSPOT_API_KEY, PIPEDRIVE_API_TOKEN) — if missing, the tool returns a dry-run payload instead of erroring. Filter the export via lead_ids (explicit list) or min_score (everything above threshold). Returns {target, count, summary, errors?}.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_ids | No | Explicit list of lead UUIDs to export. If omitted, every lead matching min_score (or all leads, when min_score is also omitted) is exported. | |
| target | Yes | Where to send the leads. "hubspot" / "pipedrive" require HUBSPOT_API_KEY / PIPEDRIVE_API_TOKEN env vars — without them, the tool returns a dry-run payload instead of erroring. "google_sheets" requires GOOGLE_SHEETS_CREDENTIALS. "csv" / "json" produce inline output you can pipe to disk. | |
| min_score | No | Inclusive minimum score for inclusion. Use 60+ for "qualified-only" exports. Ignored when lead_ids is provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark idempotentHint true and destructiveHint false. The description adds key behavioral details: dry-run when API keys missing, return payload shape (target, count, summary, errors?). No contradictions.
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?
Three concise sentences front-loaded with the main action, followed by essential details. No redundant or vague statements. Every sentence earns its place.
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?
Covers parameters, behavior with missing env vars, filtering options, and return structure. Lacks details on error format or summary structure, but the overall description is adequate for a tool with 3 params and no nested objects.
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 covers 100% of parameters. Description adds value beyond schema by explaining env var requirements for CRM targets, dry-run behavior, and filtering logic (lead_ids vs min_score). This compensates for any ambiguity in the schema.
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 description clearly states 'Push leads to an external destination' and enumerates specific targets (hubspot, pipedrive, google_sheets, csv, json). This distinguishes it from siblings which focus on scoring, ingestion, enrichment, search, etc. No ambiguity.
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?
Provides clear context: when to export, required env vars for CRM targets, and fallback dry-run behavior. However, it does not explicitly state when NOT to use this tool or mention alternatives among siblings, though the purpose differentiation is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_ingestIngest LeadAIdempotent
Add a single lead to the pipeline. Required: email. Optional: first_name, last_name, job_title, company_name, phone, source ("website"|"linkedin"|"referral"|"event"|"cold_outreach"|"partner"|"other"), tags (string array), custom_fields. Returns the stored lead object with a generated UUID, initial status="new", created_at, and a null score (run lead_score to populate). Throws a duplicate error if the email is already in the pipeline — use lead_search first if you need upsert behaviour.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Business email address. Required and used as the unique key — duplicate emails are rejected, not upserted. Example: "alex@acme.com". | ||
| first_name | No | Optional first name. Stored verbatim and used for personalization in CRM exports. | |
| last_name | No | Optional last name. Combined with first_name to populate full_name on the stored lead. | |
| phone | No | Optional phone number in any format. Stored verbatim and forwarded to CRM exports. | |
| job_title | No | Job title used by lead_score for the job_title dimension. High-value titles (ceo, cto, vp, director, head, founder) earn the highest points. Configurable via config_scoring.high_value_titles. | |
| company_name | No | Company display name. If omitted, lead_enrich will derive it from the email domain. | |
| company_domain | No | Company root domain (e.g. "acme.com"). If omitted, derived from the email. Used by lead_enrich for the domain knowledge-base lookup. | |
| source | No | Where the lead originated. One of: website_form, landing_page, api, csv_import, manual, webhook. Defaults to "api". | api |
| source_detail | No | Free-text refinement of source — e.g. "homepage hero form", "Q1 webinar", "Reddit r/SaaS post". | |
| tags | No | Free-form tags for downstream filtering in lead_search and lead_export. Example: ["enterprise", "follow_up", "demo_requested"]. | |
| custom_fields | No | Arbitrary string→string metadata. Use for UTM parameters, A/B test variants, or anything you want to preserve through scoring and export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explains duplicate error on re-ingestion, which contradicts idempotentHint=true annotation. Annotation contradiction reduces score to 1.
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?
Concise paragraph covering purpose, params, return structure, and error handling. No fluff, front-loaded with key info.
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?
Despite no output schema, description fully details return object (UUID, status, timestamps). Mentions error condition and related tools (lead_search, lead_score). Complete for 11-param tool.
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?
Input schema has 100% coverage with detailed descriptions. Description adds minimal value by summarizing required/optional but does not exceed schema detail. Baseline 3 + marginal gain = 4.
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?
Clear verb-resource pair 'Add a single lead' with explicit required/optional params and return object. Distinguishes from sibling batch ingest by specifying single lead.
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?
States required field (email), explicitly advises using lead_search for upsert behavior, and mentions lead_score to populate score. Provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_qualifyICP Pre-Qualification (Pre-Enrichment Filter)AIdempotent
Filter leads against your Ideal Customer Profile BEFORE spending enrichment credits. Uses only locally-available signals (email domain, job_title, country, industry hints, tech_stack) so nothing is charged to Hunter.io, HubSpot, Pipedrive, or any other external service. Set auto_disqualify=true to also update rejected leads to status="disqualified" with the reject reasons stored in custom_fields. If lead_ids is omitted, evaluates every lead currently in status="new". Pairs naturally with upstream platform-detection tools (e.g. Detecto's detect_platform) — run that first to populate company.tech_stack, then run lead_qualify with required_tech_stack=["shopify"] to drop wrong-platform leads before they cost a single API call. Returns qualified/rejected counts, per-lead reasons, and an estimated credit savings figure.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_ids | No | Specific lead IDs to evaluate. If omitted, evaluates all leads with status="new". | |
| criteria | Yes | At least one criterion is required. All provided criteria must pass for a lead to qualify. | |
| auto_disqualify | No | If true, rejected leads have status set to "disqualified" and reasons stored in custom_fields. If false (default), just returns the evaluation without mutating storage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool uses only locally-available signals (no external API calls), explains mutation behavior with auto_disqualify, and specifies return values (counts, reasons, credit savings). Annotations already indicate readOnlyHint=false and idempotentHint=true, and the description complements these without contradiction.
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?
The description is a concise 6-sentence paragraph with no redundancy. It progresses logically: purpose, behavioral notes, usage example, return info. Every sentence adds value.
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?
The description covers key aspects: purpose, behavior, usage with siblings, and returns. However, it lacks details on the exact return structure and estimation method for credit savings. Given the complexity of nested criteria, these minor gaps prevent a perfect score.
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?
With 100% schema coverage, baseline is 3. The description adds value by explaining the AND logic for criteria and the use of required_tech_stack with Detecto. It provides context beyond schema descriptions, justifying a 4.
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 description explicitly states it filters leads against an Ideal Customer Profile before enrichment, providing a specific verb+resource+scope. It distinguishes from sibling tools like lead_enrich and lead_score by emphasizing pre-enrichment filtering and saving credits.
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?
The description provides clear when-to-use guidance (before enrichment), explains the auto_disqualify behavior, and suggests chaining with Detecto's detect_platform. It also clarifies default behavior when lead_ids is omitted, effectively covering usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_scoreScore LeadAIdempotent
Compute a 6-dimensional qualification score (0-100) for a lead: job_title, company_size, industry, engagement, recency, and custom_rules. Each dimension is weighted via config_scoring; the final score is their weighted average. Updates the lead status to "qualified" (≥60) or "disqualified" (<60) and stores score_breakdown alongside the total. Returns the updated lead with the breakdown. Run lead_enrich first for the most accurate industry/size signals.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | UUID of the lead to score |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description confirms mutation (lead status update) and idempotency (weighted average of dimensions), adding details beyond annotations (thresholds, breakdown storage). No contradiction with annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true).
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?
Three sentences concisely cover dimensions, weighting, status update, return value, and prerequisite. No redundant words; information is front-loaded.
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?
Given tool complexity (6 dimensions, weighted scoring, status mutation, prerequisite), description covers all essential aspects. No output schema, but return value is described as updated lead with breakdown.
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?
Input schema has full coverage (100%) with detailed description of lead_id (UUID format). Description adds no param-specific info beyond schema, so 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 description clearly states the tool computes a 6-dimensional qualification score, updates lead status, and stores breakdown, with specific verb 'compute' and resource 'lead'. It distinguishes from siblings like lead_enrich and lead_qualify by detailing the multi-dimensional scoring and status update.
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?
The description explicitly advises to 'Run lead_enrich first for the most accurate industry/size signals', providing a clear precondition. While it doesn't explicitly state when not to use, the context and singleton parameter make usage straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_searchSearch LeadsARead-onlyIdempotent
Search and filter the lead pipeline. Optional filters: query (free-text over name/email/company), status ("new"|"qualified"|"disqualified"|"contacted"|"converted"), min_score, max_score, source, tags (array), date_from/date_to. Pagination via limit (default 50, max 200) and offset. Returns {total, leads[]}. Use this to drive exports, targeted scoring, and dashboards.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Case-insensitive substring search over email, first_name, last_name, job_title, and company.name. AND-combined with the other filters. | |
| status | No | Restrict to a single status: new (just ingested), enriched (lead_enrich done), scored (has score), qualified (score ≥ threshold), disqualified, exported, archived. | |
| min_score | No | Inclusive lower bound on score (0–100). Combine with status="qualified" for high-priority follow-up lists. | |
| max_score | No | Inclusive upper bound on score (0–100). Useful for review queues — e.g. min_score=40, max_score=60 to surface borderline leads. | |
| source | No | Filter to a single source channel. | |
| tags | No | Tags that must ALL be present on the lead (AND semantics). Empty array is ignored. | |
| limit | No | Page size, 1–100. Defaults to 20. | |
| offset | No | Number of results to skip for pagination. Defaults to 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe, read-only operation. The description adds that it returns {total, leads[]} and mentions API behavior but doesn't contradict annotations.
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?
The description is concise (4 sentences), front-loaded with purpose, then lists filters, pagination, return format, and use cases. No wasted words.
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?
Given 8 optional parameters and no output schema, the description covers all filters, pagination, return shape, and primary use cases. It lacks explanation of status field semantics but the schema's enum descriptions compensate.
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?
Input schema describes all 8 parameters with 100% coverage. The description adds value by explaining AND-combined filters and providing usage examples like 'min_score=40, max_score=60 for borderline leads', which improves understanding beyond the schema.
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 description clearly states 'Search and filter the lead pipeline' and lists specific use cases like exports and dashboards, distinguishing it from sibling tools such as lead_ingest, lead_qualify, and lead_score.
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?
The description suggests when to use the tool ('drive exports, targeted scoring, and dashboards') but does not explicitly state when not to use it or name alternative tools. However, the context of siblings implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_statsPipeline StatisticsARead-onlyIdempotent
Portfolio-wide pipeline analytics across all leads. Returns {total_leads, leads_today, leads_this_week, leads_this_month, avg_score, qualified_rate (percent), by_status (counts per status), by_source (counts per source), score_distribution}. Takes no input — always aggregates the full dataset. Ideal for dashboards, stand-ups, and conversion-rate tracking.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false. Description adds value by detailing the return shape and confirming full-dataset aggregation. No contradictions. Could mention performance or data freshness.
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?
Two sentences, no fluff. Lists return fields compactly and front-loads the core purpose. Every sentence earns its place with zero redundancy.
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?
Given no output schema, description fully specifies all return fields and their structure. Complexity is low (no params). Use cases are covered. No missing information for an agent to understand when and how to invoke it.
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?
Input schema has zero parameters (100% coverage). Description reinforces 'Takes no input', confirming behavior. With 0 parameters, baseline is 4; description adds no extra param semantics but correctly describes the lack of parameters.
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?
Description clearly states it provides portfolio-wide pipeline analytics across all leads, lists all returned fields, and distinguishes from sibling tools like lead_score (individual scoring) by emphasizing aggregation. The verb 'Returns' and context 'Ideal for dashboards...' firmly establish purpose.
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?
Explicitly states 'Takes no input — always aggregates the full dataset' and recommends uses: 'dashboards, stand-ups, and conversion-rate tracking'. Does not explicitly list when not to use, but the context and sibling tool names (e.g., lead_search for filtered queries) imply boundaries.
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.
9 tool updates
v1.4.2- Changed
config_scoring15 fields changed- added
Input schema / properties / company_size_weight / descriptionAdded value: +"Weight for the company_size dimension (0–1). Default 0.20." - added
Input schema / properties / custom_rules / descriptionAdded value: +"Array of custom scoring rules. Each rule is {field, operator, value, points (-50..+50), description}. Replaces the existing rule list when provided." - added
Input schema / properties / custom_rules / items / properties / description / descriptionAdded value: +"Human-readable description shown in score_breakdown.details so users understand why a lead got the points." - added
Input schema / properties / custom_rules / items / properties / field / descriptionAdded value: +"Lead field to evaluate. Dot-paths are supported (e.g. \"email\", \"job_title\", \"company.industry\", \"custom_fields.utm_source\")." - added
Input schema / properties / custom_rules / items / properties / operator / descriptionAdded value: +"How field is compared to value: \"equals\" / \"contains\" / \"starts_with\" / \"ends_with\" for strings, \"gt\" / \"lt\" for numeric, or \"regex\" for full pattern match." - added
Input schema / properties / custom_rules / items / properties / points / descriptionAdded value: +"Score adjustment when the rule matches. Range -50..+50. Positive boosts the lead, negative penalizes." - added
Input schema / properties / custom_rules / items / properties / value / descriptionAdded value: +"Comparison value as a string. For numeric operators (gt/lt) the string is parsed as a number. For regex it is the pattern." - added
Input schema / properties / custom_rules_weight / descriptionAdded value: +"Weight for the custom_rules dimension (0–1). Default 0.10." - added
Input schema / properties / engagement_weight / descriptionAdded value: +"Weight for the engagement dimension (0–1). Default 0.15." - added
Input schema / properties / high_value_industries / descriptionAdded value: +"Lowercase substrings that mark a company industry as high-value. Defaults: [\"saas\", \"technology\", \"software\", \"fintech\", \"ecommerce\", \"marketing\", \"consulting\"]." - added
Input schema / properties / high_value_titles / descriptionAdded value: +"Lowercase substrings that mark a job_title as high-value. Defaults: [\"ceo\", \"cto\", \"vp\", \"director\", \"head\", \"founder\", \"owner\", \"manager\"]. Match is case-insensitive substring." - added
Input schema / properties / industry_weight / descriptionAdded value: +"Weight for the industry dimension (0–1). Default 0.20." - added
Input schema / properties / job_title_weight / descriptionAdded value: +"Weight for the job_title dimension (0–1). Default 0.25. The six weights should sum to ~1 but it is not strictly enforced." - added
Input schema / properties / preferred_company_sizes / descriptionAdded value: +"Company size tiers earning the maximum company_size_score. Defaults: [\"11-50\", \"51-200\", \"201-500\"]." - added
Input schema / properties / recency_weight / descriptionAdded value: +"Weight for the recency dimension (0–1). Default 0.10. Recently created leads score higher."
- Changed
lead_batch_ingest12 fields changed- added
Input schema / properties / leads / descriptionAdded value: +"Array of 1–100 leads, each using the same shape as lead_ingest input. Duplicates within the batch and against existing pipeline emails are SKIPPED (not failed) — partial success is the norm. Returns {ingested: Lead[], skipped: Array<{email, reason}>}." - added
Input schema / properties / leads / items / properties / company_domain / descriptionAdded value: +"Company root domain (e.g. \"acme.com\"). If omitted, derived from the email. Used by lead_enrich for the domain knowledge-base lookup." - added
Input schema / properties / leads / items / properties / company_name / descriptionAdded value: +"Company display name. If omitted, lead_enrich will derive it from the email domain." - added
Input schema / properties / leads / items / properties / custom_fields / descriptionAdded value: +"Arbitrary string→string metadata. Use for UTM parameters, A/B test variants, or anything you want to preserve through scoring and export." - added
Input schema / properties / leads / items / properties / email / descriptionAdded value: +"Business email address. Required and used as the unique key — duplicate emails are rejected, not upserted. Example: \"alex@acme.com\"." - added
Input schema / properties / leads / items / properties / first_name / descriptionAdded value: +"Optional first name. Stored verbatim and used for personalization in CRM exports." - added
Input schema / properties / leads / items / properties / job_title / descriptionAdded value: +"Job title used by lead_score for the job_title dimension. High-value titles (ceo, cto, vp, director, head, founder) earn the highest points. Configurable via config_scoring.high_value_titles." - added
Input schema / properties / leads / items / properties / last_name / descriptionAdded value: +"Optional last name. Combined with first_name to populate full_name on the stored lead." - added
Input schema / properties / leads / items / properties / phone / descriptionAdded value: +"Optional phone number in any format. Stored verbatim and forwarded to CRM exports." - added
Input schema / properties / leads / items / properties / source / descriptionAdded value: +"Where the lead originated. One of: website_form, landing_page, api, csv_import, manual, webhook. Defaults to \"api\"." - added
Input schema / properties / leads / items / properties / source_detail / descriptionAdded value: +"Free-text refinement of source — e.g. \"homepage hero form\", \"Q1 webinar\", \"Reddit r/SaaS post\"." - added
Input schema / properties / leads / items / properties / tags / descriptionAdded value: +"Free-form tags for downstream filtering in lead_search and lead_export. Example: [\"enterprise\", \"follow_up\", \"demo_requested\"]."
- Added
lead_demo_seed - Changed
lead_enrich3 fields changed- changed
Input schema / properties / lead_id / descriptionPrevious value: -"The lead ID to enrich"New value: +"UUID of the lead to enrich (returned by lead_ingest or lead_search)" - added
Input schema / properties / lead_id / formatAdded value: +"uuid" - added
Input schema / properties / lead_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
lead_export3 fields changed- added
Input schema / properties / lead_ids / descriptionAdded value: +"Explicit list of lead UUIDs to export. If omitted, every lead matching min_score (or all leads, when min_score is also omitted) is exported." - added
Input schema / properties / min_score / descriptionAdded value: +"Inclusive minimum score for inclusion. Use 60+ for \"qualified-only\" exports. Ignored when lead_ids is provided." - added
Input schema / properties / target / descriptionAdded value: +"Where to send the leads. \"hubspot\" / \"pipedrive\" require HUBSPOT_API_KEY / PIPEDRIVE_API_TOKEN env vars — without them, the tool returns a dry-run payload instead of erroring. \"google_sheets\" requires GOOGLE_SHEETS_CREDENTIALS. \"csv\" / \"json\" produce inline output you can pipe to disk."
- Changed
lead_ingest11 fields changed- added
Input schema / properties / company_domain / descriptionAdded value: +"Company root domain (e.g. \"acme.com\"). If omitted, derived from the email. Used by lead_enrich for the domain knowledge-base lookup." - added
Input schema / properties / company_name / descriptionAdded value: +"Company display name. If omitted, lead_enrich will derive it from the email domain." - added
Input schema / properties / custom_fields / descriptionAdded value: +"Arbitrary string→string metadata. Use for UTM parameters, A/B test variants, or anything you want to preserve through scoring and export." - added
Input schema / properties / email / descriptionAdded value: +"Business email address. Required and used as the unique key — duplicate emails are rejected, not upserted. Example: \"alex@acme.com\"." - added
Input schema / properties / first_name / descriptionAdded value: +"Optional first name. Stored verbatim and used for personalization in CRM exports." - added
Input schema / properties / job_title / descriptionAdded value: +"Job title used by lead_score for the job_title dimension. High-value titles (ceo, cto, vp, director, head, founder) earn the highest points. Configurable via config_scoring.high_value_titles." - added
Input schema / properties / last_name / descriptionAdded value: +"Optional last name. Combined with first_name to populate full_name on the stored lead." - added
Input schema / properties / phone / descriptionAdded value: +"Optional phone number in any format. Stored verbatim and forwarded to CRM exports." - added
Input schema / properties / source / descriptionAdded value: +"Where the lead originated. One of: website_form, landing_page, api, csv_import, manual, webhook. Defaults to \"api\"." - added
Input schema / properties / source_detail / descriptionAdded value: +"Free-text refinement of source — e.g. \"homepage hero form\", \"Q1 webinar\", \"Reddit r/SaaS post\"." - added
Input schema / properties / tags / descriptionAdded value: +"Free-form tags for downstream filtering in lead_search and lead_export. Example: [\"enterprise\", \"follow_up\", \"demo_requested\"]."
- Added
lead_qualify - Changed
lead_score3 fields changed- changed
Input schema / properties / lead_id / descriptionPrevious value: -"The lead ID to score"New value: +"UUID of the lead to score" - added
Input schema / properties / lead_id / formatAdded value: +"uuid" - added
Input schema / properties / lead_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
lead_search8 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Page size, 1–100. Defaults to 20." - added
Input schema / properties / max_score / descriptionAdded value: +"Inclusive upper bound on score (0–100). Useful for review queues — e.g. min_score=40, max_score=60 to surface borderline leads." - added
Input schema / properties / min_score / descriptionAdded value: +"Inclusive lower bound on score (0–100). Combine with status=\"qualified\" for high-priority follow-up lists." - added
Input schema / properties / offset / descriptionAdded value: +"Number of results to skip for pagination. Defaults to 0." - added
Input schema / properties / query / descriptionAdded value: +"Case-insensitive substring search over email, first_name, last_name, job_title, and company.name. AND-combined with the other filters." - added
Input schema / properties / source / descriptionAdded value: +"Filter to a single source channel." - added
Input schema / properties / status / descriptionAdded value: +"Restrict to a single status: new (just ingested), enriched (lead_enrich done), scored (has score), qualified (score ≥ threshold), disqualified, exported, archived." - added
Input schema / properties / tags / descriptionAdded value: +"Tags that must ALL be present on the lead (AND semantics). Empty array is ignored."
8 tool updates
v1.0.0- First observed
config_scoring - First observed
lead_batch_ingest - First observed
lead_enrich - First observed
lead_export - First observed
lead_ingest - First observed
lead_score - First observed
lead_search - First observed
pipeline_stats
TDQS
Scored across 10 tools
Each tool targets a distinct operation: config, ingest (single/batch), demo, enrich, qualify, score, search, export, stats. No two tools overlap in purpose.
All tools follow a consistent 'lead_<verb>' pattern (e.g., lead_ingest, lead_search), with 'config_scoring' being a minor but still clear exception. The naming is predictable and aids agent understanding.
With 10 tools, the set covers the full lead management pipeline without being bloated. Each tool serves a necessary function, making the scope well-balanced.
The tool set covers the core lifecycle: ingest, enrich, qualify, score, search, export, and config. A notable minor gap is the lack of a direct lead update tool, though the batch ingest and re-scoring can compensate. The demo seed tool is a valuable addition.
Maintenance
Related MCP Connectors
LeadOracle - 7-tool B2B lead intel MCP: enrichment, scoring, intent signals, ICP fit.
Sales intelligence for B2B SMEs — lead scoring, ICP fit, CRM enrichment & writeback.
335 MCP tools, 75 playbooks. AI-native CRM, email/SMS, events, OAuth.
Lead enrichment plus AI-written cold emails in one run.
Related MCP Servers
- AlicenseAqualityDmaintenanceLinkedIn prospection automation — find leads, score (fit+intent+urgency), qualify, personalize messages, run full pipeline, manage sales funnel. 7 MCP tools.710 npmMIT
- AlicenseBqualityDmaintenanceEnables AI-assisted B2B lead generation by discovering, extracting, scoring, and exporting company leads from any MCP-compatible agent.39 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables automated lead generation, AI enrichment, personalized messaging, and outreach orchestration through MCP tools and n8n workflows.-
- AlicenseAqualityDmaintenanceProvides MCP tools for lead qualification, enabling evidence gathering from CRM, scoring, and knowledge base with role-based access and deterministic decision gating.4AGPL 3.0