Skip to main content
Glama

Split rent

split_rent
Read-onlyIdempotent

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

NameRequiredDescriptionDefault
roomsYesEvery room that pays rent (room names must be unique), e.g. [{"name":"Master","size":20,"occupants":["Asha","Dev"]}]
methodNo'equal' (same rent per room) or 'by_size' (proportional to size). Default: by_size when every room has a size, else equal
total_rentYesMonthly rent for the whole home, positive number in any currency, e.g. 2400

Output Schema

NameRequiredDescriptionDefault
noteYesPlain-language explanation of how the rent was split
roomsYesPer-room rent shares, in input order; they sum to total_rent
methodYesSplit method actually applied
total_rentYesTotal monthly rent that was split, rounded to cents

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • changedInput schema / properties / method / description
      Previous value: -"Split method; default by_size when every room has a size, else equal"New value: +"'equal' (same rent per room) or 'by_size' (proportional to size). Default: by_size when every room has a size, else equal"
    • changedInput schema / properties / rooms / description
      Previous value: -"Rooms in the house"New value: +"Every room that pays rent (room names must be unique), e.g. [{\"name\":\"Master\",\"size\":20,\"occupants\":[\"Asha\",\"Dev\"]}]"
    • addedInput schema / properties / rooms / items / properties / name / description
      Added value: +"Unique room label, e.g. 'Master bedroom'"
    • addedInput schema / properties / rooms / items / properties / occupants / description
      Added value: +"Names of the people in this room; when given, the room's rent is split equally between them"
    • addedInput schema / properties / rooms / items / properties / size / description
      Added value: +"Room area (m2 or ft2, any consistent unit), positive; needed on every room for by_size"
    • addedInput schema / properties / rooms / minItems
      Added value: +1
    • changedInput schema / properties / total_rent / description
      Previous value: -"Monthly rent for the whole house"New value: +"Monthly rent for the whole home, positive number in any currency, e.g. 2400"
    • addedOutput schema / properties / method
      Added value: +{
      +  "description": "Split method actually applied",
      +  "enum": [
      +    "equal",
      +    "by_size"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Plain-language explanation of how the rent was split",
      +  "type": "string"
      +}
    • changedOutput schema / properties / rooms / description
      Previous value: -"The rooms in the house and their respective shares."New value: +"Per-room rent shares, in input order; they sum to total_rent"
    • changedOutput schema / properties / rooms / items / properties / name / description
      Previous value: -"The name of the room."New value: +"Room label"
    • removedOutput schema / properties / rooms / items / properties / occupants
      Removed value: -{
      -  "description": "The occupants of the room and their respective shares.",
      -  "items": {
      -    "properties": {
      -      "name": {
      -        "description": "The name of the occupant.",
      -        "type": "string"
      -      },
      -      "share": {
      -        "description": "The amount of rent this occupant owes.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "share"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / rooms / items / properties / per_occupant
      Added value: +{
      +  "description": "Equal split of this room's rent between its occupants (only when occupants were given)",
      +  "items": {
      +    "properties": {
      +      "amount": {
      +        "description": "Amount, rounded to cents",
      +        "type": "number"
      +      },
      +      "name": {
      +        "description": "Person's name",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "amount"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / rooms / items / properties / rent
      Added value: +{
      +  "description": "Monthly rent for this room",
      +  "type": "number"
      +}
    • removedOutput schema / properties / rooms / items / properties / share
      Removed value: -{
      -  "description": "The amount of rent this room owes.",
      -  "type": "number"
      -}
    • removedOutput schema / properties / rooms / items / properties / size
      Removed value: -{
      -  "description": "The size of the room.",
      -  "type": "number"
      -}
    • addedOutput schema / properties / rooms / items / properties / weight
      Added value: +{
      +  "description": "Weight used: room size for by_size, 1 for equal",
      +  "type": "number"
      +}
    • changedOutput schema / properties / rooms / items / required
      Previous value: -[
      -  "name",
      -  "share"
      -]New value: +[
      +  "name",
      +  "weight",
      +  "rent"
      +]
    • changedOutput schema / properties / total_rent / description
      Previous value: -"The total monthly rent for the whole house."New value: +"Total monthly rent that was split, rounded to cents"
    • changedOutput schema / required
      Previous value: -[
      -  "total_rent",
      -  "rooms"
      -]New value: +[
      +  "method",
      +  "total_rent",
      +  "rooms",
      +  "note"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "rooms": {
      +      "description": "The rooms in the house and their respective shares.",
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "description": "The name of the room.",
      +            "type": "string"
      +          },
      +          "occupants": {
      +            "description": "The occupants of the room and their respective shares.",
      +            "items": {
      +              "properties": {
      +                "name": {
      +                  "description": "The name of the occupant.",
      +                  "type": "string"
      +                },
      +                "share": {
      +                  "description": "The amount of rent this occupant owes.",
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "share"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "share": {
      +            "description": "The amount of rent this room owes.",
      +            "type": "number"
      +          },
      +          "size": {
      +            "description": "The size of the room.",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "share"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_rent": {
      +      "description": "The total monthly rent for the whole house.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total_rent",
      +    "rooms"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds the useful behavioral detail that a shared room's rent is divided equally among its occupants, and it hints at the default method logic. It stops short of describing output shape, but that is largely covered elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the operation, followed by routing guidance. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a pure computation tool with full schema coverage and an output schema, the description supplies everything an agent needs: what it computes, the two modes, the occupant rule, and when to pick a sibling instead.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents total_rent, rooms, occupants, size and the method enum with its default rule. The description restates the same semantics rather than adding new meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (split) and resource (fixed monthly rent) and enumerates both allocation modes (equal, by size) plus the occupant sub-split. It is immediately distinguishable from split_utilities and settle_up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('Use when deciding who pays how much rent') and two explicit exclusions with named alternatives: utility bills go to split_utilities, settling past payments goes to settle_up. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources