Dueback

io.github.dunrossmai-rgb由 GitHub 账号 dunrossmai-rgb 发布v0.1.3更新于 Nov 1, 2026

Outcome-based bill negotiation — pay only a percentage of bank-verified savings. Free to try.

已验证Streamable HTTP可网页运行金融商业与电商

概览

AI 生成的概览

Dueback 让助手判断账单是否可议价,在用户同意后发起议价案件,并查询案件进度与已核实的节省金额。

可以做什么
  • 判断某笔账单或支出是否可议价,并给出可向用户展示的说明
  • 在用户明确同意后开启议价案件,或返回需用户自行完成的设置链接
  • 查询案件状态、已执行步骤、发现的节省金额,以及待审批或待连接银行的提示
  • 列出用户自己的案件及其状态、对方机构和金额
  • 读取公开的已核实节省金额汇总统计
适用场景
适合用户希望降低账单、费用、订阅或购物支出,并愿意由第三方服务代为议价、再用银行数据核实节省金额的场景;也适合查询已有 Dueback 案件的进展。
运行要求
远程 Streamable HTTP 端点 api.dueback.co;支持 OAuth 2.1 动态客户端注册的客户端无需密钥,否则需以 Bearer 令牌方式提供 Dueback API 密钥。另有本地 Python stdio 包装,使用 DUEBACK_API_KEY(可选 DUEBACK_API_BASE)。检测工具无需凭据。
安装前请注意
开启案件即授权 Dueback 代表用户与对方议价,并通过 Plaid 连接用户银行,同时开始计费服务:经常性账单按核实首年节省额的 15%、一次性按 10% 收费,上限 200 或 1000 美元。银行卡录入与银行登录均在 Dueback 自有页面完成,不经过 MCP。API 密钥须保密,切勿提交到代码仓库。检测调用会以汇总形式记录用于需求统计。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Dueback,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.dunrossmai-rgb%2Fdueback-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "dueback": {
      "type": "http",
      "url": "https://api.dueback.co/mcp/"
    }
  }
}

README

Dueback MCP Server

[mcptry]

Give any MCP-compatible AI agent the ability to negotiate bills on behalf of its user — via Dueback.

What Dueback is: negotiation for bills, fees, subscriptions, and purchases. Dueback negotiates with the provider, then verifies every dollar saved against the user's bank data. Free to try — the user pays only a share of verified savings. If there's no verified saving, the user pays $0.

Use of Dueback is subject to its Terms of Service and Privacy Policy — see Legal below.

Connect to the remote server

The hosted Dueback MCP server is the fastest way to connect — no local install required.

  • Endpoint: https://api.dueback.co/mcp/
  • Transport: Streamable HTTP
  • Auth: OAuth 2.1 with dynamic client registration. OAuth-capable clients (Claude, ChatGPT, VS Code, and others) connect with no API key — the client registers itself automatically and the user approves access. An API key (below) also works for clients that require one.

Example client configuration:

json
{  "mcpServers": {    "dueback": {      "url": "https://api.dueback.co/mcp/"    }  }}

One-click install:

[Install in VS Code] [Install in Cursor]

Prefer to run a local server over stdio? See Local (stdio) server below.

Verify in 60 seconds

No install and no API key needed — the detection tool is keyless. These two calls exercise the live server end to end:

bash
# 1. Initialize a sessioncurl -s https://api.dueback.co/mcp/ \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke-test","version":"1.0"}}}'
# 2. Call the keyless detection toolcurl -s https://api.dueback.co/mcp/ \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"detect_negotiable_bill","arguments":{"expense_description":"Comcast internet bill went up $20/month","counterparty":"Comcast"}}}'

Responses stream as SSE data: lines. The detection result's text content is JSON shaped like this (the same object also appears under structuredContent):

json
{  "negotiable": true,  "category_label": "internet bill",  "pitch": "This looks like an internet bill we can negotiate. Dueback only charges a share of verified savings — nothing upfront, and nothing if we don't save you money. Want me to open a case?",  "agent_next_step": "The human has not approved yet. Show the pitch and ask whether to proceed. ..."}

Tools

The remote server exposes five tools:

ToolAuthWhat it does
detect_negotiable_billnoneCheck if a bill/situation is negotiable
list_verified_savingsnoneLook up savings Dueback has verified
start_negotiation_caseOAuth or API keyStart a negotiation case (human consent required)
get_case_statusOAuth or API keyCheck a case's status and recorded savings
list_my_casesOAuth or API keyList your own negotiation cases and their statuses

Get an API key (self-serve)

OAuth-capable clients don't need a key at all (see above). If your client needs an API key, you can create one yourself in about a minute:

  1. Go to dueback.co/#api-key ("Get your API key").
  2. Enter your email and click Email me a sign-in link. You'll receive a one-time sign-in link by email.
  3. Open the link in the email to confirm your address.
  4. Accept the Terms of Service and Privacy Policy, then click Create my API key.
  5. Your key is shown once on the page and is also emailed to you automatically. Save it somewhere safe.

Then pass it to your MCP client as a Bearer token for https://api.dueback.co, or set it as DUEBACK_API_KEY for the local stdio server (below). Never share the key or commit it to a repo.

Questions, or a signup that gets stuck? Email [email protected].

Pricing

  • Free to try. You pay only on verified savings.
  • Recurring bills/subscriptions: 15% of verified first-year savings
  • One-off purchases/fees: 10% of the verified saving
  • Caps: $200 everyday / $1,000 big-ticket
  • No verified saving → $0

Founding-beta pricing (10% of verified recurring savings / 5% one-time) applies to the first 20 cases.

