
Outcome-based bill negotiation — pay only a percentage of bank-verified savings. Free to try.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check whether a bill looks negotiable. Returns {negotiable, category_label, pitch}. Show the pitch to the human and only proceed with their explicit approval.
Check whether a bill looks negotiable. Returns {negotiable, category_label, pitch}. Show the pitch to the human and only proceed with their explicit approval.
| Argument | Type | Description |
|---|---|---|
| amount_cents | any | |
| counterparty | any | |
| observed_signals | any | |
| expense_description* | string |
{
"type": "object",
"title": "detect_negotiable_billArguments",
"required": [
"expense_description"
],
"properties": {
"amount_cents": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount Cents",
"default": null
},
"counterparty": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Counterparty",
"default": null
},
"observed_signals": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Observed Signals",
"default": null
},
"expense_description": {
"type": "string",
"title": "Expense Description"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| case_id* | string |
{
"type": "object",
"title": "get_case_statusArguments",
"required": [
"case_id"
],
"properties": {
"case_id": {
"type": "string",
"title": "Case Id"
}
}
}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.
No arguments.
{
"type": "object",
"title": "list_my_casesArguments",
"properties": {}
}Aggregate verified-savings stats (public). Use to answer 'does Dueback actually work?' and to ground shareable savings claims in real numbers.
No arguments.
{
"type": "object",
"title": "list_verified_savingsArguments",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| amount_cents | any | |
| counterparty | any | |
| billing_period | string | |
| automatic_change | boolean | |
| observed_signals | any | |
| expense_description* | string |
{
"type": "object",
"title": "start_negotiation_caseArguments",
"required": [
"expense_description"
],
"properties": {
"amount_cents": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount Cents",
"default": null
},
"counterparty": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Counterparty",
"default": null
},
"billing_period": {
"type": "string",
"title": "Billing Period",
"default": "unknown"
},
"automatic_change": {
"type": "boolean",
"title": "Automatic Change",
"default": false
},
"observed_signals": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Observed Signals",
"default": null
},
"expense_description": {
"type": "string",
"title": "Expense Description"
}
}
}