Skip to main content
Glama
dc28vivek

goodwill-mcp

by dc28vivek

Split a receipt by item

split_by_items

Split a bill line by line so each person pays only for what they ordered, with tax and tip allocated proportionally. Validates item totals against the receipt total before posting.

Instructions

Split a bill line by line instead of equally, so everyone pays for what they ordered. Read the receipt yourself (from a photo, a PDF or text the user pasted) and pass the lines in as items, each with who shares it. Tax and tip are allocated in proportion to what each person ordered, not split equally. Pass total from the receipt and the tool will refuse to post if the lines do not add up, which catches a misread photo before it becomes five wrong balances. Shows a preview and waits for confirmation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taxNoTax as printed. Allocated in proportion to each person's items.
tipNoTip as printed. Allocated the same way.
dateNoYYYY-MM-DD. Defaults to today.
itemsYes
payerNo"me" or a member name or id. Defaults to me.
totalNoThe printed grand total. Strongly recommended: it is the check that the receipt was read correctly.
currencyNo
group_idYes
category_idNo
descriptionYesWhat the bill was, e.g. "Dinner at Cervejaria".
idempotency_keyNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteYes
totalNoDecimal amount as a string, two places, e.g. "84.00"
postedYes
currencyNo
group_idYes
breakdownNo
expense_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Adds valuable behavioral detail beyond annotations: the tool validates itemized lines against the total and refuses to post on mismatch, shows a preview, and waits for confirmation. This is important operational context for a mutating tool and complements the readOnly=false annotation.

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?

Four dense sentences, each earning its place: purpose, input preparation, tax/tip behavior, total validation, and confirmation flow. The most important distinction ('line by line instead of equally') is front-loaded. No wasted words or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters and complex receipt-splitting behavior, the description covers the workflow, validation, preview, and allocation logic well. It lacks explicit guidance on group/payment context and idempotency, and could more sharply differentiate from siblings like add_expense, but the agent has enough to invoke the tool correctly.

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 only 55%, and the description compensates for key parameters: items are explained as receipt lines with sharers, total is framed as a validation guard, and tax/tip allocation is described. Some parameters like group_id, payer, currency, and idempotency_key are not covered, but the core parameters receive useful meaning beyond the schema.

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: 'Split a bill line by line instead of equally' for a receipt. It clearly differentiates the tool from equal splitting and defines its unique proportional tax/tip allocation. The behavior is unambiguous even without opening the schema.

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?

Provides clear context for when to use this tool: when items need to be split by who ordered them, not equally. It also instructs the agent to read the receipt from a photo, PDF, or pasted text. However, it does not explicitly name alternative sibling tools or state when not to use them.

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