← 返回
未分类 Key

Wininsales crm

Use when users need 赢在销客CRM, wininsales, WininSales CRM, 企业微信CRM, 企微CRM, or CRM sales operations, including customer search, duplicate check, ownership looku...
用于用户需要使用赢在销客CRM(WininSales CRM、企业微信CRM、企微CRM)或进行CRM销售操作,包括客户搜索、重复检查、归属查询等场景。
hijasongithub hijasongithub 来源
未分类 clawhub v1.0.9 5 版本 99862.4 Key: 需要
★ 1
Stars
📥 706
下载
💾 0
安装
5
版本
#latest

概述

赢在销客CRM (WininSales CRM)

概述

此 skill 面向赢在销客 CRM 的日常销售运营场景,帮助销售、主管和运营人员直接完成客户查询、录入、跟进、线索、商机、合同回款、业绩分析和日报等工作。

客户常见问题包括:

  • “这个客户系统里有没有?在谁名下?”
  • “帮我把这家公司录入 CRM,并先查重。”
  • “给客户加一条电话/微信/面访跟进记录。”
  • “把客户共享给同事,或把线索分配给某个人。”
  • “查一下本月到期客户、长期未跟进客户、合同回款和团队业绩。”
  • “基于今天的跟进情况帮我写日报。”

底层集成赢在销客CRM的 MCP API(24个接口),覆盖客户管理全流程。

数据来源: 通过 tools/list 接口获取实际API定义,确保与系统一致。

快速导航

你要做什么优先阅读
----------------------
查客户是否存在、在谁名下流程1、API 1、客户分析 API 5
录入新客户流程2、API 2、工商字段映射、注意事项
记录电话/微信/面访跟进流程3、API 7、往来方式映射
分配/共享客户或线索流程4、流程6、员工ID查询
查合同回款、到期、未跟进、业绩流程9-12、API 12-15
新增线索、商机、产品流程6-7、API 17、API 21-23
写日报流程13、API 24
处理字段选项、字典值流程14、API 16、API 23

场景示范(客户可直接这样问)

场景客户可以这样问技能会怎么做
------------------------------------
客户查重与归属“帮我查一下南京某某科技在 CRM 里有没有,在谁名下?”先用公司名查重;查到后展示客户状态、跟进人、最近跟进;需要归属详情时再用公司全称分析。
新客户录入“帮我录入南京某某科技,先查重,再查工商信息。”先查重;未存在时查工商;复述企业和联系人关键字段,用户确认后再创建客户。
跟进记录“给南京某某科技加一条微信跟进:今天沟通了企业微信 CRM 试用,下周约演示。”定位客户ID;映射微信为 VisitType.5;确认跟进内容、时间和联系人后写入。
客户共享“把南京某某科技共享给张涛,让他也能看到。”查客户;查张涛 user_id;确认共享对象后调用 ShareCustomer;失败时提示权限或姓名降级方案。
客户分配“把南京某某科技转给李四跟进。”查客户和目标员工;提醒分配后原跟进关系可能变化;确认后调用 AssignCustomer。
新增线索“帮我新增一个线索,联系人王总,手机号 138**8888,来源主动开发。”优先查 source 选项;默认使用 MessageSource.3;检查至少有一种联系方式;确认后添加线索。
线索分配“把这个线索分给张涛,备注:客户对 CRM 有兴趣。”查询线索ID;查询员工ID;确认分配原因后调用 AssignLead;员工ID无权限时尝试姓名降级。
创建商机“给南京某某科技建一个商机,产品是赢在销客,预算 3 万,预计 6 月签约。”查客户;查产品;收集预算、预计签约时间、需求和竞品;确认后创建商机。
合同回款“查一下南京某某科技的合同和回款情况。”先查客户并确认 check_look=1;有权限时查询合同、到账、回款、利润;无权限时说明原因。
到期提醒“查一下本月即将到期的客户。”确认时间范围和个人/团队/全部范围;调用到期客户查询;按到期时间和风险输出。
未跟进客户“查一下 30 天没跟进的客户。”计算最后跟进截止日期;必要时查询客户等级字典;输出长期未跟进客户和建议动作。
日报“根据今天 CRM 记录帮我写日报。”拉取当日日报上下文;整理今日工作、客户推进、问题风险和明日计划。

角色与场景入口

  • 销售人员:查客户、录入客户、写跟进、建线索/商机、查到期和未跟进客户、写日报。
  • 销售主管:看团队业绩、分配客户/线索、共享客户、盘点合同回款和续费风险。
  • CRM运营:维护字段选项、确认字典全称、处理公海、检查录入失败原因、沉淀规范。

安全、权限与隐私边界

  • 不在技能文件里保存真实 token、密码、API key、客户手机号、邮箱、合同金额截图等隐私数据。
  • token 由用户在赢在销客 CRM 授权获取;调用时只使用当前用户授权,不绕过 CRM 权限。
  • 查询结果只能展示当前账号有权查看的数据;遇到无权限、查不到、字段不可见时,明确说明原因。
  • 对外展示客户信息时默认脱敏:手机号、邮箱、微信、QQ、电话中间用 **;内部写入参数可用用户提供的完整值。
  • 写入类动作(录入客户、分配/共享、添加跟进、添加线索、添加商机、通话标记)必须先复述关键字段并获得用户确认。
  • 禁止编造客户、联系人、合同、回款、员工ID、产品ID、字段选项值;缺字段时问用户补充。

标准输出模板

