RoomSplit
Split rent and utilities by room, settle up and generate roommate agreements. Free.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"room-split": {
"url": "https://room-split.magicteams.ai/mcp"
}
}
}Remote endpoints
https://room-split.magicteams.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢split_rent(total_rent, rooms, method)
Split a fixed monthly rent across rooms, equally or weighted by room size, and divide a shared room's rent equally between its occupants. Use when deciding who pays how much rent. Do NOT use for utility bills (use split_utilities) or to settle who already paid what (use settle_up).
Input Schema
{
"type": "object",
"properties": {
"total_rent": {
"type": "number",
"description": "Monthly rent for the whole home, positive number in any currency, e.g. 2400"
},
"rooms": {
"type": "array",
"minItems": 1,
"description": "Every room that pays rent (room names must be unique), e.g. [{\"name\":\"Master\",\"size\":20,\"occupants\":[\"Asha\",\"Dev\"]}]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique room label, e.g. 'Master bedroom'"
},
"size": {
"type": "number",
"description": "Room area (m2 or ft2, any consistent unit), positive; needed on every room for by_size"
},
"occupants": {
"type": "array",
"items": {
"type": "string"
},
"description": "Names of the people in this room; when given, the room's rent is split equally between them"
}
},
"required": [
"name"
]
}
},
"method": {
"type": "string",
"enum": [
"equal",
"by_size"
],
"description": "'equal' (same rent per room) or 'by_size' (proportional to size). Default: by_size when every room has a size, else equal"
}
},
"required": [
"total_rent",
"rooms"
]
}Output Schema
{
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"equal",
"by_size"
],
"description": "Split method actually applied"
},
"total_rent": {
"type": "number",
"description": "Total monthly rent that was split, rounded to cents"
},
"rooms": {
"type": "array",
"description": "Per-room rent shares, in input order; they sum to total_rent",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Room label"
},
"weight": {
"type": "number",
"description": "Weight used: room size for by_size, 1 for equal"
},
"rent": {
"type": "number",
"description": "Monthly rent for this room"
},
"per_occupant": {
"type": "array",
"description": "Equal split of this room's rent between its occupants (only when occupants were given)",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
},
"required": [
"name",
"amount"
]
}
}
},
"required": [
"name",
"weight",
"rent"
]
}
},
"note": {
"type": "string",
"description": "Plain-language explanation of how the rent was split"
}
},
"required": [
"method",
"total_rent",
"rooms",
"note"
]
}🟢split_utilities(bills, people)
Split utility and household bills across housemates, each bill equally, by occupants, or by usage weight, and total what each person owes. Use for recurring shared bills such as electricity, gas or internet. Do NOT use for rent (use split_rent) or to settle who already paid (use settle_up).
Input Schema
{
"type": "object",
"properties": {
"bills": {
"type": "array",
"minItems": 1,
"description": "Bills to split (names must be unique), e.g. [{\"name\":\"Electricity\",\"amount\":120,\"split\":\"by_usage\"}]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique bill label, e.g. 'Electricity'"
},
"amount": {
"type": "number",
"description": "Bill total, positive number, e.g. 120"
},
"split": {
"type": "string",
"enum": [
"equal",
"by_occupants",
"by_usage"
],
"description": "'equal' per person, 'by_occupants' weighted by each person's occupants, or 'by_usage' weighted by usage_weight (required on everyone)"
}
},
"required": [
"name",
"amount",
"split"
]
}
},
"people": {
"type": "array",
"minItems": 1,
"description": "Housemates sharing the bills (names must be unique), e.g. [{\"name\":\"Asha\",\"usage_weight\":2},{\"name\":\"Dev\",\"usage_weight\":1}]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique housemate name"
},
"occupants": {
"type": "number",
"description": "How many people this housemate pays for (by_occupants bills), positive, default 1"
},
"usage_weight": {
"type": "number",
"description": "Relative usage for by_usage bills, positive, e.g. 2 for double use, 0.5 for a light user"
}
},
"required": [
"name"
]
}
}
},
"required": [
"bills",
"people"
]
}Output Schema
{
"type": "object",
"properties": {
"bills": {
"type": "array",
"description": "Each bill with its per-person shares (shares sum to the bill amount)",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Bill label"
},
"amount": {
"type": "number",
"description": "Bill total, rounded to cents"
},
"split": {
"type": "string",
"enum": [
"equal",
"by_occupants",
"by_usage"
],
"description": "Split rule applied"
},
"shares": {
"type": "array",
"description": "Each person's share of this bill",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
},
"required": [
"name",
"amount"
]
}
}
},
"required": [
"name",
"amount",
"split",
"shares"
]
}
},
"totals": {
"type": "array",
"description": "Total each person owes across all bills",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
},
"required": [
"name",
"amount"
]
}
},
"grand_total": {
"type": "number",
"description": "Sum of all bill amounts"
},
"note": {
"type": "string",
"description": "Plain-language explanation of the totals"
}
},
"required": [
"bills",
"totals",
"grand_total",
"note"
]
}🟢settle_up(costs, payments)
Split shared costs equally between housemates, compare with what each already paid, and compute balances plus the fewest payments that settle everyone. Use after people fronted money for the group. Computes only; moves no money. Do NOT use for usage-weighted bills (use split_utilities).
Input Schema
{
"type": "object",
"properties": {
"costs": {
"type": "array",
"minItems": 1,
"description": "Shared costs, split equally between everyone in payments (names must be unique), e.g. [{\"name\":\"Groceries\",\"amount\":140}]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique cost label, e.g. 'Weekly shop'"
},
"amount": {
"type": "number",
"description": "Cost amount, positive number"
}
},
"required": [
"name",
"amount"
]
}
},
"payments": {
"type": "array",
"minItems": 1,
"description": "Every housemate sharing the costs and what they already paid (include people who paid 0), e.g. [{\"name\":\"Asha\",\"paid\":150},{\"name\":\"Mira\",\"paid\":0}]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique housemate name"
},
"paid": {
"type": "number",
"description": "Amount this housemate already paid towards the costs, 0 or more"
}
},
"required": [
"name",
"paid"
]
}
}
},
"required": [
"costs",
"payments"
]
}Output Schema
{
"type": "object",
"properties": {
"total_costs": {
"type": "number",
"description": "Sum of all shared costs"
},
"people": {
"type": "array",
"description": "Per-housemate paid, owed and balance",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Housemate name"
},
"paid": {
"type": "number",
"description": "Amount already paid"
},
"owed": {
"type": "number",
"description": "Equal share of the total costs"
},
"balance": {
"type": "number",
"description": "paid minus owed; positive = should receive money, negative = owes money"
}
},
"required": [
"name",
"paid",
"owed",
"balance"
]
}
},
"transfers": {
"type": "array",
"description": "Fewest payments that settle all balances (empty when settled)",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "Housemate who pays"
},
"to": {
"type": "string",
"description": "Housemate who receives"
},
"amount": {
"type": "number",
"description": "Amount to transfer"
}
},
"required": [
"from",
"to",
"amount"
]
}
},
"note": {
"type": "string",
"description": "Summary of how many payments settle the group"
}
},
"required": [
"total_costs",
"people",
"transfers",
"note"
]
}🟢roommate_agreement(property_address, tenants, move_in_date, monthly_rent, deposit, ...)
Draft a plain-language shared-living agreement (parties, term, equal rent shares, deposit, utilities, house rules, notice, signature lines) plus a pre-signing checklist. Use when housemates want house terms in writing. Not legal advice. Do NOT use to compute unequal rent (use split_rent) or bill shares (use split_utilities).
Input Schema
{
"type": "object",
"properties": {
"property_address": {
"type": "string",
"description": "Street address of the shared home, e.g. '12 Elm Street, Flat 3'"
},
"tenants": {
"type": "array",
"minItems": 2,
"items": {
"type": "string"
},
"description": "Unique names of all tenants (at least 2), e.g. [\"Asha\",\"Dev\"]"
},
"move_in_date": {
"type": "string",
"description": "Move-in date YYYY-MM-DD, e.g. 2026-11-01"
},
"monthly_rent": {
"type": "number",
"description": "Total monthly rent for the home, positive; split equally between tenants in the text"
},
"deposit": {
"type": "number",
"description": "Total deposit amount, 0 or more (0 = no deposit)"
},
"room_assignments": {
"type": "array",
"description": "Optional: who sleeps in which room, one room per tenant; names must match tenants",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Tenant name (must be in tenants)"
},
"room": {
"type": "string",
"description": "Room label, e.g. 'Box room'"
}
},
"required": [
"name",
"room"
]
}
},
"utilities_policy": {
"type": "string",
"description": "One sentence on how utilities are shared; default: split equally between tenants unless agreed otherwise"
},
"notice_period_months": {
"type": "integer",
"minimum": 1,
"description": "Notice period in whole months, default 1"
},
"house_rules": {
"type": "array",
"items": {
"type": "string"
},
"description": "Custom house rules, one sentence each; default covers quiet hours, guests, cleaning rota and shared supplies"
}
},
"required": [
"property_address",
"tenants",
"move_in_date",
"monthly_rent",
"deposit"
]
}Output Schema
{
"type": "object",
"properties": {
"agreement": {
"type": "string",
"description": "Full agreement text, numbered sections and signature lines"
},
"checklist": {
"type": "array",
"items": {
"type": "string"
},
"description": "Practical steps to complete before signing"
},
"disclaimer": {
"type": "string",
"description": "Not-legal-advice disclaimer for the template"
}
},
"required": [
"agreement",
"checklist",
"disclaimer"
]
}Community
Evidence