Halves
Server Details
Split shared costs fairly: who owes whom, in the fewest payments. No account.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one creates a persistent shared group page, while the other performs a one-off settlement calculation without saving. Their descriptions explicitly cross-reference each other to guide correct selection, leaving no meaningful ambiguity.
Both tools use the same consistent halves_ prefix followed by snake_case action phrases: create_group_link and settle_up. The convention is predictable and readable throughout.
Two tools is slightly below the typical range, but it fits this tightly scoped server: one tool handles one-off calculations and the other handles persistent group creation. Each tool has a clear role without unnecessary surface area.
The surface covers the two core workflows—calculating settlements and creating a shared editable group link—but lacks MCP operations to retrieve, update, or delete an existing group's expenses. Agents can work around this via the returned web link, but the lifecycle is only partially represented in the tool set.
Available Tools
2 toolshalves_create_group_linkCreate a shared expense group linkAInspect
Use when the user wants a shared place for a group (trip, flat, event) to keep adding expenses and see who owes whom, not just a one-time calculation. Creates a group and returns a link anyone can open without signing up to add and edit expenses. Anyone with the link can edit it, so share it only with the group. Creates a saved page, so only call it when the user wants a shared group. For a one-off answer use halves_settle_up. Example: {"name": "Lisbon trip", "currency": "EUR", "people": ["Ana", "Ben", "Cy"]}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Group name, e.g. "Lisbon trip". | |
| people | Yes | Names (2 to 40). | |
| currency | No | Main currency, default USD. | |
| expenses | No | Optional starting expenses (up to 50), same shape as the settle tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the return value is a shareable link, no signup is required for recipients, anyone with the link can edit, and a persisted page is created. It doesn't address what happens on repeated calls (a duplicate group?) despite idempotentHint=false, which would be the remaining useful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core use case and alternative routing, and everything included is relevant. The one-off distinction is stated three times in slightly different words ("not just a one-time calculation", "only call it when...", "For a one-off answer use halves_settle_up"), which is mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description supplies the missing return semantics (a link), the access model (anyone can open/edit, no signup), the persistence side effect, and the routing alternative. An agent has enough to call it correctly and to explain the outcome to a user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the worked example ({"name": "Lisbon trip", "currency": "EUR", "people": [...]}) makes the shape and intent of the parameters concrete in a way the schema alone does not. The optional `expenses` parameter is not mentioned in the description beyond the general concept of expenses.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource (creates a group, returns a link) and immediately distinguishes the outcome from a one-time calculation by naming the sibling tool. An agent can tell this apart from halves_settle_up without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (user wants a shared place to keep adding expenses and see who owes whom) and explicit when-not (one-off answer → use halves_settle_up). It also warns that only calling when a shared group is wanted matters because a saved page is created.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halves_settle_upWork out who owes whom in the fewest paymentsARead-onlyIdempotentInspect
Use when the user shares a trip, dinner, household or group expense list and asks who owes whom, how to split costs, or how to settle up. Returns each person's paid, share and net balance, and the smallest set of payments that squares everyone up. Handles equal splits, splits among a subset, exact amounts and payments already made, with correct rounding. Nothing is saved. Example: {"people": ["Ana", "Ben", "Cy"], "expenses": [{"what": "Dinner", "amount": 90, "paid_by": "Ana"}, {"what": "Taxi", "amount": 24, "paid_by": "Ben", "split_between": ["Ben", "Cy"]}]}. Do the arithmetic here instead of by hand.
| Name | Required | Description | Default |
|---|---|---|---|
| people | Yes | Names of everyone in the group (2 to 40, unique). | |
| currency | No | ISO currency code, default USD. | |
| expenses | Yes | What was paid. | |
| payments | No | Payments already made between people to settle up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description reinforces this with "Nothing is saved" and adds non-obvious behavior beyond the annotations — correct rounding and support for payments already made. It does not describe failure modes (e.g. a paid_by name absent from people, or an exact map that fails to sum to amount), which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger, then the return contract, then capabilities, then a concrete example — a sensible ordering with no filler sentences. The inline JSON example is bulky for a description, but it is the fastest way to convey the expense object shape and earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly discharges the return-value burden by naming paid, share, net balance and the minimal payment set. For a 4-parameter arithmetic tool that is nearly complete; only edge-case behavior (invalid names, mismatched exact sums, duplicate participants) goes unmentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns more by explaining the semantics behind the parameters — that splits can be equal, limited to a subset, or exact per person, and that prior payments factor into the netting. The worked example also shows how people, expenses and split_between compose in practice, though it does not mention the currency parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — compute who owes whom and the minimal set of settling payments — and enumerates the input shapes it handles (equal splits, subset splits, exact amounts, prior payments). An agent can immediately distinguish this from the only sibling, halves_create_group_link, which persists a group rather than doing arithmetic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the user shares a trip, dinner, household or group expense list and asks who owes whom, how to split costs, or how to settle up" gives concrete trigger conditions, and "Do the arithmetic here instead of by hand" steers the agent away from computing manually. It stops short of naming the sibling tool or stating when not to use it, so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Removed
halves_create_group - Added
halves_create_group_link
2 tool updates
- First observed
halves_create_group - First observed
halves_settle_up
Related MCP Connectors
Split shared expenses in a group — no account needed. See who owes whom and settle up.
Split expenses in cents with equal/weighted shares and payer advances. No account or payments.
Split the bill without the awkward math.
Track and split shared expenses across trips, events, and groups. Create groups, add expenses, and…
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceRuns an entire shared-expense split from an assistant: create one, add what each person paid (equally, by weighted shares or exact amounts), record paybacks, and read back who owes whom as the fewest transfers. Eleven tools covering the whole lifecycle, with no account and no API key — people are referred to by name and amounts are plain decimals, so an agent never handles uuids or cents.4MIT
- AlicenseAqualityBmaintenanceEnables group expense management and fair settlement via MCP, allowing creation of groups, recording expenses, viewing balances, and computing minimal transfers to settle debts.8MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that helps track expenses and calculate reimbursements for social events, making it easy to settle balances between friends.11Apache 2.0
- AlicenseAqualityBmaintenanceEnables voice-first shared household expense tracking through Alexa+, letting flatmates record purchases, check balances, and settle debts in the fewest payments.8MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.