MCP 서버

splitbill

com.jittee/splitbill
결제 및 핀테크 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Creates and tracks shared bill payment pages and collects PayNow payments from participants in Singapore.

create_split
Create a split bill
Create a payment page for a shared bill and return the manage URL plus the share URLs. The PayNow recipient is already saved with this connection — never ask the user for it. All you need is a total (total) or the receipt lines (items), plus the head count (people). Children can pay half: "4 adults and 3 kids" is people=7 with children=3. By default the user is treated as having paid up front: they count towards the head count but get no payment link (pass i_paid=false to turn that off). Paste a share URL into the group chat and everyone sees their own amount and a PayNow QR code.
입력 스키마
{'type': 'object', 'required': [], 'properties': {'note': {'type': 'string', 'description': 'A short note shown to the payers.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['amount'], 'properties': {'label': {'type': 'string', 'description': 'What the line is for (e.g. Food).'}, 'amount': {'type': 'number'}}}, 'description': 'Receipt lines. Their sum becomes the total. Payers can see them.'}, 'names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Names of the others (only the ones you know). Empty slots get filled in by the payers themselves.'}, 'title': {'type': 'string', 'description': 'What the bill was for (e.g. Friday dinner). Defaults to the date and time.'}, 'total': {'type': 'number', 'description': 'The total. If items are given, their sum wins.'}, 'custom': {'type': 'array', 'items': {'type': 'object', 'required': ['amount'], 'properties': {'name': {'type': 'string', 'description': 'A name passed in names.'}, 'index': {'type': 'number', 'description': 'Position when there is no name (counting from 1; 1 is the user).'}, 'amount': {'type': 'number'}}}, 'description': 'Charge one person a different amount (e.g. someone who did not drink). The rest is re-split automatically.'}, 'i_paid': {'type': 'boolean', 'description': 'Did the user pay up front? (default: true) They count towards the head count but are not billed.'}, 'people': {'type': 'number', 'description': 'How many people share the bill, INCLUDING the user who paid up front.'}, 'my_name': {'type': 'string', 'description': 'What to call the user in the list (default: Me).'}, 'children': {'type': 'number', 'description': 'How many of people are children. A child pays half of what an adult pays. "4 adults and 3 kids" is people=7, children=3. When names are given, the LAST ones on the list are taken to be the children.'}, 'rounding': {'enum': ['ceil-all', 'one-extra'], 'type': 'string', 'description': 'Rounding. ceil-all = round everyone up to whole dollars and let the user absorb the difference; one-extra = split exactly and let one person carry the remainder.'}}}
출력 스키마
{'type': 'object', 'required': ['summary', 'total', 'people', 'manage_url', 'share_urls', 'paynow', 'next_step'], 'properties': {'total': {'type': 'number', 'description': 'The total.'}, 'paynow': {'type': 'object', 'required': ['target'], 'properties': {'name': {'type': ['string', 'null']}, 'target': {'type': 'string'}}, 'description': 'Who collects the money (saved with this connection).'}, 'people': {'type': 'number', 'description': 'How many share the bill, including whoever paid up front.'}, 'summary': {'type': 'string', 'description': 'A one-line summary to read out (how much each, how many people).'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Anything worth mentioning about rounding or head count.'}, 'next_step': {'type': 'string', 'description': 'What to do next.'}, 'manage_url': {'type': 'string', 'description': 'Manage URL. FOR THE ORGANISER ONLY — it can change the split.'}, 'share_urls': {'type': 'array', 'items': {'type': 'object', 'required': ['amount', 'people', 'url'], 'properties': {'url': {'type': 'string'}, 'amount': {'type': 'number'}, 'people': {'type': 'number', 'description': 'How many people owe this amount.'}}}, 'description': 'Share URLs — one per amount.'}, 'status_url': {'type': ['string', 'null'], 'description': 'Read-only URL. Safe to share.'}}}
get_split
Check how a split is going
Return one split in full: who owes what, whether they have paid, the notes they left, and the share URLs.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['admin_token'], 'properties': {'admin_token': {'type': 'string', 'description': 'The t= value from the manage URL, or the whole manage URL.'}}}
출력 스키마
{'type': 'object', 'required': ['title', 'total', 'collected', 'people', 'members', 'share_urls', 'paynow'], 'properties': {'title': {'type': 'string'}, 'total': {'type': 'number'}, 'paynow': {'type': 'object', 'required': ['target'], 'properties': {'name': {'type': ['string', 'null']}, 'target': {'type': 'string'}}}, 'people': {'type': 'number'}, 'members': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'amount', 'state'], 'properties': {'name': {'type': 'string'}, 'state': {'type': 'string', 'description': 'One of: paid up front (not billed) / paid / unpaid.'}, 'adults': {'type': 'number', 'description': 'Adults in this household (default 1).'}, 'amount': {'type': 'number'}, 'comment': {'type': ['string', 'null'], 'description': 'A note left by the payer.'}, 'children': {'type': 'number', 'description': 'Children in this household. A child pays half an adult.'}}}}, 'collected': {'type': 'number', 'description': 'How much has come in.'}, 'share_urls': {'type': 'array', 'items': {'type': 'object', 'required': ['amount', 'url'], 'properties': {'url': {'type': 'string'}, 'amount': {'type': 'number'}}}}, 'status_url': {'type': ['string', 'null']}}}
list_splits
List the splits made with this connection
Return the splits created with this connection, newest first, with how much has been collected, how many people are still to pay, and the read-only URL. Use this to find a split again when the organiser has lost the link.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'How many to return (default 10, max 50).'}}}
출력 스키마
{'type': 'object', 'required': ['splits'], 'properties': {'note': {'type': 'string'}, 'splits': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'total', 'collected', 'paid_people', 'people'], 'properties': {'title': {'type': 'string'}, 'total': {'type': 'number'}, 'people': {'type': 'number'}, 'disabled': {'type': 'boolean', 'description': 'Whether the split has been stopped.'}, 'collected': {'type': 'number', 'description': 'How much has come in, counting what was fronted.'}, 'created_at': {'type': 'string', 'description': 'When it was created (ISO 8601).'}, 'status_url': {'type': ['string', 'null'], 'description': 'Read-only URL.'}, 'paid_people': {'type': 'number', 'description': 'How many have paid.'}}}, 'description': 'Newest first.'}}}
변경됨
get_split
2026년 10월 1일 2:43 AM
변경됨
create_split
2026년 10월 1일 2:43 AM
추가됨
get_split
2026년 9월 19일 2:40 AM
추가됨
list_splits
2026년 9월 19일 2:40 AM
추가됨
create_split
2026년 9월 19일 2:40 AM