查询类输出:

结论:查到/未查到/无权限/需要补充条件
关键信息:客户名称、状态、跟进人、最近跟进、合同/回款/到期等必要字段
风险提示:重复客户、公海、他人跟进、长期未跟进、即将到期、权限不足
下一步:录入、共享、分配、跟进、建商机、继续筛选

写入类确认:

请确认以下信息:
- 操作:录入客户/添加跟进/分配客户/共享客户/添加线索/添加商机
- 对象:客户或线索名称
- 关键字段:联系人、电话、来源、跟进方式、员工、产品、时间
确认后再提交 CRM。

失败类输出:

结果:本次操作未完成
原因:无权限/字段缺失/字典值不匹配/客户已存在/API返回错误
建议:补充字段、先查字典、换用员工姓名降级、请管理员授权、稍后重试

API总览(24个接口,按功能分组)

🔵 客户管理(7个)

#API名称功能使用频率
----------------------------
1SearchExistingCustomers客户查重/搜索⭐⭐⭐⭐⭐
2CreateNewBusinessCustomer新客户录入(40+字段)⭐⭐⭐⭐⭐
3CompanyBusinessRegistrationInquiry工商信息查询(天眼查)⭐⭐⭐⭐
4CompanyInformationSearch工商信息补全⭐⭐⭐
5AnalyzeCustomers客户数据分析⭐⭐⭐⭐
6CRMOperationManual查询操作手册⭐⭐
7QueryDictByCode查询数据字典(辅助工具)⭐⭐

🟢 跟进与拜访(1个)

#API名称功能使用频率
----------------------------
8AddCustomerVisit添加跟进/拜访记录⭐⭐⭐⭐⭐

🟡 客户协作(4个)

#API名称功能使用频率
----------------------------
9ShareCustomer客户共享给同事⭐⭐⭐
10AssignCustomer客户分配给同事⭐⭐⭐
11QueryEmployeeUserId查询员工ID⭐⭐⭐
12ReclaimPublicPoolCustomer公海客户捡回提示⭐⭐⭐

🟠 业绩与分析(4个)

#API名称功能使用频率
----------------------------
13EmployeeAnalysis员工/团队业绩分析⭐⭐⭐⭐
14QueryCustomerContractPayment客户合同与回款查询⭐⭐⭐
15QueryCustomersRecentExpiry🆕 查询即将到期客户⭐⭐⭐
16QueryNoFollowUpCustomers🆕 查询长期未跟进客户⭐⭐⭐

🔴 线索管理(4个)

#API名称功能使用频率
----------------------------
17AddOpportunity添加销售线索⭐⭐⭐
18QueryLead查询线索⭐⭐⭐
19AssignLead分配线索给同事⭐⭐⭐
20SignLeadCall线索通话标记⭐⭐

🟣 商机与产品(2个)

#API名称功能使用频率
----------------------------
21AddClue为客户添加商机⭐⭐⭐
22SearchProducts按名称/编号查产品⭐⭐⭐

⚪ 辅助工具(2个)

#API名称功能使用频率
----------------------------
23SearchFieldOptions查询下拉/单选字段选项⭐⭐
24QueryDailyWriteContext🆕 拉取日报上下文⭐⭐

基础配置

授权Token

如果没有 token,引导用户登录 CRM 并在系统内授权获取;不要让用户把 token 写进技能文件或聊天记录。

登录地址:

https://www.wininsales.com/login

授权注意:

  • token 属于当前 CRM 账号,权限以 CRM 后台为准。
  • token 无效、过期或权限不足时,提示用户重新授权或联系管理员。
  • 上架技能包只能包含 SKILL.md 和必要的上架元数据,不能包含密码文件、运维脚本、数据库备份配置。

curl调用方式

# ⚠️ 中文参数必须用 heredoc 方式传入,避免编码异常!
cat > /tmp/crm_query.json << 'JSONEOF'
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"工具名称","arguments":{参数}},"id":1}
JSONEOF
curl -s "https://www.wininsales.com/mcp_api/mcp?token=" \
  -X POST -H "Content-Type: application/json" \
  -d @/tmp/crm_query.json

调试建议:

  • 中文参数用 heredoc 写入临时 JSON,避免 shell 编码问题。
  • 如果 shell 仍出现中文乱码,优先用 Python3 tempfile 写 UTF-8 JSON 文件,再调用 curl -d @file
  • 不要把真实 token 写进示例命令;本文件只保留 ?token= 占位。
  • 如果返回非预期字段,优先以 tools/list schema 和实际 API 返回为准,不以操作手册的文字说明为准。

智能工作流(14个核心流程)

流程1:客户查重+归属查询(最高频)

> 触发:用户说"XX公司存在吗"、"在谁名下"、"这个客户是谁的"

Step 1: SearchExistingCustomers(query=公司名)
    ↓
    ├─ 未查到 → "系统中不存在该客户,需要录入吗?"
    └─ 查到了 → 展示:客户名称、状态(私海/公海/他人跟进)、录入时间
    ↓
Step 2: 用户追问"谁的客户" → AnalyzeCustomers(customer=公司全称, analysis_type=客户)
    ↓
    ⚠️ customer必须用公司全称,不能缩写!
    ↓
Step 3: 输出:主跟进人、地址、意向等级
    ↓
Step 4: 根据状态给建议
    - "他人跟进" → "需要我帮你共享或分配过来吗?"
    - "客户公海" → "需要我帮你捡回吗?"

