RoomSplit MCP
RoomSplit provides MCP tools for AI assistants to split rent and utilities among housemates, settle up shared costs, and draft plain-language roommate agreements. It performs pure arithmetic calculations without processing payments or storing user data.
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.
https://room-split.magicteams.ai/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (4)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Split fixed monthly rent across rooms equally or weighted by room size
- Split utility bills equally, by occupants, or by usage weight
- Compute balances and fewest payments to settle shared costs
- Draft a plain-language shared-living agreement with house rules
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- room-split 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
split_rent — Split rent
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).
{
"type": "object",
"required": [
"total_rent",
"rooms"
],
"properties": {
"rooms": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"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"
}
}
},
"minItems": 1,
"description": "Every room that pays rent (room names must be unique), e.g. [{\"name\":\"Master\",\"size\":20,\"occupants\":[\"Asha\",\"Dev\"]}]"
},
"method": {
"enum": [
"equal",
"by_size"
],
"type": "string",
"description": "'equal' (same rent per room) or 'by_size' (proportional to size). Default: by_size when every room has a size, else equal"
},
"total_rent": {
"type": "number",
"description": "Monthly rent for the whole home, positive number in any currency, e.g. 2400"
}
}
}{
"type": "object",
"required": [
"method",
"total_rent",
"rooms",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "Plain-language explanation of how the rent was split"
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"weight",
"rent"
],
"properties": {
"name": {
"type": "string",
"description": "Room label"
},
"rent": {
"type": "number",
"description": "Monthly rent for this room"
},
"weight": {
"type": "number",
"description": "Weight used: room size for by_size, 1 for equal"
},
"per_occupant": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
}
},
"description": "Equal split of this room's rent between its occupants (only when occupants were given)"
}
}
},
"description": "Per-room rent shares, in input order; they sum to total_rent"
},
"method": {
"enum": [
"equal",
"by_size"
],
"type": "string",
"description": "Split method actually applied"
},
"total_rent": {
"type": "number",
"description": "Total monthly rent that was split, rounded to cents"
}
}
}{
"title": "Split rent",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}split_utilities — Split utilities
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).
{
"type": "object",
"required": [
"bills",
"people"
],
"properties": {
"bills": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount",
"split"
],
"properties": {
"name": {
"type": "string",
"description": "Unique bill label, e.g. 'Electricity'"
},
"split": {
"enum": [
"equal",
"by_occupants",
"by_usage"
],
"type": "string",
"description": "'equal' per person, 'by_occupants' weighted by each person's occupants, or 'by_usage' weighted by usage_weight (required on everyone)"
},
"amount": {
"type": "number",
"description": "Bill total, positive number, e.g. 120"
}
}
},
"minItems": 1,
"description": "Bills to split (names must be unique), e.g. [{\"name\":\"Electricity\",\"amount\":120,\"split\":\"by_usage\"}]"
},
"people": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"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"
}
}
},
"minItems": 1,
"description": "Housemates sharing the bills (names must be unique), e.g. [{\"name\":\"Asha\",\"usage_weight\":2},{\"name\":\"Dev\",\"usage_weight\":1}]"
}
}
}{
"type": "object",
"required": [
"bills",
"totals",
"grand_total",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "Plain-language explanation of the totals"
},
"bills": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount",
"split",
"shares"
],
"properties": {
"name": {
"type": "string",
"description": "Bill label"
},
"split": {
"enum": [
"equal",
"by_occupants",
"by_usage"
],
"type": "string",
"description": "Split rule applied"
},
"amount": {
"type": "number",
"description": "Bill total, rounded to cents"
},
"shares": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
}
},
"description": "Each person's share of this bill"
}
}
},
"description": "Each bill with its per-person shares (shares sum to the bill amount)"
},
"totals": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"description": "Person's name"
},
"amount": {
"type": "number",
"description": "Amount, rounded to cents"
}
}
},
"description": "Total each person owes across all bills"
},
"grand_total": {
"type": "number",
"description": "Sum of all bill amounts"
}
}
}{
"title": "Split utilities",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}settle_up — Settle up
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).
{
"type": "object",
"required": [
"costs",
"payments"
],
"properties": {
"costs": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"description": "Unique cost label, e.g. 'Weekly shop'"
},
"amount": {
"type": "number",
"description": "Cost amount, positive number"
}
}
},
"minItems": 1,
"description": "Shared costs, split equally between everyone in payments (names must be unique), e.g. [{\"name\":\"Groceries\",\"amount\":140}]"
},
"payments": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"paid"
],
"properties": {
"name": {
"type": "string",
"description": "Unique housemate name"
},
"paid": {
"type": "number",
"description": "Amount this housemate already paid towards the costs, 0 or more"
}
}
},
"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}]"
}
}
}{
"type": "object",
"required": [
"total_costs",
"people",
"transfers",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "Summary of how many payments settle the group"
},
"people": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"paid",
"owed",
"balance"
],
"properties": {
"name": {
"type": "string",
"description": "Housemate name"
},
"owed": {
"type": "number",
"description": "Equal share of the total costs"
},
"paid": {
"type": "number",
"description": "Amount already paid"
},
"balance": {
"type": "number",
"description": "paid minus owed; positive = should receive money, negative = owes money"
}
}
},
"description": "Per-housemate paid, owed and balance"
},
"transfers": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to",
"amount"
],
"properties": {
"to": {
"type": "string",
"description": "Housemate who receives"
},
"from": {
"type": "string",
"description": "Housemate who pays"
},
"amount": {
"type": "number",
"description": "Amount to transfer"
}
}
},
"description": "Fewest payments that settle all balances (empty when settled)"
},
"total_costs": {
"type": "number",
"description": "Sum of all shared costs"
}
}
}{
"title": "Settle up",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}roommate_agreement — Roommate agreement
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).
{
"type": "object",
"required": [
"property_address",
"tenants",
"move_in_date",
"monthly_rent",
"deposit"
],
"properties": {
"deposit": {
"type": "number",
"description": "Total deposit amount, 0 or more (0 = no deposit)"
},
"tenants": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"description": "Unique names of all tenants (at least 2), e.g. [\"Asha\",\"Dev\"]"
},
"house_rules": {
"type": "array",
"items": {
"type": "string"
},
"description": "Custom house rules, one sentence each; default covers quiet hours, guests, cleaning rota and shared supplies"
},
"monthly_rent": {
"type": "number",
"description": "Total monthly rent for the home, positive; split equally between tenants in the text"
},
"move_in_date": {
"type": "string",
"description": "Move-in date YYYY-MM-DD, e.g. 2026-11-01"
},
"property_address": {
"type": "string",
"description": "Street address of the shared home, e.g. '12 Elm Street, Flat 3'"
},
"room_assignments": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"room"
],
"properties": {
"name": {
"type": "string",
"description": "Tenant name (must be in tenants)"
},
"room": {
"type": "string",
"description": "Room label, e.g. 'Box room'"
}
}
},
"description": "Optional: who sleeps in which room, one room per tenant; names must match tenants"
},
"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"
}
}
}{
"type": "object",
"required": [
"agreement",
"checklist",
"disclaimer"
],
"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"
}
}
}{
"title": "Roommate agreement",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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
- 222 ms
- 95th percentile latency
- 222 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 222 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http roomsplit-mcp https://room-split.magicteams.ai/mcpCodex
codex mcp add roomsplit-mcp --url https://room-split.magicteams.ai/mcpCursor
{
"mcpServers": {
"roomsplit-mcp": {
"url": "https://room-split.magicteams.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"roomsplit-mcp": {
"type": "streamableHttp",
"url": "https://room-split.magicteams.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"roomsplit-mcp": {
"type": "http",
"url": "https://room-split.magicteams.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http roomsplit-mcp https://room-split.magicteams.ai/mcpClaude Desktop
https://room-split.magicteams.ai/mcpWindsurf
{
"mcpServers": {
"roomsplit-mcp": {
"serverUrl": "https://room-split.magicteams.ai/mcp"
}
}
}Let your agent find its tools
Find servers like RoomSplit MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.