Zopaf

io.github.rjandino由 GitHub 帳號 rjandino 發布v1.0.0更新於 Oct 24, 2026

Negotiation math engine. Pareto frontier, counteroffer generation, zero LLM tokens.

已驗證Streamable HTTP可網頁執行效率與工作流資料與分析商業與電商

概覽

AI 產生的概覽

談判數學引擎,讓助理對交易議題建模、產生帕雷托最優還價方案,並推斷對方優先順序。

可以做什麼
建立並檢視談判工作階段,加入議題與數值區間及評分刻度,記錄偏好與 BATNA 替代方案以決定籌碼與權重。產生三個等效用還價方案供同時提出。處理對方反應以推斷其優先順序,並給出調整後的第二輪報價。對照帕雷托前緣為具體方案評分,顯示已取得價值與建議的交換。
適用情境
適合助理協助結構化談判時使用,例如聘僱條件、投資條款清單、房地產、供應商合約或和解,需要一致且基於數學的方案與考量籌碼的報價,而非臨時估算。對話仍由助理負責,伺服器只提供最佳化計算。
執行需求
需要遠端 Streamable HTTP 端點;未宣告本機套件、帳號、API 金鑰或環境變數。用戶端須支援 Streamable HTTP 傳輸,並需能透過網路存取該託管服務。
安裝前請注意
你輸入的談判細節(議題、偏好、BATNA 替代方案、對方反應)會傳送到第三方託管端點,請勿提交無法外流的機密交易條款。工作階段在該遠端服務上建立與更新,且未宣告任何身分驗證,持有工作階段識別碼的人可能存取同一狀態。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Zopaf,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.rjandino%2Fzopaf/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "zopaf": {
      "type": "http",
      "url": "https://zopaf-mcp-production.up.railway.app/mcp"
    }
  }
}

README

Zopaf Negotiation Engine -- MCP Server

A negotiation math engine exposed as MCP tools that any AI agent can call. Zopaf computes Pareto frontiers, generates iso-utility counteroffers, and infers counterpart priorities from their reactions -- all through pure MILP optimization. Zero LLM tokens burned. The calling agent handles the conversation; Zopaf handles the math.

Quick Start

Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

json
{  "mcpServers": {    "zopaf": {      "type": "streamable-http",      "url": "https://zopaf-mcp-production.up.railway.app/mcp"    }  }}

Claude Code

bash
claude mcp add zopaf --transport streamable-http https://zopaf-mcp-production.up.railway.app/mcp

Generic MCP Client

Connect to the Streamable HTTP endpoint:

URL: https://zopaf-mcp-production.up.railway.app/mcpTransport: Streamable HTTP

Tools Reference

ToolDescription
create_sessionCreate a new negotiation session. Returns a session_id used by all other tools.
add_issueAdd a negotiable issue/term with options ordered worst to best for the user.
set_issue_rangeSet the acceptable range for a numeric issue, enabling 0-100 scoring.
record_preferenceRecord that the user prioritizes some issues over others. Updates the weight model.
set_batnaRecord the user's alternatives if the deal falls through. Determines leverage.
generate_counteroffersGenerate 3 iso-utility counteroffers to present simultaneously.
process_counterpart_responseProcess the counterpart's reaction to infer their priorities and generate a round-2 offer.
analyze_dealScore a specific deal against the Pareto frontier. Shows value captured and suggested trades.
get_negotiation_stateGet current model state: issues, weights, BATNA, frontier size, and recommended next step.

How It Works

  1. Create session -- Initialize a new negotiation model with create_session.

  2. Add issues -- Define the terms on the table with add_issue. Each issue includes options ordered worst to best for the user (e.g., Salary: ['$150K', '$160K', '$170K', '$180K']).

  3. Set ranges -- For numeric issues, call set_issue_range to map values onto a 0-100 scoring scale.

  4. Record preferences -- Call record_preference as you learn what the user cares about. Each call updates the internal weight model.

  5. Set BATNA -- Use set_batna to record alternatives. The number and quality determines leverage strength and anchoring strategy.

  6. Generate 3 counteroffers -- Call generate_counteroffers to produce three packages that are equally good for the user but structured differently. Present ALL THREE simultaneously. Never lead with one and fall back to another.

  7. Process counterpart response -- Call process_counterpart_response with which package they preferred and what they pushed back on. The engine infers their hidden priorities.

  8. Get round-2 offer -- Returns a refined offer on the efficient frontier, with value split weighted by leverage.

Example: Job Offer Negotiation

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"}

The engine inferred that the counterpart cares most about equity (57% of their weight). The round-2 offer concedes on equity -- where it costs the user less -- and captures value on salary and signing bonus. Both sides improve. The user captures 75% of the surplus based on their strong BATNA.

Use Cases

  • Job offers -- Salary, equity, bonus, title, remote work, start date, PTO
  • VC term sheets -- Valuation, board seats, liquidation preferences, anti-dilution, pro-rata rights
  • Real estate -- Price, closing date, contingencies, repairs, inclusions, rent-back periods
  • Vendor contracts -- Price, SLA guarantees, payment terms, exclusivity, renewal clauses
  • Salary negotiations -- Base pay, bonus structure, review timeline, scope of role
  • Business partnerships -- Revenue split, IP ownership, decision rights, exit clauses, territory
  • Legal settlements -- Monetary terms, non-disclosure terms, admission of liability, timeline

Why Zero Tokens?

Zopaf is a math engine, not a language model. It runs MILP optimization and combinatorial scoring -- operations that are computationally cheap but tedious for an LLM to attempt in-context.

Your agent's LLM handles the conversation with the user, asks the right questions, and explains the strategy. Zopaf handles the optimization -- computing Pareto frontiers, generating iso-utility packages, solving preference weights from revealed choices, and positioning offers on the efficient frontier.

You bring the brain. Zopaf brings the calculator.

來源:README.md,提交 a28f797

工具

0
SourceWeft 尚未讀取此伺服器的工具。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 75%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。