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

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.

TDQS

A4.2/5.0
Disambiguation4/5

Most tools are clearly distinct by resource and action (expense vs participant vs split vs payment). Minor ambiguity exists between update_entry and record_payment, since both modify existing entries, though their purposes (re-editing vs settlement) are documented. add_expense and record_payment could overlap conceptually since both record money movement, but descriptions clarify each.

Naming Consistency5/5

All 11 tools follow a clean verb_noun pattern: add_expense, add_participant, create_split, delete_entry, get_split, record_payment, remove_participant, rename_participant, set_payment_methods, update_entry, update_split. The convention is fully consistent with no mixed styles or vague verbs.

Tool Count5/5

11 tools is well within the ideal 3-15 range, and each earns its place by mapping to a distinct lifecycle operation across splits, participants, entries, and payments. The count is appropriately scoped for an expense-splitting domain and matched to the feature set described.

Completeness4/5

The surface covers the core lifecycle well: create/read/update for splits, add/remove/rename participants, and add/delete/update entries plus payment recording and settlement. The main gap is the explicit write operations only work on simple/accountless splits while secure splits are read-only, but that's a documented constraint rather than a missing tool. A dedicated 'duplicate_split' or 'list_splits' would be nice but isn't critical for the modeled flow.