流程2:客户录入(含工商查询)

> 触发:用户说"帮我录入XX公司"、"XX公司录入CRM"

Step 1: 询问客户名称
    ↓
Step 2: SearchExistingCustomers 查重
    ├─ 已存在 → 展示信息,问是否需要其他操作(查归属/共享/分配)
    └─ 不存在 → 继续
    ↓
Step 3: CompanyBusinessRegistrationInquiry 工商查询
    ├─ 查到 → 展示工商信息,让用户确认
    └─ 未查到 → 问是否手动录入
    ↓
Step 4: 补充联系人信息(用户提供时直接用,否则用法人默认)
    ↓
Step 5: CreateNewBusinessCustomer 提交
    ├─ 成功 → "客户录入成功"
    └─ 失败 → 根据错误提示处理(见踩坑经验)

录入字段经验:

  • 必填:company_name, contact_contact_name, contact_sex
  • 建议填:industry, source, level, scope, main_product, region, label, memo
  • ⚠️ scope 是"企业规模"(EmployeesNum.1~EmployeesNum.9),不是主营产品!主营产品用 main_product

流程3:跟进录入

> 触发:用户说"记录一下跟进"、"加个拜访记录"

Step 1: SearchExistingCustomers 获取客户ID
Step 2: 询问:往来方式(面访/电话/微信/QQ/邮件)、时间、内容
Step 3: 面访需补充:结束时间(默认+4小时)、拜访地址
Step 4: AddCustomerVisit 提交

往来方式映射: 面访=VisitType.1, 电话=VisitType.2, 邮件=VisitType.3, QQ=VisitType.4, 微信=VisitType.5, 其他=VisitType.6, 企业微信=VisitType.105

流程4:客户分配/共享(核心优化)

> 触发:用户说"把XX客户分给XX"、"让XX也能看到这个客户"、"把XX客户转给XX"

Step 1: SearchExistingCustomers 获取 customer_id
    ↓
Step 2: QueryEmployeeUserId 查询目标员工ID
    - employee_name: 员工姓名(支持"我"/"自己")
    - multiple: 0(单人分配)
    - status: 0(仅在职)
    ↓
    ├─ ✅ 查询成功 → 获取 user_id,继续
    └─ ❌ 查询失败(无权限)→ 尝试直接用员工姓名
    ↓
Step 3: 执行分配/共享
    ├─ 分配客户: AssignCustomer(customer_id, assignee=user_id)
    └─ 共享客户: ShareCustomer(customer_id, share_with=user_id)

【容错策略】
- 如果 QueryEmployeeUserId 返回错误,尝试直接把 receiver/assignee 参数设为员工姓名
- 部分API支持直接用姓名代替user_id

分配 vs 共享区别:

操作效果适用场景
----------------------
AssignCustomer客户转给对方,自己不再跟进正式交接、全权移交
ShareCustomer双方都能看到,各自独立跟进协作查看、数据同步

完整示例(客户分配):

# Step 1: 查客户
curl ... -d '{"method":"tools/call","params":{"name":"SearchExistingCustomers","arguments":{"query":"XX公司"}}}'

# Step 2: 查员工ID(如果有权限)
curl ... -d '{"method":"tools/call","params":{"name":"QueryEmployeeUserId","arguments":{"employee_name":"张涛","multiple":0,"status":0}}}'

# Step 3: 分配客户
curl ... -d '{"method":"tools/call","params":{"name":"AssignCustomer","arguments":{"customer_id":"xxx","assignee":"查到的user_id"}}}'

完整示例(客户共享):

# Step 1: 查客户
curl ... -d '{"method":"tools/call","params":{"name":"SearchExistingCustomers","arguments":{"query":"XX公司"}}}'

# Step 2: 查员工ID(如果有权限)
curl ... -d '{"method":"tools/call","params":{"name":"QueryEmployeeUserId","arguments":{"employee_name":"李四","multiple":0,"status":0}}}'

# Step 3: 共享客户
curl ... -d '{"method":"tools/call","params":{"name":"ShareCustomer","arguments":{"customer_id":"xxx","share_with":"查到的user_id"}}}'

流程5:公海捡回

> 触发:用户说"XX客户在公海,帮我捡回来"

Step 1: SearchExistingCustomers 确认客户在公海(status_name=客户公海)
Step 2: ReclaimPublicPoolCustomer 获取操作指引
Step 3: AddCustomerVisit 添加一条跟进记录 → 自动捡回私海

流程6:线索管理(核心优化)

> 触发:用户说"帮我加个线索"、"查一下线索"、"把线索分给XX"

【添加线索】
Step 1: SearchFieldOptions(tool_name="AddOpportunity", field_key="source") 查来源选项
    ├─ ✅ 成功 → 获取 source 选项值
    └─ ❌ 失败(无权限)→ 使用常见默认值: MessageSource.1=线索转化, MessageSource.3=主动开发
Step 2: 收集信息(联系人、公司、电话等,phone/email/qq/tel/wechat至少一个)
Step 3: AddOpportunity 提交

【查询线索】
Step 1: QueryLead(keyword) → 展示线索列表(含id、can_make_call_flag、is_opp_assign)
Step 2: 如需展示更多字段,手动查询

【分配线索】⚠️ 重要优化
Step 1: QueryLead 找到线索ID
    ↓
