关于 zopaf
zopaf 是供 AI Agent 调用的 MCP 谈判引擎,使用 MILP 优化而非 LLM 进行谈判计算。它可建模偏好和 BATNA,生成基于 Pareto 前沿的还价,并根据对方反应推断其优先事项。
主要功能
- 01建立谈判议题与偏好模型
- 02记录 BATNA 与议价优势
- 03生成等效用还价方案
- 04依据 Pareto 前沿分析交易
- 05从对方反应推断优先事项
适用场景
- 01设计职位录用谈判方案
- 02比较 VC 条款清单中的条款
- 03准备供应商合同还价
- 04评估和解或合作提案
MCP 相关
向 MCP 客户端提供谈判工具,包括会话设置、议题和偏好记录、还价生成、交易分析、回应处理及状态查询。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://zopaf-mcp-production.up.railway.app/mcpclaude mcp add --transport http rjandino-zopaf https://zopaf-mcp-production.up.railway.app/mcp{"mcpServers":{"rjandino-zopaf":{"type":"http","url":"https://zopaf-mcp-production.up.railway.app/mcp"}}}在 Cursor 中打开{"servers":{"rjandino-zopaf":{"type":"http","url":"https://zopaf-mcp-production.up.railway.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"rjandino-zopaf":{"type":"http","url":"https://zopaf-mcp-production.up.railway.app/mcp"}}}{"mcpServers":{"rjandino-zopaf":{"serverUrl":"https://zopaf-mcp-production.up.railway.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Zopaf 谈判引擎 -- MCP 服务
通过 MCP 工具提供的谈判数学引擎,任何 AI Agent 都可以调用。Zopaf 通过纯 MILP 优化计算帕累托前沿、生成等效用反报价,并根据对方的反应推断其优先事项。不会消耗任何 LLM 令牌。对话由调用它的 Agent 负责,数学计算由 Zopaf 负责。
快速开始
Claude Desktop
将以下内容添加到 Claude Desktop 配置文件(claude_desktop_config.json):
{
"mcpServers": {
"zopaf": {
"type": "streamable-http",
"url": "https://zopaf-mcp-production.up.railway.app/mcp"
}
}
}
Claude Code
claude mcp add zopaf --transport streamable-http https://zopaf-mcp-production.up.railway.app/mcp
通用 MCP 客户端
连接到 Streamable HTTP 端点:
URL: https://zopaf-mcp-production.up.railway.app/mcp
Transport: Streamable HTTP
工具参考
| 工具 | 描述 |
|---|---|
create_session | 创建新的谈判会话。返回供所有其他工具使用的 session_id。 |
add_issue | 添加可协商的议题/条款,并按对用户从最差到最好的顺序排列选项。 |
set_issue_range | 设置数值议题的可接受范围,从而启用 0-100 评分。 |
record_preference | 记录用户对某些议题的重视程度高于其他议题。更新权重模型。 |
set_batna | 记录交易未能达成时用户的其他选择。用于确定谈判筹码。 |
generate_counteroffers | 生成 3 个等效用反报价,供同时提出。 |
process_counterpart_response | 处理对方的反应,以推断其优先事项并生成第 2 轮报价。 |
analyze_deal | 根据帕累托前沿评估具体交易。显示获取的价值和建议的交换方案。 |
get_negotiation_state | 获取当前模型状态:议题、权重、BATNA、前沿大小以及建议的下一步操作。 |
工作原理
-
创建会话 -- 使用
create_session初始化新的谈判模型。 -
添加议题 -- 使用
add_issue定义谈判条款。每个议题都包含按对用户从最差到最好的顺序排列的选项(例如,薪资:['$150K', '$160K', '$170K', '$180K'])。 -
设置范围 -- 对于数值议题,调用
set_issue_range,将数值映射到 0-100 评分尺度。 -
记录偏好 -- 随着逐步了解用户关心的事项,调用
record_preference。每次调用都会更新内部权重模型。 -
设置 BATNA -- 使用
set_batna记录其他选择。数量和质量决定谈判筹码的强弱以及锚定策略。 -
生成 3 个反报价 -- 调用
generate_counteroffers,生成对用户而言同样有利但结构各异的三个方案。请同时提出全部三个方案。切勿先提出一个方案,再退而求其次地提出另一个。 -
处理对方的反应 -- 调用
process_counterpart_response,说明对方更喜欢哪个方案以及对哪些内容提出异议。引擎会推断对方隐藏的优先事项。 -
获取第 2 轮报价 -- 返回有效率前沿上的优化报价,并根据谈判筹码加权分配价值。
示例:工作邀约谈判
create_session
-> {"session_id": "a1b2c3d4"}
add_issue(session_id="a1b2c3d4", issue_name="Salary", options=["$150K", "$160K", "$170K", "$180K"])
add_issue(session_id="a1b2c3d4", issue_name="Equity", options=["0.1%", "0.25%", "0.5%", "0.75%"])
add_issue(session_id="a1b2c3d4", issue_name="Signing Bonus", options=["$0", "$10K", "$20K", "$30K"])
add_issue(session_id="a1b2c3d4", issue_name="Remote Work", options=["On-site", "Hybrid", "Fully Remote"])
set_issue_range(issue_name="Salary", worst_acceptable=150000, best_hoped=180000,
option_values={"$150K": 150000, "$160K": 160000, "$170K": 170000, "$180K": 180000})
-> {"scores": {"$150K": 0.0, "$160K": 33.3, "$170K": 66.7, "$180K": 100.0}}
record_preference(preferred_issues=["Salary", "Equity"], over_issues=["Signing Bonus", "Remote Work"])
-> {"learned_weights": {"Salary": 0.345, "Equity": 0.345, "Signing Bonus": 0.155, "Remote Work": 0.155}}
set_batna(alternatives=["Competing offer from Company B at $165K", "Stay in current role"])
-> {"leverage_strength": "strong"}
generate_counteroffers(target_satisfaction="ambitious")
-> {
"counteroffers": [
{"label": "A", "terms": {"Salary": "$180K", "Equity": "0.25%", "Signing Bonus": "$10K", "Remote Work": "On-site"}},
{"label": "B", "terms": {"Salary": "$170K", "Equity": "0.5%", "Signing Bonus": "$0", "Remote Work": "Hybrid"}},
{"label": "C", "terms": {"Salary": "$160K", "Equity": "0.75%", "Signing Bonus": "$20K", "Remote Work": "On-site"}}
]
}
process_counterpart_response(preferred_package="B", pushback_issues=["Equity"])
-> {
"counterpart_priorities_inferred": {"Equity": 0.571, "Salary": 0.143, ...},
"round_2_offer": {"Salary": "$180K", "Equity": "0.25%", "Signing Bonus": "$20K", "Remote Work": "Hybrid"},
"value_split": "User gets 75% of surplus"
}
引擎推断,对方最看重股权(占其权重的 57%)。第 2 轮报价在股权上让步——这对用户而言代价较低——并在薪资和签约奖金上争取价值。双方都能获得更好的结果。凭借强大的 BATNA,用户可获取 75% 的剩余价值。
使用场景
- 工作邀约 -- 薪资、股权、奖金、职位名称、远程工作、入职日期、带薪休假
- VC 条款清单 -- 估值、董事会席位、清算优先权、反稀释条款、按比例跟投权
- 房地产 -- 价格、交割日期、附带条件、维修、包含项目、售后返租期限
- 供应商合同 -- 价格、SLA 保证、付款条款、排他性、续约条款
- 薪资谈判 -- 基本工资、奖金结构、评审时间表、职责范围
- 商业合作 -- 收入分成、IP 所有权、决策权、退出条款、区域
- 法律和解 -- 金钱条款、保密条款、承认责任、时间表
为什么是零 Token?
Zopaf 是一个数学引擎,而不是大模型。它运行 MILP 优化和组合评分——这些运算的计算成本很低,但让大模型在上下文中尝试却十分繁琐。
你的 Agent 中的大模型负责与用户对话、提出恰当的问题并解释策略。Zopaf 负责优化——计算帕累托前沿、生成等效用套餐、根据已揭示的选择求解偏好权重,并将报价定位在有效前沿上。
你带来大脑,Zopaf 带来计算器。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。