Skip to main content
Glama

Add an expense

add_expense

Record something one person paid for the group. Split equally by default; pass split_between for a subset, or shares for an uneven split. One expense covers one set of people — a receipt whose items aren't all shared by everyone is several expenses, so call this once per group of items that the same people share, rather than splitting the total equally. Works on simple, accountless splits. Secure splits (created by a signed-in user) are read-only here and must be opened in a browser.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNoDate as YYYY-MM-DD. Defaults to today.
splitYesThe split key, or the whole https://split.xuper.fun/k/<key> link.
amountYesAmount in the split's currency, as a decimal (e.g. 249.50).
sharesNoUneven split. Either an exact `amount` per person (must add up to the total) or a relative `weight` per person (e.g. weight 2 for a couple). Don't combine with split_between.
paid_byYesWho paid — a participant's name (or id) in this split. A card receipt rarely names the payer, so ask unless you know: guess wrong and every balance points the wrong way. If the user counts themselves among the participants, assume it was them and say that you assumed it — what you must not do is pick a payer silently.
descriptionNoWhat it was, e.g. "Groceries".
split_betweenNoNames of the people sharing this cost, split equally. Defaults to everyone.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYes
urlYes
titleYes
secureYes
entriesYes
settledYes
currencyYes
created_atYes
settlementYes
total_spentYes
participantsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / paid_by / description
      Previous value: -"Who paid — a participant's name (or id) in this split."New value: +"Who paid — a participant's name (or id) in this split. A card receipt rarely names the payer, so ask unless you know: guess wrong and every balance points the wrong way. If the user counts themselves among the participants, assume it was them and say that you assumed it — what you must not do is pick a payer silently."
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses key behavioral traits: splitting defaults, how to achieve uneven splits via 'shares', the 'one expense covers one set of people' rule, and the special limitation for secure splits. This gives the agent non-obvious knowledge needed to invoke the tool correctly.

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?

The description is three sentences, with the core purpose front-loaded, then splitting logic, then the security constraint. Every sentence adds essential information without verbose fluff. Ideal length for the tool's complexity.

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?

The tool has 7 parameters with nested 'shares' items and an output schema, yet the description covers when to use it, how to handle receipts with multiple groups, parameter usage nuances, and limitation across split types. It is fully adequate for an agent to select and invoke the tool confidently.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3. The description adds value by explaining how to use 'split_between' versus 'shares' in context ('Split equally by default; pass split_between for a subset, or shares for an uneven split'), and it offers critical guidance for 'paid_by' ('A card receipt rarely names the payer, so ask unless you know'). This enriches the schema's parameter descriptions.

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 opens with a specific verb and resource: 'Record something one person paid for the group.' It clearly distinguishes this from siblings like record_payment by focusing on expenses and splitting semantics, and it elaborates beyond the title with default behavior and edge cases.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to call this tool multiple times ('a receipt whose items aren't all shared by everyone is several expenses... call this once per group') and when not to use it ('Secure splits... are read-only here and must be opened in a browser'). It stops short of naming alternative sibling tools, but the context is clear.

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.