Koskamo

Zovo Bill Splitter MCP

An MCP server that calculates itemized bill splits with tax, tip, and service charges, settles group expenses with the fewest payments, and splits rent fairly based on room size or income. It supports exact cent calculations and CSV export but does not process payments or store data between sessions.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Bill Splitter MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://bill-splitter.zovo.one/mcp
Vendor documentation

What you can do with it

  • Split a restaurant bill by item with tax and tip
  • Settle group trip expenses with fewest payments
  • Split rent by room size or income

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
bill-splitter 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo Bill Splitter splits a restaurant bill item by item with tax, tip, service charge, and coupons shared in proportion to what each person ordered; settles group trip or roommate expenses with the fewest possible payments; and splits rent by room size or income. All amounts are exact to the cent and always add up to the total. Call a tool again with the full corrected arguments to change anything.

Tools

3 advertised

split_bill — Split a bill
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to split a restaurant bill, check, receipt, takeout order, or any single bill between people: evenly or item by item (who had what), with tax, tip, service charge, coupons, delivery fees, or rounding up. Tax, tip, and service charge are shared in proportion to each person's pre-tax subtotal; every share is exact to the cent and the shares add up exactly to the total (largest-remainder rounding). Optional paid_by lists who owes the payer. Does not read receipt photos (pass the items as text), handle several payers or many bills (use settle_group_expenses), or convert currencies.

