catchintent
The intent layer for B2B outbound. Find, triage, and act on warmth-scored leads.
사용해야 할까요
품질 및 안전성
발견 사항 (4)
- HIGH
- MEDIUMproduct_get에서
- LOWlead_update_sequence에서
- LOWlead_enrich에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"catchintent": {
"url": "https://engine.catchintent.com/mcp"
}
}
}원격 엔드포인트
https://engine.catchintent.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (14)
🟢lead_search(productId, status, warmth, workflowTag, search, ...)
Search leads in the workspace. A lead is always a person discovered on LinkedIn. Filter by warmth, status, or text.
입력 스키마
{
"type": "object",
"properties": {
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
},
"status": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new",
"seen",
"saved",
"pushed",
"archived"
]
}
},
"warmth": {
"type": "array",
"items": {
"type": "string",
"enum": [
"hot",
"warm",
"cool"
]
}
},
"workflowTag": {
"type": "array",
"items": {
"type": "string"
}
},
"search": {
"type": "string",
"maxLength": 200
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"pageSize": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢lead_get(leadId)
Get full details of one lead: profile, discovery context (fit reason, pain hypothesis, role signals, disqualifiers), the AI-drafted outreach sequence (lead.outreach), warmth score, and status.
입력 스키마
{
"type": "object",
"properties": {
"leadId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
}
},
"required": [
"leadId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡lead_update_status(leadId, status)
Move a lead through the triage funnel. Valid transitions: NEW → SEEN/SAVED/PUSHED/ARCHIVED, SEEN ↔ SAVED, SAVED → PUSHED/ARCHIVED, PUSHED → ARCHIVED, ARCHIVED → SEEN. PUSHED is irreversible — it marks handoff to an outreach tool / CRM.
입력 스키마
{
"type": "object",
"properties": {
"leadId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
},
"status": {
"type": "string",
"enum": [
"new",
"seen",
"saved",
"pushed",
"archived"
]
}
},
"required": [
"leadId",
"status"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡lead_regenerate_sequence(leadId, instructions)
Re-draft the lead's AI outreach sequence (LinkedIn/X steps). Optional instructions steer the rewrite. Capped per lead — edit directly once the cap is hit.
입력 스키마
{
"type": "object",
"properties": {
"leadId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
},
"instructions": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"leadId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡lead_update_sequence(leadId, steps)
Replace the lead's outreach sequence steps with edited versions (marks the sequence as edited).
입력 스키마
{
"type": "object",
"properties": {
"leadId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
},
"steps": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"channel": {
"type": "string"
},
"purpose": {
"type": "string"
},
"delayDays": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"body": {
"type": "string"
}
},
"required": [
"order",
"channel",
"purpose",
"delayDays",
"body"
]
}
}
},
"required": [
"leadId",
"steps"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪lead_enrich(leadId)
Trigger full LinkedIn profile enrichment via Apify (~$0.002, idempotent).
입력 스키마
{
"type": "object",
"properties": {
"leadId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
}
},
"required": [
"leadId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡lead_push_to_crm(leadIds, provider)
Push leads to your connected CRM (HubSpot, Close, Pipedrive, Zoho). Each lead becomes a contact / deal in the destination. Lead status does not change automatically — call lead_update_status to mark as `pushed` once CRM confirms.
입력 스키마
{
"type": "object",
"properties": {
"leadIds": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
}
},
"provider": {
"type": "string",
"enum": [
"hubspot",
"close",
"pipedrive",
"zoho"
]
}
},
"required": [
"leadIds"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢workspace_usage
Current workspace usage vs plan limits: leads delivered this billing period, team members, products, AI compute budget, daily/monthly caps.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡workspace_icp_options(field)
Get the valid Seniority Level and Job Function labels for product targeting (the reach dimensions MCP can set; roles are free text). Call this before product_update — unknown labels are rejected, never silently dropped.
입력 스키마
{
"type": "object",
"properties": {
"field": {
"type": "string",
"enum": [
"seniorityLevels",
"jobFunctions"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢product_list
List every product/brand tracked by this workspace. Each product has its own brand profile, audience, and leads. Returns id, name, and timestamps.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢product_get(productId)
Resolved brand profile for a product, returned as nested sections with human-readable labels: sell (name/description/keywords/competitors/offer), fit (company firmographics), reach (roles/seniority/functions), plus offer, voice, and domain. Drives all AI scoring + outreach drafting for that product.
입력 스키마
{
"type": "object",
"properties": {
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
}
},
"required": [
"productId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡product_create(name, description, domain, keywords, competitors, ...)
Create a new product. You can set sell (name/description/keywords/competitors), the structured offer, voice, and reach (roles/seniority/functions). Company firmographics (industries/size/country) are set in the dashboard, not here. Brand fields are optional and can be filled later via product_update.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 1000
},
"domain": {
"type": "string",
"maxLength": 255
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"competitors": {
"type": "array",
"items": {
"type": "string"
}
},
"icp": {
"type": "object",
"properties": {
"targetRoles": {
"type": "array",
"items": {
"type": "string"
}
},
"seniorityLevels": {
"type": "array",
"items": {
"type": "string"
}
},
"jobFunctions": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"offer": {
"type": "object",
"properties": {
"headline": {
"type": "string"
},
"targetPainPoint": {
"type": "string"
},
"uniqueMechanism": {
"type": "string"
},
"proofPoints": {
"type": "array",
"items": {
"type": "string"
}
},
"callToAction": {
"type": "string"
},
"riskReversal": {
"type": "string"
},
"pricingContext": {
"type": "string"
}
},
"required": [
"headline",
"targetPainPoint",
"uniqueMechanism",
"proofPoints",
"callToAction"
]
},
"voice": {
"type": "object",
"properties": {
"tone": {
"type": "string",
"enum": [
"professional",
"friendly",
"casual",
"authoritative"
]
},
"personality": {
"type": "array",
"items": {
"type": "string"
}
},
"doNots": {
"type": "array",
"items": {
"type": "string"
}
},
"customInstructions": {
"type": "string"
}
},
"required": [
"tone",
"personality"
]
}
},
"required": [
"name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡product_update(productId, name, description, domain, keywords, ...)
Update a product. Partial — only provided fields change. You can set sell (name/description/keywords/competitors), the structured offer, voice, and reach (roles/seniority/functions). Company firmographics (industries/size/country) are set in the dashboard, not here. Reach labels are resolved strictly to canonical IDs; unknown values rejected.
입력 스키마
{
"type": "object",
"properties": {
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
},
"name": {
"type": "string",
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 1000
},
"domain": {
"type": "string",
"maxLength": 255
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"competitors": {
"type": "array",
"items": {
"type": "string"
}
},
"icp": {
"type": "object",
"properties": {
"targetRoles": {
"type": "array",
"items": {
"type": "string"
}
},
"seniorityLevels": {
"type": "array",
"items": {
"type": "string"
}
},
"jobFunctions": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"offer": {
"type": "object",
"properties": {
"headline": {
"type": "string"
},
"targetPainPoint": {
"type": "string"
},
"uniqueMechanism": {
"type": "string"
},
"proofPoints": {
"type": "array",
"items": {
"type": "string"
}
},
"callToAction": {
"type": "string"
},
"riskReversal": {
"type": "string"
},
"pricingContext": {
"type": "string"
}
},
"required": [
"headline",
"targetPainPoint",
"uniqueMechanism",
"proofPoints",
"callToAction"
]
},
"voice": {
"type": "object",
"properties": {
"tone": {
"type": "string",
"enum": [
"professional",
"friendly",
"casual",
"authoritative"
]
},
"personality": {
"type": "array",
"items": {
"type": "string"
}
},
"doNots": {
"type": "array",
"items": {
"type": "string"
}
},
"customInstructions": {
"type": "string"
}
},
"required": [
"tone",
"personality"
]
}
},
"required": [
"productId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴product_delete(productId)
Delete a product. Fails only if it's the workspace's only product. Its audience and leads cascade-delete.
입력 스키마
{
"type": "object",
"properties": {
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([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)$"
}
},
"required": [
"productId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거