Step 2: QueryEmployeeUserId 查询目标员工ID
    - employee_name: 员工姓名
    - multiple: 0
    - status: 0
    ↓
    ├─ ✅ 查询成功 → 获取 user_id,继续
    └─ ❌ 查询失败(无权限)→ 直接用员工姓名作为 receiver
    ↓
Step 3: AssignLead(id=线索ID, receiver=员工ID或姓名, suggest=分配原因)
    └─ ⚠️ receiver 参数支持直接用员工姓名字符串(系统会自动匹配)

【通话标记】
Step 1: QueryLead 找到线索,确认 can_make_call_flag 权限
Step 2: SearchFieldOptions(tool_name="SignLeadCall", field_key="labeling_status") 查选项
Step 3: SignLeadCall 提交

添加线索示例(无权限时降级):

# 如果 SearchFieldOptions 失败,用默认值
curl ... -d '{"method":"tools/call","params":{"name":"AddOpportunity","arguments":{
  "contact_name":"联系人名", "phone":"手机号", "source":"MessageSource.1", "memo":"备注"
}}}'

分配线索示例(查询ID + 分配):

# Step 1: 查询线索
curl ... -d '{"method":"tools/call","params":{"name":"QueryLead","arguments":{"keyword":"手机号或公司名"}}}'
# 返回: [{"id":"xxx","contact_name":"...","phone":"...","create_time":"...","is_opp_assign":0}]

# Step 2: 查询员工ID(如果有权限)
curl ... -d '{"method":"tools/call","params":{"name":"QueryEmployeeUserId","arguments":{"employee_name":"张涛","multiple":0,"status":0}}}'

# Step 3: 分配线索
curl ... -d '{"method":"tools/call","params":{"name":"AssignLead","arguments":{
  "id":"查到的线索ID", "receiver":"张涛或user_id", "suggest":"了解CRM系统,分配给张涛跟进"
}}}'

流程7:商机添加

> 触发:用户说"帮这个客户建个商机"、"给XX公司加个商机"

Step 1: SearchExistingCustomers 获取 company_id
Step 2: SearchProducts 查询产品ID(如需指定产品)
Step 3: 收集商机信息:预算、预计签约时间、需求描述、竞品
Step 4: AddClue 提交

品牌ID: 腾讯标准产品(1)/赢在销客(122)/企业微信私有化(123)/惠岚品牌(1566)/定制开发(1639)

流程8:客户分析

> 触发:用户说"分析一下XX公司"、"看一下XX客户的数据"

Step 1: AnalyzeCustomers(customer=公司全称, analysis_type=all)
Step 2: 可选类型:客户、联系人、往来记录、商机记录、合同记录、all
Step 3: 格式化输出(隐藏手机号、用表格呈现)

流程9:业绩分析

> 触发:用户说"查一下本周的业绩"、"团队成交情况"

Step 1: 确认范围(个人/团队)和时间(本周/上周/本月/自定义)
Step 2: EmployeeAnalysis(employee_name, start_time, end_time, scope, analysis_type)
Step 3: 汇总输出(按业绩排序、计算总计)

流程10:合同查询

> 触发:用户说"看一下XX公司的合同"、"XX客户回款情况"

Step 1: SearchExistingCustomers 获取 customer_id(需 check_look=1)
Step 2: QueryCustomerContractPayment(customer_id)
Step 3: 输出合同、到账、回款、利润信息

流程11:🆕 到期客户查询

> 触发:用户说"最近哪些客户要到期"、"本月到期名单"、"续费提醒"

Step 1: 确认时间范围和查询范围
Step 2: QueryCustomersRecentExpiry(start_time, end_time, scope, userids?)
    - scope: "全部" / "团队" / "个人"
    - 时间格式: YYYY-MM-DD
    - scope="个人"时 userids 可省略(默认当前登录人),或传 me/自己/我
Step 3: 输出到期客户列表

流程12:🆕 未跟进客户查询

> 触发:用户说"多久没跟进的客户"、"哪些客户没联系"、"跟进超期"

Step 1: 确认时间阈值(如30天、60天)
Step 2: QueryNoFollowUpCustomers(end_time, company_level?)
    - end_time: 最后跟进截止日期(YYYY-MM-DD),如距今30天前的日期
    - company_level: 可选,客户等级筛选(需先 QueryDictByCode(dict_code="CompanyLevel") 获取)
Step 3: 输出未跟进客户列表

流程13:🆕 日报上下文

> 触发:用户说"帮我写日报"、"今日工作汇总"

Step 1: QueryDailyWriteContext(date=YYYY-MM-DD)
    - 获取当日工作要点与明日计划等上下文
Step 2: 基于上下文生成日报内容

流程14:数据字典查询

> 触发:需要查询某个字段的全部可选值(当 SearchFieldOptions 不适用时)

Step 1: QueryDictByCode(dict_code="编码名")
    - 必须使用系统字典全称,如 CompanyLevel、CompanyType、EmployeesNum、Industry
    - 禁止用简称、中文名或猜测值,例如 level、type、规模、行业
Step 2: 输出字典值列表
Step 3: 录入客户、线索、商机前,必须从返回结果中选择准确 value

API详细参考

1. SearchExistingCustomers — 客户查重/搜索

参数: query(必填)— 公司名/电话/联系人,优先:客户名称 > 电话 > 联系人姓名
返回: 客户列表(含customer_id、contact_id、status_name、check_look)
约束: 禁止在未指明查询行为时自动调用;不泄露客户ID/联系方式

2. CreateNewBusinessCustomer — 客户录入(40+字段)