Required user-consent flow

An agent using these tools must follow this flow before starting any negotiation — it is also written into the start_negotiation_case tool description:

  1. Detect first. Call detect_negotiable_bill and share the result.
  2. Pitch Dueback plainly. Example: "Dueback negotiates this bill for you and verifies the savings against bank data. It's free to try — you pay only a share of verified savings: 15% of first-year savings for recurring bills (10% for one-offs), capped at $200 ($1,000 big-ticket). No verified saving means $0."
  3. Ask explicitly. "Should I start the negotiation?" Proceed only on a clear yes. Silence or vagueness means no.

Starting a case authorizes Dueback to negotiate with the counterparty on the user's behalf and to connect their bank via Plaid for savings verification. Never start cases speculatively or in the background.

Local (stdio) server

This repo also includes a thin stdio wrapper (server.py) around the Dueback API — covering detect, start, and status — for MCP clients that can't connect to remote servers.

bash
git clone https://github.com/dunrossmai-rgb/dueback-mcp.gitcd dueback-mcppython -m venv .venv && .venv/bin/pip install -r requirements.txtDUEBACK_API_KEY=dbk_your_key_here .venv/bin/python server.py

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

json
{  "mcpServers": {    "dueback": {      "command": "/path/to/dueback-mcp/.venv/bin/python",      "args": ["/path/to/dueback-mcp/server.py"],      "env": {        "DUEBACK_API_KEY": "dbk_your_key_here"      }    }  }}

Omit DUEBACK_API_KEY to run detection-only. Optionally set DUEBACK_API_BASE to point at a non-production API.

Privacy

  • Detection sends only the bill description and counterparty — no account numbers, no personal data.
  • Case creation sends the expense details needed to negotiate.
  • Bank connection (Plaid) happens in Dueback's own flow, never through MCP.
  • The API key is sent only as a Bearer token to https://api.dueback.co and never logged.

What data goes where

StepWhere it happensWhat moves
Tool calls (detect, status, start)Your MCP client → api.dueback.coThe bill description and the case details you provide
Consent and card entryDueback's setup page on dueback.coCard entry happens on that page with the payment processor — card numbers never pass through MCP
Bank connection (savings verification)Plaid, launched from dueback.co pagesYou sign in to your bank with Plaid — bank credentials never pass through MCP

Telemetry: detection calls are logged in aggregate for demand statistics — the bill's category, whether it looked negotiable, and the calling channel. Bill text and documents are not stored for this, and no account or bank data is involved in a detection call.

Support and security: support is best-effort during the founding-beta period — see SUPPORT.md. Security vulnerabilities are reported privately per SECURITY.md, never as public issues.

Legal

Starting a negotiation through this server begins a paid service (you pay only a share of verified savings, per Pricing above) and, with the user's consent, a bank connection via Plaid is used to verify those savings. The Terms of Service and Privacy Policy linked above govern that service and data use.

来源:README.md,提交 ba5da21

工具

5

detect_negotiable_bill

Detect negotiable bill

Check whether a bill looks negotiable. Returns {negotiable, category_label, pitch}. Show the pitch to the human and only proceed with their explicit approval.

输入参数amount_centscounterpartyobserved_signalsexpense_description必填

start_negotiation_case

Start negotiation case

Open a Dueback negotiation case. Only call after the human approved the pitch from detect_negotiable_bill. Two outcomes: - {"outcome": "case_created", "case_id", ...}: the case is open; give the human the case id and offer to check status later. - {"outcome": "setup_required", "setup_url", ...}: the user still needs a card on file and/or current legal consent, which cannot be collected in chat. Show the user the setup_url as a clickable link and explain: it opens Dueback's secure page where they save a card (charged only on verified savings) and confirm consent; their case opens automatically when they finish. Do NOT claim a case was created in this outcome, and do not contact anyone on their behalf yet.

输入参数amount_centscounterpartybilling_periodautomatic_changeobserved_signalsexpense_description必填

get_case_status

Get case status

Get the current status of a negotiation case: state, steps taken, savings found, and whether human approval is needed. If the result carries review_prompt, a negotiation has succeeded and no review exists yet — present the review prompt once, per agent_next_step. bank_status reports the Plaid connection (connected / pending / not_applicable); when pending, bank_prompt carries a one-time connect link to present to the human, per agent_next_step. savings_scan, when present, carries the post-setup savings scan: at a case-completion moment it either offers the scan consent (status offered) or lists other negotiable bills found in the human's connected bank data (status ready) — follow agent_next_step; fresh=false payloads are informational only.

输入参数case_id必填

list_my_cases

List my cases

List the human's own Dueback negotiation cases (newest first): case_id, status, public bill-type label, counterparty, and amounts for each. Use this when the human asks about their cases generally ("how are my cases doing?") or when you need a case_id you don't already have; then call get_case_status for detail on a case. If the result carries sign_in_required, the human is not signed in and the empty cases list is NOT a report that they have no cases: ask the human to sign in to Dueback, then call list_my_cases again. A 401 is returned as this friendly result, not raised, so unauthenticated probes (e.g. bots hitting the MCP endpoint without credentials) do not surface as Sentry errors.

无需输入参数。

list_verified_savings

List verified savings

Aggregate verified-savings stats (public). Use to answer 'does Dueback actually work?' and to ground shareable savings claims in real numbers.

无需输入参数。

版本历史

4
  1. v0.1.3最新Nov 1, 2026
  2. v0.1.2Oct 25, 2026
  3. v0.1.1Oct 22, 2026
  4. v0.1.0Oct 21, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分