Partly Exact Split

Split expenses in cents with equal/weighted shares and payer advances. No account or payments.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
80%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~800Tokens (tool definitions)
~7.3 KBTypical response size
Moderate attention impact (0.63% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "exact-split": {
      "url": "https://partly-exact-split.paul-brousses.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://partly-exact-split.paul-brousses.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (1)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢calculate_shared_expenses(currency, participants, expenses)

Calculate balances and reimbursement suggestions for 2–30 participants across 1–100 expenses with different payers and equal or weighted shares. Uses integer cents, deterministic largest-remainder allocation, and offsets debts. Supported single currencies: EUR, USD, GBP, CHF, CAD; no conversion. The tool is stateless and cannot access accounts, fetch data, store results or transfer money. Use aliases when possible.

Input Schema

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "enum": [
        "EUR",
        "USD",
        "GBP",
        "CHF",
        "CAD"
      ]
    },
    "participants": {
      "minItems": 2,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "Display label or alias. Do not include bank, email or other sensitive identifiers."
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false
      }
    },
    "expenses": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "amountCents": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100000000,
            "description": "Positive integer minor units: 18.34 becomes 1834. Never pass floating currency values."
          },
          "payerId": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
          },
          "shares": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
            },
            "additionalProperties": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000
            },
            "description": "Participant IDs mapped to positive whole-number weights. Omit a participant to exclude them; all 1 means equal shares."
          }
        },
        "required": [
          "amountCents",
          "payerId",
          "shares"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "currency",
    "participants",
    "expenses"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "enum": [
        "EUR",
        "USD",
        "GBP",
        "CHF",
        "CAD"
      ]
    },
    "totalCents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000000
    },
    "participants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
          },
          "name": {
            "type": "string"
          },
          "paidCents": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "owedCents": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "balanceCents": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "name",
          "paidCents",
          "owedCents",
          "balanceCents"
        ],
        "additionalProperties": false
      }
    },
    "transfers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "fromId": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
          },
          "toId": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,39}$"
          },
          "amountCents": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "fromId",
          "toId",
          "amountCents"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "currency",
    "totalCents",
    "participants",
    "transfers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded1 tools