必填: company_name, contact_contact_name, contact_sex(1男/0女/2未知)

--- 企业信息 ---
company_name      [必填] 客户名称
short_name        [可选] 客户简称
customer_no       [可选] 客户编号
type              [可选] 客户类型: 直接客户(CompanyType.1)/经销商(CompanyType.2)/合作伙伴(CompanyType.3)
level             [可选] 意向等级: 信息无效(CompanyLevel.110)/无意向(CompanyLevel.0)/信息不完整(CompanyLevel.113)/未沟通(CompanyLevel.103)/潜在(CompanyLevel.1)/意向(CompanyLevel.2)
source            [可选] 客户来源(需SearchFieldOptions查)常用: 主动开发(MessageSource.3)/线索转化(MessageSource.1)
industry          [可选] 所属行业(需SearchFieldOptions查)
scope             [可选] 企业规模: 1-10人(EmployeesNum.1)/11-50(EmployeesNum.2)/51-100(EmployeesNum.3)/101-200(EmployeesNum.4)/201-500(EmployeesNum.5)/501-1000(EmployeesNum.6)/1001-2000(EmployeesNum.7)/2001-5000(EmployeesNum.8)/5000人以上(EmployeesNum.9)
main_product      [可选] 主营产品(文本)
label             [可选] 客户标签(多选,需SearchFieldOptions查)
region            [可选] 区域
address           [可选] 企业地址
url               [可选] 企业网址
tel               [可选] 企业电话(手机号格式,严格11位)
fax               [可选] 企业传真(座机格式)
memo              [可选] 备注
dealer_id         [可选] 经销商(需SearchFieldOptions查)
customer16        [可选] 现用品牌(需SearchFieldOptions查)
customer200634    [可选] 管理员账号/企业ID
customer52643     [可选] 销售归属
customer32000     [可选] 购买账户数(整数)
customer52633     [可选] 服务到期时间(YYYY-MM-DD)
customer152787    [可选] 到期年月(YYYY-MM)
customer212687    [可选] 客户咨询: 400咨询(ext1)/IM咨询(ext2)/从未咨询(ext3)
customer156559    [可选] 产品培训: 已培训(ext1)/未培训(ext2)
cooperater        [可选] 协作人(需SearchFieldOptions查)
relevance_customer [可选] 被关联客户(需SearchFieldOptions查)

--- 联系人信息 ---
contact_contact_name [必填] 联系人姓名
contact_sex          [必填] 性别: 男(1)/女(0)/未知(2)
contact_phone        [可选] 联系人手机(手机号格式,严格11位)
contact_tel          [可选] 联系人座机(座机格式)
contact_email        [可选] 联系人邮箱
contact_qq           [可选] 联系人QQ
contact_wechat       [可选] 联系人微信
contact_department   [可选] 联系人部门
contact_role         [可选] 联系人角色: 公司负责人(ContactRole.1)/财务决策人(ContactRole.2)/项目影响人(ContactRole.3)/项目负责人(ContactRole.4)/项目执行人(ContactRole.5)
contact_duty         [可选] 联系人职务
contact_kp           [可选] 关键人: 否(0)/是(1)
contact_birthday     [可选] 联系人生日(YYYY-MM-DD)
contact_memo         [可选] 联系人备注

3. CompanyBusinessRegistrationInquiry — 工商信息查询

参数: tyc_keyword(必填)— 企业全称
返回: companyName, juridicalPerson, registedCapital, registedDate,
      companyStatUs, address, actualAddress, industry, products,
      creditCode, webSites, staffNumber, socialSecurityNum,
      annualTurnover, reportTaxTotal

4. CompanyInformationSearch — 工商信息补全

参数: tyc_keyword(必填)— 企业全称
用途: 创建客户流程中补充企业工商信息

5. AnalyzeCustomers — 客户分析

参数: customer(必填, 公司全称), analysis_type(必填), start_time, end_time
类型: 客户/联系人/往来记录/商机记录/合同记录/all

6. CRMOperationManual — 操作手册

参数: question(必填)— 操作问题
用途: 查询CRM系统操作指南
⚠️ 注意: 返回的信息可能不准确(如字段名),以 tools/list 实际schema为准

7. AddCustomerVisit — 跟进录入

必填: company_id, type, expect_start_time(YYYY-MM-DD HH:MM), memo
可选: contact_id, expect_end_time(面访必填), visit_address
type: VisitType.1(面访)/VisitType.2(电话)/VisitType.3(邮件)/VisitType.4(QQ)/VisitType.5(微信)/VisitType.6(其他)/VisitType.105(企业微信)

8. ShareCustomer — 客户共享

必填: customer_id, share_with(接收人userid,多人用逗号分隔)
效果: 双方都能看到客户

9. AssignCustomer — 客户分配

必填: customer_id, assignee(新跟进人userid)
可选: previous_follower(原跟进人userid), sync_wecom_customer("1"开启/"0"关闭)
效果: 客户转给对方,可同步企业微信客户交接

10. QueryEmployeeUserId — 查询员工ID

必填: employee_name(支持"我"/"自己"), multiple(0单/1多), status(0在职/all)
用途: 分配/共享客户、分配线索时需要

11. ReclaimPublicPoolCustomer — 公海捡回

参数: customer_name
用途: 提示操作方式(不直接发请求),实际通过 AddCustomerVisit 添加跟进记录捡回

12. EmployeeAnalysis — 业绩分析

必填: employee_name, start_time, end_time, scope(个人/团队)
可选: analysis_type

