Calculate tip pool
calculate_tip_poolUse this when the user wants a tip pool calculator: split pooled tips among restaurant, bar, cafe or salon staff by hours worked (how to split tips by hours), by points x hours, by role percentage (e.g. 70% servers, 20% bussers, 10% bar, then by hours inside each role), or equally. Accepts cash and card tips with an optional card fee percent, a staff list as objects or pasted text/CSV, and an optional week view (shift_tips plus a shift on each staff row). Returns each person's share in cents with largest-remainder rounding so shares add up to the pool, the per-hour rate, an explanation, warnings (e.g. a manager in the pool), and a printable PDF tip sheet with signature lines plus a CSV. Does not give legal advice, decide who may be in a pool, compute wages or taxes, or connect to a POS. Do not use for splitting a restaurant bill among diners.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "calculate_tip_pool"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional title for the tip sheet, e.g. "Friday dinner, Oct 23" or "Week of Oct 19". | |
| staff | No | Everyone sharing the pool. Array of {name, role, hours, points, shift}, or one pasted block (one person per line, CSV with a header row is fine), e.g. [{"name":"Ana","role":"server","hours":6.5},{"name":"Ben","role":"busser","hours":5}] or "Ana server 6.5\nBen busser 5". | |
| method | No | How to split: "hours" (by hours worked), "points" (points x hours), "role_percent" (fixed percent per role, e.g. 70/20/10, then by hours inside each role), or "equal". Default: chosen from the data (role_percentages -> role_percent, points -> points, hours -> hours, else equal). | |
| shifts | No | Alternative week view: one item per shift with its own tips and staff, e.g. [{"label":"Fri","total_tips":600,"staff":"Ana 5, Ben 5"},{"label":"Sat","total_tips":900,"staff":"Ana 6, Cara 6"}]. | |
| currency | No | ISO currency code, default USD, e.g. EUR, GBP, CAD. | |
| round_to | No | "cent" (default) or "dollar" to pay whole dollars in cash; any coins left over are reported, not assigned. | |
| card_tips | No | Credit card tips, e.g. 820.50. Optional; the card fee applies to these. | |
| cash_tips | No | Cash tips, e.g. 420. Optional. | |
| shift_tips | No | Week view: tips per shift, with each staff row's shift set, e.g. {"Mon":420,"Tue":385.5} or "Mon 420, Tue 385.50". Each shift is split on its own, then totals are added per person. | |
| total_tips | No | Total tips to split (cash plus card), e.g. 1240.50 or "$1,240.50". Leave out when cash_tips and card_tips are given, or when shift_tips is used. | |
| role_points | No | Points per role for the points method when people have no points of their own, e.g. {"server":10,"bartender":8,"busser":5}. | |
| card_fee_percent | No | Card processing fee percent to deduct from card tips before splitting, e.g. 2.9. Default none. | |
| role_percentages | No | Percent of the pool per role for method role_percent, e.g. {"server":70,"busser":20,"bartender":10} or "servers 70%, bussers 20%, bar 10%". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| pool | Yes | ||
| label | Yes | ||
| roles | Yes | ||
| method | Yes | ||
| people | Yes | ||
| shifts | Yes | ||
| currency | Yes | ||
| warnings | Yes | ||
| downloads | Yes | ||
| assumptions | Yes | ||
| explanation | Yes | ||
| method_label | Yes |