split_bill input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "price"
        ],
        "properties": {
          "price": {
            "type": "number",
            "description": "Price of one unit before tax and tip, in the bill currency, e.g. 18.50."
          },
          "weights": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "maxItems": 50,
            "description": "Optional unequal portions in the same order as shared_by, e.g. [2, 1] when Ana ate twice as much as Ben."
          },
          "quantity": {
            "type": "number",
            "description": "How many units, e.g. 2 for two beers at the same price. Defaults to 1."
          },
          "shared_by": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 50,
            "description": "Names of the people who shared this item, e.g. [\"Ana\", \"Ben\"]. Omit (or use [\"everyone\"]) for an item everyone shared. Repeating a name gives that person an extra share."
          },
          "description": {
            "type": "string",
            "maxLength": 80,
            "description": "What it was, e.g. \"Margherita pizza\" or \"Bottle of wine\"."
          }
        }
      },
      "maxItems": 200,
      "description": "Line items from the receipt with who shared each one. Example: [{\"description\": \"Pizza\", \"price\": 24, \"shared_by\": [\"Ana\", \"Ben\"]}, {\"description\": \"Salad\", \"price\": 12, \"shared_by\": [\"Chloe\"]}]. Omit and use bill_amount to split one total evenly."
    },
    "title": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional label, e.g. \"Dinner at Luigi's\"."
    },
    "people": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "maxItems": 50,
      "description": "Everyone splitting the bill, e.g. [\"Ana\", \"Ben\", \"Chloe\"]. Needed when some items are shared by everyone or when someone had nothing. Optional if every item lists shared_by."
    },
    "paid_by": {
      "type": "string",
      "maxLength": 40,
      "description": "Who paid the whole bill, e.g. \"Ana\". Adds a list of who owes them how much."
    },
    "currency": {
      "type": "string",
      "maxLength": 8,
      "description": "ISO 4217 code, e.g. USD, EUR, GBP, JPY. Defaults to USD. JPY has no decimals, KWD has three."
    },
    "tip_base": {
      "enum": [
        "pre_tax",
        "post_tax"
      ],
      "type": "string",
      "description": "What tip_percent applies to: pre_tax (default, subtotal after discounts) or post_tax (subtotal plus service charge plus tax)."
    },
    "tax_amount": {
      "type": "number",
      "description": "Tax in money exactly as printed on the receipt, e.g. 7.38. Shared in proportion to each person's subtotal."
    },
    "tip_amount": {
      "type": "number",
      "description": "Tip in money, e.g. 25. Shared in proportion to each person's subtotal."
    },
    "bill_amount": {
      "type": "number",
      "description": "Use instead of items to split one amount evenly, e.g. 120. It is the amount before any tax_percent or tip_percent you add here; if the bill already includes tax, leave tax out."
    },
    "round_up_to": {
      "type": "number",
      "description": "Round each person's share up to a multiple of this amount, e.g. 1 for whole dollars or 5. The extra is shown separately."
    },
    "tax_percent": {
      "type": "number",
      "description": "Sales tax or VAT rate added on top of the item subtotal (after any discount), e.g. 8.875. Use tax_amount instead when the receipt shows the tax in money."
    },
    "tip_percent": {
      "type": "number",
      "description": "Tip rate, e.g. 18 or 20. Calculated on the pre-tax subtotal unless tip_base is post_tax."
    },
    "people_count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Number of people when names are not given, e.g. 5. They are labelled Person 1 to Person 5."
    },
    "discount_amount": {
      "type": "number",
      "description": "Coupon or deal on the whole bill in money, applied before tax, e.g. 15."
    },
    "discount_percent": {
      "type": "number",
      "description": "Coupon or deal on the whole bill in percent, applied before tax, e.g. 10."
    },
    "equal_fee_amount": {
      "type": "number",
      "description": "A flat fee split equally rather than by what people ordered, e.g. a 6.99 delivery fee or a cover charge."
    },
    "service_charge_amount": {
      "type": "number",
      "description": "Service charge in money, e.g. 9.75."
    },
    "service_charge_percent": {
      "type": "number",
      "description": "Service charge rate added by the restaurant, e.g. 12.5. Shared in proportion to each person's subtotal."
    }
  }
}
split_bill output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "title",
    "currency",
    "minor_units",
    "people",
    "items",
    "totals",
    "display",
    "labels",
    "settings",
    "paid_by",
    "owes",
    "check",
    "warnings",
    "hints"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "bill"
    },
    "owes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "from",
          "to",
          "amount",
          "display"
        ],
        "properties": {
          "to": {
            "type": "string"
          },
          "from": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "display": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "check": {
      "type": "object",
      "required": [
        "shares_sum",
        "equals_total"
      ],
      "properties": {
        "shares_sum": {
          "type": "string"
        },
        "equals_total": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "hints": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "description",
          "price",
          "quantity",
          "amount",
          "everyone",
          "shared_by",
          "weights",
          "shares"
        ],
        "properties": {
          "price": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "shares": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "weights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "everyone": {
            "type": "boolean"
          },
          "quantity": {
            "type": "string"
          },
          "shared_by": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "title": {
      "type": "string"
    },
    "labels": {
      "type": "object",
      "required": [
        "tax",
        "tip",
        "service_charge",
        "discount"
      ],
      "properties": {
        "tax": {
          "type": "string"
        },
        "tip": {
          "type": "string"
        },
        "discount": {
          "type": "string"
        },
        "service_charge": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "items",
          "discount",
          "service_charge",
          "tax",
          "tip",
          "fee",
          "rounding",
          "total",
          "display_total"
        ],
        "properties": {
          "fee": {
            "type": "string"
          },
          "tax": {
            "type": "string"
          },
          "tip": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "items": {
            "type": "string"
          },
          "total": {
            "type": "string"
          },
          "discount": {
            "type": "string"
          },
          "rounding": {
            "type": "string"
          },
          "display_total": {
            "type": "string"
          },
          "service_charge": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "totals": {
      "type": "object",
      "required": [
        "subtotal",
        "discount",
        "service_charge",
        "tax",
        "tip",
        "fee",
        "rounding",
        "total"
      ],
      "properties": {
        "fee": {
          "type": "string"
        },
        "tax": {
          "type": "string"
        },
        "tip": {
          "type": "string"
        },
        "total": {
          "type": "string"
        },
        "discount": {
          "type": "string"
        },
        "rounding": {
          "type": "string"
        },
        "subtotal": {
          "type": "string"
        },
        "service_charge": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "display": {
      "type": "object",
      "required": [
        "subtotal",
        "discount",
        "service_charge",
        "tax",
        "tip",
        "fee",
        "rounding",
        "total"
      ],
      "properties": {
        "fee": {
          "type": "string"
        },
        "tax": {
          "type": "string"
        },
        "tip": {
          "type": "string"
        },
        "total": {
          "type": "string"
        },
        "discount": {
          "type": "string"
        },
        "rounding": {
          "type": "string"
        },
        "subtotal": {
          "type": "string"
        },
        "service_charge": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "paid_by": {
      "type": [
        "string",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "settings": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "minor_units": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
split_bill annotations
{
  "title": "Split a bill",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
settle_group_expenses — Settle group expenses
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when a group (trip, vacation, roommates, couple, event) has several shared expenses paid by different people and wants to know who owes who and how to settle up. Each expense can be split equally, by exact amounts, by percentages, or by shares. Returns each person's balance (paid minus share, summing to exactly zero) and the fewest payments that settle every balance to the cent, plus a CSV of payments, balances, and expenses. One currency per call: mixed currencies are rejected and nothing is converted. Does not send payment requests, move money, or remember the group; for one restaurant bill use split_bill.

settle_group_expenses input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "expenses"
  ],
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional label, e.g. \"Lisbon trip\"."
    },
    "people": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "maxItems": 50,
      "description": "Everyone in the group, e.g. [\"Ana\", \"Ben\", \"Chloe\", \"Dev\"]. Needed when \"everyone\" should include someone who never paid. Optional otherwise."
    },
    "currency": {
      "type": "string",
      "maxLength": 8,
      "description": "ISO 4217 code for every expense, e.g. USD, EUR, GBP. Defaults to USD. Mixed currencies are rejected; nothing is converted."
    },
    "expenses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "paid_by"
        ],
        "properties": {
          "split": {
            "enum": [
              "equal",
              "exact",
              "percent",
              "shares"
            ],
            "type": "string",
            "description": "How to divide it: equal (default), exact (money amounts per person), percent (must add up to 100), or shares (weights such as 2 nights vs 1 night)."
          },
          "amount": {
            "type": "number",
            "description": "Total paid, e.g. 360. Optional only for split exact, where it defaults to the sum of the amounts."
          },
          "paid_by": {
            "type": "string",
            "maxLength": 40,
            "description": "The one person who paid, e.g. \"Ana\"."
          },
          "currency": {
            "type": "string",
            "maxLength": 8,
            "description": "ISO 4217 code if different from the top-level currency. All expenses in one call must share one currency."
          },
          "description": {
            "type": "string",
            "maxLength": 80,
            "description": "What it was for, e.g. \"Airbnb\" or \"Groceries\"."
          },
          "split_among": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 50,
            "description": "Who shares this cost, e.g. [\"Ana\", \"Ben\", \"Chloe\"]. Omit or use [\"everyone\"] for the whole group. The payer is included only if listed."
          },
          "split_values": {
            "type": "object",
            "description": "Per-person values for exact, percent, or shares, keyed by name, e.g. {\"Ana\": 2, \"Ben\": 1} for shares or {\"Ana\": 45.5, \"Ben\": 14.5} for exact.",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "number"
            }
          }
        }
      },
      "maxItems": 300,
      "description": "Every shared expense. Example: [{\"description\": \"Airbnb\", \"amount\": 360, \"paid_by\": \"Ana\"}, {\"description\": \"Gas\", \"amount\": 90, \"paid_by\": \"Ben\", \"split_among\": [\"Ben\", \"Chloe\"]}]. Record a repayment already made as an expense paid_by the person who paid it back, with split_among set to the person who received it."
    }
  }
}
settle_group_expenses output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "title",
    "currency",
    "minor_units",
    "people",
    "transfers",
    "transfer_count",
    "nonzero_balances",
    "minimal",
    "expenses",
    "expenses_shown",
    "expense_count",
    "totals",
    "display",
    "downloads",
    "warnings",
    "hints"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "settle"
    },
    "hints": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "title": {
      "type": "string"
    },
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "paid",
          "share",
          "balance",
          "display_balance",
          "status"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "paid": {
            "type": "string"
          },
          "share": {
            "type": "string"
          },
          "status": {
            "enum": [
              "gets_back",
              "owes",
              "settled"
            ],
            "type": "string"
          },
          "balance": {
            "type": "string"
          },
          "display_balance": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "totals": {
      "type": "object",
      "required": [
        "spent",
        "moved"
      ],
      "properties": {
        "moved": {
          "type": "string"
        },
        "spent": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "display": {
      "type": "object",
      "required": [
        "spent",
        "moved"
      ],
      "properties": {
        "moved": {
          "type": "string"
        },
        "spent": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "minimal": {
      "type": "boolean"
    },
    "currency": {
      "type": "string"
    },
    "expenses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "description",
          "amount",
          "paid_by",
          "split",
          "split_among",
          "split_values"
        ],
        "properties": {
          "split": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "paid_by": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "split_among": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "split_values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "transfers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "from",
          "to",
          "amount",
          "display"
        ],
        "properties": {
          "to": {
            "type": "string"
          },
          "from": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "display": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "minor_units": {
      "type": "number"
    },
    "expense_count": {
      "type": "number"
    },
    "expenses_shown": {
      "type": "number"
    },
    "transfer_count": {
      "type": "number"
    },
    "nonzero_balances": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
settle_group_expenses annotations
{
  "title": "Settle group expenses",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
split_rent — Split rent
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when roommates or housemates want to split rent fairly: by bedroom size (square feet or metres) with a shared-space portion split per occupant, by income, or equally, with optional per-room adjustments (private bathroom, no window), couples sharing a room, and utilities split per occupant. Every amount is exact to the cent and the parts add up exactly to the rent. Does not give legal or tenancy advice, collect rent, or handle one-off shared expenses (use settle_group_expenses for those).

split_rent input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "total_rent",
    "rooms"
  ],
  "properties": {
    "basis": {
      "enum": [
        "room_size",
        "income",
        "equal"
      ],
      "type": "string",
      "description": "How to split: room_size (default when every room has a size), income (in proportion to income), or equal (per occupant)."
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 40,
            "description": "Who lives there or the room label, e.g. \"Ana\" or \"Big room (Ana & Ben)\"."
          },
          "size": {
            "type": "number",
            "description": "Bedroom floor area in any one unit used for all rooms (square feet or square metres), e.g. 140."
          },
          "income": {
            "type": "number",
            "description": "Monthly or yearly income (same period for everyone) when splitting by income, e.g. 5200."
          },
          "occupants": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "People sharing this room, e.g. 2 for a couple. Shared space and extra costs are split per occupant. Defaults to 1."
          },
          "adjustment_percent": {
            "type": "number",
            "description": "Optional premium or reduction on the room's size-based part, e.g. 10 for a private bathroom or -10 for no window."
          }
        }
      },
      "maxItems": 20,
      "description": "Each bedroom or person. Example: [{\"name\": \"Ana\", \"size\": 160}, {\"name\": \"Ben\", \"size\": 120}, {\"name\": \"Chloe\", \"size\": 100}]."
    },
    "currency": {
      "type": "string",
      "maxLength": 8,
      "description": "ISO 4217 code, e.g. USD, EUR, GBP. Defaults to USD."
    },
    "total_rent": {
      "type": "number",
      "description": "Total monthly rent for the home, e.g. 3200."
    },
    "extra_costs": {
      "type": "number",
      "description": "Other monthly costs split equally per occupant, e.g. 180 for utilities and internet."
    },
    "shared_area": {
      "type": "number",
      "description": "Area of shared space (kitchen, living room, shared bathroom) in the same unit as the room sizes, e.g. 400. Its share of the total area is split equally per occupant."
    },
    "shared_percent": {
      "type": "number",
      "description": "Alternative to shared_area: percent of the rent treated as shared space and split equally per occupant, e.g. 40. Defaults to 50 for room_size when shared_area is not given."
    }
  }
}
split_rent output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "currency",
    "minor_units",
    "basis",
    "rooms",
    "totals",
    "display",
    "shared_percent",
    "shared_source",
    "settings",
    "assumptions",
    "warnings",
    "hints"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "rent"
    },
    "basis": {
      "type": "string"
    },
    "hints": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "size",
          "occupants",
          "adjustment_percent",
          "income",
          "size_part",
          "shared_part",
          "extras_part",
          "total",
          "display_total",
          "per_person",
          "percent_of_rent"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "size": {
            "type": [
              "string",
              "null"
            ]
          },
          "total": {
            "type": "string"
          },
          "income": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupants": {
            "type": "number"
          },
          "size_part": {
            "type": "string"
          },
          "per_person": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "extras_part": {
            "type": "string"
          },
          "shared_part": {
            "type": "string"
          },
          "display_total": {
            "type": "string"
          },
          "percent_of_rent": {
            "type": "string"
          },
          "adjustment_percent": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "totals": {
      "type": "object",
      "required": [
        "rent",
        "extra_costs",
        "shared_pool",
        "size_pool",
        "total"
      ],
      "properties": {
        "rent": {
          "type": "string"
        },
        "total": {
          "type": "string"
        },
        "size_pool": {
          "type": "string"
        },
        "extra_costs": {
          "type": "string"
        },
        "shared_pool": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "display": {
      "type": "object",
      "required": [
        "rent",
        "extra_costs",
        "total"
      ],
      "properties": {
        "rent": {
          "type": "string"
        },
        "total": {
          "type": "string"
        },
        "extra_costs": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "currency": {
      "type": "string"
    },
    "settings": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "minor_units": {
      "type": "number"
    },
    "shared_source": {
      "type": [
        "string",
        "null"
      ]
    },
    "shared_percent": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
split_rent annotations
{
  "title": "Split rent",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

bill-splitter-widget — Zovo Bill Splitter view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Bill Splitter.

bill-splitter-widget URI
ui://widget/bill-splitter-v1-1.0.0-f3d28b332fda60d6a820fdd37ade58dd7369561451d76afb15cd8edbd7fb7081.html

MIME type: text/html;profile=mcp-app

bill-splitter-widget-legacy — Zovo Bill Splitter view (previous versions)

Advertised by the server during the last successful anonymous check.

bill-splitter-widget-legacy URI template
ui://widget/bill-splitter-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
607 ms
95th percentile latency
607 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 607 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-bill-splitter-mcp https://bill-splitter.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-bill-splitter-mcp --url https://bill-splitter.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-bill-splitter-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-bill-splitter-mcp": {
      "url": "https://bill-splitter.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-bill-splitter-mcp": {
      "type": "streamableHttp",
      "url": "https://bill-splitter.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-bill-splitter-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-bill-splitter-mcp": {
      "type": "http",
      "url": "https://bill-splitter.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-bill-splitter-mcp https://bill-splitter.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-bill-splitter-mcp": {
      "url": "https://bill-splitter.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-bill-splitter-mcp": {
      "serverUrl": "https://bill-splitter.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Bill Splitter MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.