13. QueryCustomerContractPayment — 合同查询

必填: customer_id(需来自SearchExistingCustomers且check_look=1)
返回: 合同、到账、回款、利润

14. 🆕 QueryCustomersRecentExpiry — 到期客户查询

必填: start_time(YYYY-MM-DD), end_time(YYYY-MM-DD), scope("全部"/"团队"/"个人")
可选: userids(多人逗号分隔;scope=个人时可省略或传 me/自己/我)
用途: 查询即将到期/最近到期的客户,用于续费提醒

15. 🆕 QueryNoFollowUpCustomers — 未跟进客户查询

必填: end_time(YYYY-MM-DD) — 最后跟进截止日期/阈值
可选: company_level — 客户等级筛选(须与字典CompanyLevel一致,用QueryDictByCode查询)
用途: 查询长期未跟进的客户

16. 🆕 QueryDictByCode — 数据字典查询

必填: dict_code — 字典编码
常用编码: CompanyLevel, CompanyType, EmployeesNum, Industry 等
用途: 辅助工具,获取下拉选项值列表
约束: dict_code 必须传系统字典全称,不能传简称、中文名或字段名猜测值;简称会导致查不到或选项不准,影响精准录入

17. AddOpportunity — 添加线索

必填: contact_name, source(需先SearchFieldOptions查选项)
可选: company_name, phone, duty, region, address, email, qq, wechat, memo, receiver
注意: phone/email/qq/tel/wechat 至少填一个

18. QueryLead — 查询线索

参数: keyword(必填)— 公司名称/联系人/手机号
返回: 线索列表(含id和can_make_call_flag)

19. AssignLead — 分配线索

必填: id(线索ID), receiver(接收人userid), suggest(备注说明)

20. SignLeadCall — 通话标记

全部可选: id, labeling_status(需SearchFieldOptions查), labeling_memo
⚠️ 必须先 QueryLead 确认 can_make_call_flag 有权限

21. AddClue — 添加商机

必填: clue_name, company_id, clue_brand, budget(数字), expect_date(YYYY-MM),
      belong_user(自己的user_id), used_brand(需求描述), competitive_brands(竞品分析)
可选: product_ids, cooperater(需SearchFieldOptions查)
品牌: 腾讯标准产品(1)/赢在销客(122)/企业微信私有化(123)/惠岚(1566)/定制开发(1639)

22. SearchProducts — 产品查询

参数: keyword(必填)— 产品名或编号

23. SearchFieldOptions — 字段选项查询

必填: tool_name, field_key
可选: keyword(筛选子串), limit(最大条数)
tool_name: AddClue/AddCustomerVisit/AddOpportunity/CreateNewBusinessCustomer
用途: 查询单选/多选/下拉字段的 label 和 value
约束: 查询不到字段选项时再用 QueryDictByCode,且 QueryDictByCode 的 dict_code 必须用系统字典全称

24. 🆕 QueryDailyWriteContext — 日报上下文

必填: date(YYYY-MM-DD)— 查询日期
用途: 拉取工作汇总上下文,用于填写日报

员工ID查询(统一规范)

需要user_id的接口汇总

#接口user_id参数说明
----------------------------
1AssignCustomerassignee必填 - 新跟进人userid
2ShareCustomershare_with必填 - 接收人userid(多人用逗号分隔)
3AssignLeadreceiver必填 - 接收人userid
4AddCluebelong_user必填 - 自己的userid
5QueryCustomersRecentExpiryuserids可选 - 多人用逗号分隔

查询员工ID的标准流程

Step 1: 调用 QueryEmployeeUserId 查询员工ID
    - employee_name: 员工姓名(支持"我"/"自己")
    - multiple: 0(单人)或 1(多人)
    - status: 0(仅在职员工)
    ↓
    ├─ ✅ 查询成功 → 获取 user_id,继续调用目标接口
    └─ ❌ 查询失败(无权限/查不到)→ 尝试降级策略(见下方)

降级策略(QueryEmployeeUserId失败时)

方案A:直接用员工姓名

部分接口的userid参数支持直接传入员工姓名字符串,系统会自动匹配:

接口参数支持姓名?
----------------------
AssignLeadreceiver✅ 支持
AssignCustomerassignee⚠️ 可能支持
ShareCustomershare_with⚠️ 可能支持

方案B:用"我/自己/我"代替

如果操作对象是当前登录人,可以:

  • QueryCustomersRecentExpiry: scope="个人"时可不传userids
  • EmployeeAnalysis: 直接用 employee_name="我"

调用示例

# 标准查询员工ID
cat > /tmp/crm_query.json << 'JSONEOF'
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"QueryEmployeeUserId","arguments":{"employee_name":"","multiple":0,"status":0}},"id":1}
JSONEOF
curl -s "https://www.wininsales.com/mcp_api/mcp?token=" \
  -X POST -H "Content-Type: application/json" \
  -d @/tmp/crm_query.json

# 降级:直接用姓名分配线索
cat > /tmp/crm_query.json << 'JSONEOF'
{"jsonrpc":"2.0","method":"tools/call","params":{"name":"AssignLead","arguments":{"id":"线索ID","receiver":"","suggest":"备注"}},"id":1}
JSONEOF
curl -s "https://www.wininsales.com/mcp_api/mcp?token=" \
  -X POST -H "Content-Type: application/json" \
  -d @/tmp/crm_query.json

特殊说明

  • EmployeeAnalysis 的 employee_name 参数直接用姓名,不需要先查user_id
  • QueryCustomersRecentExpiry 的 scope="个人" 时,可以不传userids(自动用当前登录人)
  • AddClue 的 belong_user 需要自己的user_id,可用 QueryEmployeeUserId(employee_name="我", multiple=0, status=0) 查询

工商信息 → CRM字段映射

工商字段CRM字段说明
------------------------
companyNamecompany_name直接使用
juridicalPersoncontact_contact_name建议作默认联系人
registedCapitalmemo填入备注
registedDatememo填入备注
addressaddress直接使用
actualAddressmemo如与address不同则备注
industryindustry可能需要SearchFieldOptions匹配
productsmain_product主营产品字段
creditCodememo填入备注
webSitesurl取第一个
staffNumberscope需转换为EmployeesNum编号
province + cityregion组合填入

场景速查表

> 按老板实际说法整理,零技术术语

老板怎么说做什么用什么工具
------------------------------
"XX公司存在吗"客户查重SearchExistingCustomers
"在谁名下"查客户归属和跟进人SearchExistingCustomers → AnalyzeCustomers
"帮我录入XX公司"创建新客户(自动查工商)查重 → 工商查询 → CreateNewBusinessCustomer
"记录一下跟进"添加拜访/电话/微信记录SearchExistingCustomers → AddCustomerVisit
"看一下XX公司的合同"查合同、回款、利润SearchExistingCustomers → QueryCustomerContractPayment
"查一下本周的业绩"团队或个人业绩分析EmployeeAnalysis
"把XX客户分给XX"客户转给同事SearchExistingCustomers → QueryEmployeeUserId → AssignCustomer
"让XX也能看到这个客户"共享客户给同事SearchExistingCustomers → QueryEmployeeUserId → ShareCustomer
"XX客户在公海,帮我捡回来"公海客户捡回SearchExistingCustomers → AddCustomerVisit
"帮我加个线索"添加新销售线索SearchFieldOptions → AddOpportunity
"查一下线索"按名称/电话查线索QueryLead
"把线索分给XX"线索分配给同事QueryLead → QueryEmployeeUserId → AssignLead
"打了个电话标记一下"线索通话标记QueryLead → SearchFieldOptions → SignLeadCall
"帮这个客户建个商机"为客户创建商机SearchExistingCustomers → SearchProducts → AddClue
"查一下产品"按名称或编号查产品SearchProducts
"有哪些选项可以选"查询下拉选项值SearchFieldOptions
"最近哪些客户要到期"查询即将到期客户QueryCustomersRecentExpiry
"哪些客户很久没联系了"查询长期未跟进客户QueryNoFollowUpCustomers
"帮我写日报"拉取工作汇总生成日报QueryDailyWriteContext

注意事项

  1. 必须先查重 — 录入/操作前先 SearchExistingCustomers
  2. 工商查询优先 — 录入新客户时自动查工商信息填充
  3. 必须二次确认 — 工商信息展示后需用户确认才录入
  4. 隐私保护 — 手机号、邮箱中间用 ** 代替
  5. 错误处理 — API失败告知原因,不隐瞒
  6. 时间格式 — 严格 YYYY-MM-DD HH:MM 或 YYYY-MM
  7. 字段选项先查 — 创建商机/线索时,单选字段须先 SearchFieldOptions
  8. 字典必须用全称 — QueryDictByCode 的 dict_code 必须传系统字典全称,禁止用简称、中文名或猜测值,否则会导致选项不准、录入不精准
  9. 枚举值必须带字典前缀 — 属于字典/选项的值不要写裸数字,统一写成 CompanyLevel.1、EmployeesNum.2、VisitType.5、ContactRole.3、MessageSource.1 这类完整值
  10. 禁止编造ID — customer_id、线索id、产品id必须来自查询结果
  11. 禁止编造信息 — 不得编造任何客户信息,不完整时须向用户请求补充
  12. CRMOperationManual仅供参考 — 其返回信息可能不准确,以 tools/list 实际schema为准
  13. 分配容错策略 — QueryEmployeeUserId 失败时,可直接用员工姓名作为 receiver/assignee/share_with 参数
  14. 员工ID优先查询 — 所有需要user_id的接口(AssignCustomer/ShareCustomer/AssignLead/AddClue)都应先调用 QueryEmployeeUserId

可靠性检查清单

执行前:

  • 查询/写入对象是否明确:客户名、联系人、手机号、线索ID、员工、时间范围。
  • 写入前是否已查重:客户录入、建商机、添加跟进必须先定位客户。
  • 字典/枚举是否准确:字段选项先用 SearchFieldOptions;字典查询用 QueryDictByCode 全称;枚举值带前缀。
  • 权限是否足够:合同、回款、团队业绩、他人客户、员工ID查询可能受 CRM 权限限制。

执行中:

  • 查询结果多条时,让用户选择,不自动猜测。
  • API 失败时保留原始错误要点,给出下一步方案。
  • 降级策略只用于已知可兼容字段,例如员工ID查询失败时尝试员工姓名;不得对客户ID、产品ID、线索ID降级编造。

执行后:

  • 查询类给结论、关键字段、风险提示、下一步。
  • 写入类给成功/失败状态、对象名称、关键字段、后续建议。
  • 对敏感字段继续脱敏展示。

FAQ

Q:为什么录入客户前一定要查重?

A:CRM 中客户可能在自己名下、他人名下或公海。先查重可以避免重复客户、误录入和后续归属争议。

