Skip to main content
Glama

money4k-split-bill

Server Details

Create a bill from a chat/photo and share it with anyone

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.5% over 64 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct operation: creating a bill, updating an existing bill, setting participant selections, and reading the user profile. The main overlap is create_bill vs update_bill because both discuss tips, shared items, and taxes, but the descriptions explicitly route existing bills to update_bill.

Naming Consistency5/5

All tool names use snake_case with a leading verb (create_, get_, set_, update_), giving a predictable verb_noun pattern. get_current_user_profile is longer but still follows the same convention.

Tool Count5/5

Four tools is lean but well-scoped for a split-bill workflow, with each tool covering a separate necessary action. There are no redundant or filler tools.

Completeness3/5

The surface covers creating, updating, and selecting items, but there is no get_bill or list_bills tool to retrieve an existing bill's items or item IDs. Since update_bill and set_bill_selections_batch require bill_id and item IDs, this is a notable gap that can block agents on existing bills.

Available Tools

4 tools
create_billCreate Shared BillAInspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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

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.

get_current_user_profileGet Current User ProfileA
Read-onlyIdempotent
Inspect

Returns the authenticated user's id, full_name, email and created_at for the bill UI to identify their own item selections. Requires OAuth and uses the user identity from the bearer token. This read-only helper is intended for calls from the app UI.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
emailYes
full_nameYes
created_atYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; the description adds genuinely new context by specifying it requires OAuth and derives identity from the bearer token. That auth requirement is not encoded in the annotations, so it earns credit, though nothing is said about failure modes (e.g., missing/expired token).

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

Conciseness4/5

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

Three tight sentences with zero filler, and the payload is front-loaded. The final sentence ('read-only helper... for calls from the app UI') partially restates what readOnlyHint already conveys, a minor 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?

With an output schema present and full annotation coverage, the description only needs to supply identity/auth and intent context, which it does. Nothing an agent needs to call this zero-param tool correctly 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?

The tool takes zero parameters, so the baseline is 4; there is no parameter syntax the description could or should document.

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?

