Skip to main content
Glama

money4k-split-bill

Create Shared Bill

create_bill

Use this when the user wants to create and share an itemized bill for a restaurant meal or shared purchase, with a link where participants select their own items and calculate their shares. Accept items from a receipt photo, typed list or plain-language description; no receipt or separately supplied grand total is required. For a EUR 20 pizza and two beers at EUR 5 each, submit pizza 1 x 20 and beer 2 x 5, bill total EUR 30. If no total was supplied, calculate it exactly from the stated items; clarify missing currency or ambiguous amounts, and do not invent taxes or fees. Do not call merely to read a receipt, answer simple arithmetic, collect payments or book a restaurant. Use update_bill for changes to an existing bill. Anyone with the returned share_url can view it. Supply positive quantities, nonnegative prices and one currency; each item total_price must equal unit_price times quantity, and bill total_price must equal the sum of item totals. Include separate receipt taxes in the prices of eligible items under local rules, including different food and alcohol tax groups; never create standalone tax items or add included taxes twice. When a receipt or user-supplied final total is present, keep that control total fixed. If totals differ, recheck the source items and correct extraction or arithmetic; never change the control total or invent adjustments to pass validation. After reconciling the receipt, an explicitly requested extra tip adds its exact amount to the bill total; record the receipt total and addition in info, and never add an already included tip twice. Represent requested tips as one selectable item with quantity equal to the explicitly supplied participant count and unit_price equal to total tips divided by that count; ask for a missing count and never round away a remainder. Shared items may be split into selectable portions by dividing their unchanged line total by the requested count. Reconcile discounts and tips before calling; do not guess unclear receipt values. Returns the saved bill, share_url and bill UI. Requires OAuth; no profile lookup is needed. Creation is not idempotent: do not blindly retry after a timeout or an ambiguous server error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
infoYesRelevant bill notes, for example shared portions or an explicitly requested tip addition; omit receipt personal data
itemsYesComplete bill item list in one currency; updates delete omitted items and their selections
titleYesShort bill title based on the user's description, for example Dinner with friends
total_priceYesFinal printed receipt total or explicit user-supplied total; keep that control total fixed. For items described in chat without a supplied total, calculate the exact item sum. Only explicit user-requested additions or removals change a reconciled total by their exact amount; record them in info. Splitting items preserves the total. Never hide inconsistent inputs or invent balancing adjustments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesBill ID
infoYesAdditional bill information
itemsYesBill items with selections
titleYesBill title
owner_idYesBill owner user ID
share_urlYesBill share URL
created_atYesCreation time in RFC3339 UTC
updated_atYesUpdate time in RFC3339 UTC

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / info / description
      Previous value: -"Additional bill information"New value: +"Relevant bill notes, for example shared portions or an explicitly requested tip addition; omit receipt personal data"
    • changedInput schema / properties / items / description
      Previous value: -"Bill items"New value: +"Complete bill item list in one currency; updates delete omitted items and their selections"
    • changedInput schema / properties / items / items / properties / id / description
      Previous value: -"Item ID for update; empty for new item"New value: +"Preserve the returned item ID when updating an existing item; use an empty string for a new item"
    • changedInput schema / properties / items / items / properties / quantity / description
      Previous value: -"Item quantity as numeric string"New value: +"Positive item quantity as numeric string. For requested shared portions or tips, use the explicit participant count; each unit is one selectable share"
    • changedInput schema / properties / items / items / properties / total_price / description
      Previous value: -"Item total price. VAT and Taxes should be included"New value: +"Final item total; must equal unit_price times quantity exactly and use the bill currency"
    • changedInput schema / properties / items / items / properties / unit_price / description
      Previous value: -"Item unit price. VAT and Taxes should be included"New value: +"Nonnegative final unit price after discounts including all taxes applicable to this item. Allocate separate receipt tax rows only to eligible items under local rules; never create standalone tax items or add included taxes twice"
    • changedInput schema / properties / title / description
      Previous value: -"Bill title"New value: +"Short bill title based on the user's description, for example Dinner with friends"
    • changedInput schema / properties / total_price / description
      Previous value: -"Bill total price, VAT and Taxes are included in this price"New value: +"Final printed receipt total or explicit user-supplied total; keep that control total fixed. For items described in chat without a supplied total, calculate the exact item sum. Only explicit user-requested additions or removals change a reconciled total by their exact amount; record them in info. Splitting items preserves the total. Never hide inconsistent inputs or invent balancing adjustments"
  2. Changed3 schema fields changed
    • changedInput schema / properties / items / items / properties / total_price / description
      Previous value: -"Item total price"New value: +"Item total price. VAT and Taxes should be included"
    • changedInput schema / properties / items / items / properties / unit_price / description
      Previous value: -"Item unit price"New value: +"Item unit price. VAT and Taxes should be included"
    • changedInput schema / properties / total_price / description
      Previous value: -"Bill total price"New value: +"Bill total price, VAT and Taxes are included in this price"
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare the safety profile (readOnly=false, idempotent=false, openWorld=true, destructive=false), and the description still adds valuable operational context beyond them: OAuth requirement, no profile lookup needed, the fact that anyone with the returned share_url can view the bill, and the non-idempotency caveat about not blindly retrying after a timeout or ambiguous server error. It also discloses validation semantics (fixed control total, no invented taxes or adjustments) that annotations cannot express.

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

Conciseness3/5

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

Purpose, example and exclusions are front-loaded, but the body is a dense run-on that repeats rules already stated verbatim in the item unit_price and total_price schema descriptions (standalone tax items, not double-adding included taxes). Several clauses about reconciliation, tips and splits are useful, yet the sheer length and duplication make it harder to scan than it needs to be.

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 mutation tool with nested objects and an output schema, this covers everything an agent needs: currency handling, total reconciliation, tax allocation, tip and split rules, retry policy, and auth. Return values are already covered by the output schema, and the description still names share_url and the bill UI, so nothing material is missing.

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?

Schema coverage is 100% with rich nested descriptions, so the baseline is 3, but the description goes further by showing how inputs map to fields concretely (pizza 1 x 20, beer 2 x 5, bill total EUR 30), by requiring positive quantities / nonnegative prices / a single currency, and by explaining that quantity encodes participant count for shares and tips. It largely restates the schema's tax and total rules, which caps it at 4 rather than 5.

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 first sentence gives a specific verb+resource+outcome: create and share an itemized bill with a participant-selectable link. It also names the sibling it is not (update_bill), so an agent can separate it from update_bill, set_bill_selections_batch and get_current_user_profile without opening any schema.

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?

Explicit when-to-use (bill creation for a meal or shared purchase, from photo, typed list or prose) and explicit when-not (reading a receipt, simple arithmetic, collecting payments, booking a restaurant), plus the named alternative for edits. Nothing about tool selection 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