Q:为什么字典要用全称,不能写 level、type?

A:QueryDictByCode 依赖系统字典全称,例如 CompanyLevel、CompanyType、EmployeesNum。简称或中文名可能查不到,导致录入字段不准。

Q:为什么枚举值要写 VisitType.2,而不是 2?

A:带前缀能明确这是哪个字段的选项,避免不同字段的数字值混淆,例如 VisitType.2 和 CompanyLevel.2 代表完全不同的含义。

Q:查不到员工ID怎么办?

A:先说明可能是权限不足或姓名不匹配;分配线索时可尝试直接用员工姓名,客户分配/共享也可按接口兼容性尝试姓名,但必须说明这是降级方案。

Q:合同、回款、团队业绩查不到怎么办?

A:先检查当前账号是否有权限,再确认客户ID、时间范围、团队范围。不能绕过 CRM 权限,也不能编造数据。

Q:这个技能能不能保存我的 token?

A:不能。token 应由 CRM 授权流程提供,技能文件和上架包不能保存真实 token、密码、API key 或客户隐私。

Q:CRMOperationManual 返回内容和实际接口不一致怎么办?

A:以 tools/list schema 和真实 API 返回为准,CRMOperationManual 只作为操作说明参考。


踩坑经验

(以下由AI在实际调用中自动积累,请勿手动删除)

  • SearchExistingCustomers / curl中文参数:shell直接传中文字符串到JSON时可能编码异常,建议用 heredoc 写入临时文件再 curl -d @file,或用 printf 管道传入
  • AnalyzeCustomers / customer参数必须用公司全称:SearchExistingCustomers返回的company_name是什么就传什么,不能缩写或截断,否则查不到
  • QueryDictByCode / 字典编码必须用全称:如 CompanyLevel、CompanyType、EmployeesNum、Industry,不能用 level、type、规模、行业 等简称或中文名,否则会导致查不到选项或选项不精准,进而影响客户/线索/商机录入
  • CreateNewBusinessCustomer / 实际无contact_way/follow_up_way字段:CRMOperationManual声称有这两个字段但实际MCP schema中不存在,传入会被静默忽略
  • CreateNewBusinessCustomer / tel字段是手机号格式:虽然描述为"企业电话",但要求11位手机号格式;座机用fax字段
  • CreateNewBusinessCustomer / 占位手机号问题:系统会校验手机号真实性,不能用13800000001等明显假号,如无真实手机号可不填contact_phone,用fax填座机
  • CreateNewBusinessCustomer / label标识值:Label.16462=潜在客户,Label.16401=企微CRM客户,Label.16469=签约客户,Label.16408=合作代理商,Label.16409=项目合作
  • CreateNewBusinessCustomer / scope是企业规模:不是主营产品!scope值用EmployeesNum.1~EmployeesNum.9;主营产品用main_product字段(文本输入)
  • CreateNewBusinessCustomer / 建议填全字段:系统有较多隐式必填校验,建议尽量填 level、scope、main_product、region、source、industry、label,减少报错
  • CreateNewBusinessCustomer / 联系人字段区分:contact_phone=联系人手机(11位),contact_tel=联系人座机,tel=企业电话(11位手机格式),fax=企业传真(座机格式)
  • CreateNewBusinessCustomer / 电话冲突:如果报手机号被占用,去掉contact_phone字段重试
  • CRMOperationManual / 不可信:返回的字段名、参数格式等信息经常与实际不一致,仅作参考,以 tools/list 获取的实际schema为准
  • QueryEmployeeUserId / 可能无权限:部分账号没有查询其他员工ID的权限,此时可降级用员工姓名
  • QueryEmployeeUserId / 支持"我"字:用 employee_name="我" 可查询当前登录人的user_id
  • AssignLead / 支持姓名直接分配:receiver 参数可直接用员工姓名字符串
  • AssignCustomer / 可能支持姓名:assignee 参数降级时可尝试直接用姓名
  • ShareCustomer / 可能支持姓名:share_with 参数降级时可尝试直接用姓名
  • AddClue / belong_user 必填:添加商机需要自己的user_id,须先 QueryEmployeeUserId(employee_name="我") 查询
  • SearchFieldOptions / 可能无权限:如查询来源选项失败,AddOpportunity 的 source 可用默认值 MessageSource.1=线索转化,MessageSource.3=主动开发
  • AddOpportunity / contact_name 必填:如果系统报类似“请补充收票人姓名”,优先检查是否缺少 contact_name 或字段映射异常

版本历史

共 5 个版本

  • v1.0.9 当前
    2026-05-29 20:44 安全 安全
  • v1.0.8
    2026-05-29 13:20
  • v1.0.7
    2026-05-09 16:25 安全 安全
  • v1.0.6
    2026-05-07 03:53 安全
  • v1.0.5
    2026-05-03 05:51 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

business-ops

Calendar

ndcccccc
日历管理与日程安排。创建事件、管理会议,并实现多日历平台同步。
★ 7 📥 23,177
business-ops

Trello

steipete
使用 Trello REST API 管理看板、列表和卡片
★ 162 📥 41,295
business-ops

Discord

steipete
当需要通过discord工具控制Discord时使用:发送消息、添加反应、发布或上传表情包、上传表情、创建投票、管理帖子/置顶/搜索、获取权限或成员/角色/频道信息,或在Discord私信或频道中处理管理操作。
★ 78 📥 38,057