States a specific verb and resource ('Returns the authenticated user's id, full_name, email and created_at') and enumerates the returned fields. It is clearly distinguishable from the sibling write tools (create_bill, update_bill, set_bill_selections_batch), which all mutate bill data.

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 gives clear context — it exists so the bill UI can identify the user's own selections — which is a usable 'when to use' signal. It does not name an alternative or an explicit 'when not to use' condition, so it falls short of a 5.

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

set_bill_selections_batchSelect My Bill ItemsA
Idempotent
Inspect

Use this when the connected user asks to select, change or clear their own items on an existing shared bill, such as one pizza portion and one tip share, for calculating their personal share. Saves absolute item selection quantities for that user; it does not change bill items, prices or the total. Do not use to create or edit a bill, select for friends, or mark a payment as completed. Use actual bill_id and item IDs; quantity 0 clears a selection, and omitted selections remain unchanged. Selections and the user's display name are visible to anyone with the bill link. Cannot select on behalf of other people or collect payments. Requires OAuth; no profile lookup is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYesBill ID to update selections for
selectionsYesSelections by item

Output Schema

ParametersJSON Schema
NameRequiredDescription
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

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations: quantity 0 clears a selection, omitted selections stay unchanged (concretising idempotentHint), selections and the display name are visible to anyone with the bill link (privacy disclosure), and OAuth is required. The only gap is that it doesn't describe error behaviour or what the response confirms, but annotations already cover the safety profile.

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

Conciseness4/5

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

Front-loaded with the trigger condition and tightly packed, but slightly long and mildly redundant — the later 'cannot select on behalf of other people' restates the earlier 'do not select for friends'. Every other sentence earns its place.

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?

An output schema exists, so return values need no explanation, and the description covers trigger, exclusions, mutation semantics, visibility and auth. Nothing an agent needs to invoke this correctly 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%, so the baseline is 3, but the description adds real semantics the schema lacks: quantity 0 clears a selection, omitted selections remain unchanged, and IDs must be actual bill/item IDs. That is meaningful behavioural meaning for both parameters rather than a restatement.

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?

States a specific verb and resource: saving absolute item-selection quantities for the connected user on an existing shared bill, explicitly scoped as affecting only that user's personal share. It is readily distinguishable from create_bill, update_bill and get_current_user_profile, and explicitly says it does not change bill items, prices or totals.

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?

Gives an explicit trigger (user asks to select, change or clear their own items on an existing shared bill) and explicit exclusions (not for creating/editing a bill, not for selecting for friends, not for marking payments completed). The alternatives are described functionally so an agent can route correctly without opening sibling schemas.

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

update_billEdit Shared BillA
Destructive
Inspect

Use this when the user asks to edit an existing shared bill: correct an item, rename it, add or remove purchases, add tips by participant count, or divide a shared dish into selectable portions. Replaces the complete content of a public bill owned by the connected user, whether created from a receipt or from words in chat. Do not use for a new bill, a hypothetical question or recording which items a participant chose; use create_bill or set_bill_selections_batch for those respective actions. Supply the existing bill_id and every item to keep, preserving existing item IDs; omitted items and their selections are deleted. New items use an empty ID. Do not send a partial list to correct one item. Each item total_price must equal unit_price times quantity and bill total_price must equal the sum of item totals in one currency. Include taxes in eligible item prices under local rules, never as standalone items. Keep the printed receipt total or an explicitly corrected user-supplied total fixed; resolve mismatches by rechecking extraction and arithmetic, never by balancing adjustments. Support requested edits in chat, including tips and shared portions. For total tips of EUR 50 for 5 people, add one selectable item with quantity 5 and unit_price EUR 10; ask if participant count is missing. Explicitly requested additions or removals change the total only by their exact amount; do not add included tips twice. To split a shared item, set quantity to the requested portion count and divide its existing tax-inclusive line total by that count, preserving line and bill totals. If division is not exact in currency minor units, clarify the allocation before writing. Retained item IDs preserve selected quantities without rescaling; clarify the effect before changing the meaning of units on an already selected item. Returns the updated bill and the same share_url. Requires OAuth; no profile lookup is needed.

ParametersJSON 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
bill_idYesBill ID to update
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

ParametersJSON Schema
NameRequiredDescription
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

TDQS

A4.7/5.0
Behavior5/5

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

The annotations declare destructiveHint=true and idempotentHint=false, and the description reinforces this with concrete destructive semantics: it 'Replaces the complete content' and 'omitted items and their selections are deleted,' plus a warning not to send a partial list. It also discloses auth needs ('Requires OAuth') and the return shape (updated bill and the same share_url), adding context well beyond what annotations convey.

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?

It is front-loaded correctly, opening with purpose and when-to-use before edge cases. However, it is very long and several statements restate rules already carried by the 100%-covered schema (item total equals unit_price times quantity, tax allocation, total reconciliation), and the instruction blocks stack without clear visual separation, diluting scannability.

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 destructive, multi-parameter mutation with nested objects, the description covers the full replacement model, ID semantics, currency constraints, tip/portion math, rounding-clarification behavior, and the returned share_url. With an output schema present it need not detail return values, and the remaining gaps for correct invocation are effectively closed.

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 description coverage is 100%, so the baseline is 3, but the description adds operational meaning beyond the schema: preserving existing item IDs vs. using an empty ID for new items, the rule that item total_price must equal unit_price times quantity, the bill-level reconciliation rules, and the tip/share-division procedures. Much of this complements rather than repeats the schema, though the tax and total-equality rules overlap with schema text.

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 names a specific verb and resource (edit an existing shared bill) and enumerates the concrete edit types it supports: correcting items, renaming, add/remove purchases, tips by participant count, and dividing shared dishes. It also explicitly distinguishes itself from siblings by naming create_bill and set_bill_selections_batch and the cases they own. An agent can route correctly without reading 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?

It gives an explicit when-to-use clause, an explicit when-not-to-use clause (new bill, hypothetical question, recording participant choices), and names the exact alternative tool for each excluded case. 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedcreate_bill8 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"
    • Addedget_current_user_profile
    • Changedupdate_bill8 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. 2 tool updates
    • Changedcreate_bill3 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"
    • Changedupdate_bill3 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. 3 tool updates
    • First observedcreate_bill
    • First observedset_bill_selections_batch
    • First observedupdate_bill

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables splitting bills and collecting PayNow payments from AI chat, generating shareable payment links and tracking payment status.
    63 npm
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables AI agents to manage SplitBill bills and friends through natural language: create bills from receipts, list and filter bills, update payment statuses, search users, and view dashboard stats.
    7
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to read and edit Tricount group expenses, check balances and settle-up transfers, and create or delete expenses and reimbursements through chat. It can connect using just a Tricount link, previews writes before saving, and works over stdio or HTTP.
    7
    69 PyPI
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources