splitwise-mcp 3.5.1 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/bundle.js +10278 -9000
- package/dist/index.js +1 -1
- package/dist/tools/_brief.js +142 -0
- package/dist/tools/_receipt.js +34 -2
- package/dist/tools/batch.js +4 -3
- package/dist/tools/expenses.js +22 -14
- package/dist/tools/friends.js +15 -2
- package/dist/tools/groups.js +8 -0
- package/dist/tools/hints.js +40 -0
- package/dist/tools/receipts.js +2 -0
- package/dist/tools/uploads.js +3 -1
- package/dist/tools/user.js +4 -0
- package/dist/tools/utilities.js +19 -7
- package/package.json +3 -3
- package/server.json +2 -2
- package/skills/splitwise-mcp/SKILL.md +24 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "splitwise-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"mcpName": "io.github.chrischall/splitwise-mcp",
|
|
5
5
|
"description": "Splitwise MCP server for Claude — developed and maintained by AI (Claude Code)",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@chrischall/mcp-utils": "^3.
|
|
48
|
+
"@chrischall/mcp-utils": "^3.6.0",
|
|
49
49
|
"@modelcontextprotocol/server": "^2.3.0",
|
|
50
50
|
"dotenv": "^18.0.2",
|
|
51
|
-
"unpdf": "^
|
|
51
|
+
"unpdf": "^2.0.0",
|
|
52
52
|
"zod": "^4.6.5"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/chrischall/splitwise-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.7.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "splitwise-mcp",
|
|
14
|
-
"version": "3.
|
|
14
|
+
"version": "3.7.0",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
|
@@ -111,9 +111,31 @@ API key auth — no login flow or token rotation. The key is attached to every r
|
|
|
111
111
|
| `sw_get_categories` | Hierarchical list of expense categories (use `id` as `category_id`) |
|
|
112
112
|
| `sw_get_currencies` | List of supported currency codes |
|
|
113
113
|
|
|
114
|
+
## In context groups
|
|
115
|
+
|
|
116
|
+
On an mcp-host gateway, splitwise joins the **money** group (`_meta.mint` on every
|
|
117
|
+
tool but `sw_healthcheck`). Its canonical reads, each answering one line per item
|
|
118
|
+
with `view: "brief"` inside the untrusted-data envelope (`data: string[]`):
|
|
119
|
+
|
|
120
|
+
- **what's due** — `sw_list_friends`: one line per friend with an outstanding
|
|
121
|
+
balance, `name — no date — owes you USD 12.50` / `you owe EUR 3.00`, then a
|
|
122
|
+
`-- N settled up` note; `-- none` when nothing is owed either way.
|
|
123
|
+
- **what's new** — `sw_get_notifications`: recent activity, `text — <ISO date> —
|
|
124
|
+
<kind>` (expense added, comment added, …), at most 50 lines with a
|
|
125
|
+
`-- 50 of M shown` note past that; `-- none` for no activity.
|
|
126
|
+
|
|
127
|
+
Neither names a subject (one API key is one account; friends and groups are who
|
|
128
|
+
you split with, not whose question it is) and neither takes a date range. Nothing
|
|
129
|
+
here answers what's on. Every other read is a `lookup`; the writes are `change`
|
|
130
|
+
(`sw_create_comment` is `send`). A compound ask looks like "what do I owe on
|
|
131
|
+
Splitwise, and is anything due at school?" — the money group reads the balances
|
|
132
|
+
while the school group answers the rest. Splitwise is a direct API with a key,
|
|
133
|
+
not a browser bridge, so it never answers "needs your browser open".
|
|
134
|
+
|
|
114
135
|
## Response shape (`view`)
|
|
115
136
|
|
|
116
|
-
Nine read tools take `view: "compact" | "full"
|
|
137
|
+
Nine read tools take `view: "compact" | "full"` (`sw_list_friends` and
|
|
138
|
+
`sw_get_notifications` also take `"brief"`, above), and **`compact` is the
|
|
117
139
|
default** — you get the slim rung without asking. Two of them are not in the
|
|
118
140
|
table above: `sw_get_user(id, view?)` and `sw_get_comments(expense_id, view?)`.
|
|
119
141
|
|
|
@@ -215,7 +237,7 @@ sw_create_expense(group_id, "Band camp water jug", "54.11", split_equally: true,
|
|
|
215
237
|
sw_attach_receipt(expense_id, receipt: { base64: "<png/jpeg/gif/pdf bytes>", filename: "order.pdf" })
|
|
216
238
|
```
|
|
217
239
|
|
|
218
|
-
`receipt` takes `filename` plus exactly one of `upload_id` (hosted server: from `sw_get_upload_url`, after `curl -X PUT` of the file — keeps the bytes out of the conversation and out of the second, confirming call), `path` (only on a local server with `SPLITWISE_INPUT_DIR` set, and only inside that directory) or `base64` (fallback when you have no shell that can reach the upload URL). PNG, JPEG, GIF or PDF, ≤ 10 MiB, type detected from the bytes. It replaces any existing receipt. Use `sw_attach_receipt` to add a file to an existing expense — it sends nothing but the file. If Splitwise saves the expense but drops the file, the tool returns an error naming the expense: do not re-create it, retry with `sw_attach_receipt`.
|
|
240
|
+
`receipt` takes `filename` plus exactly one of `upload_id` (hosted server: from `sw_get_upload_url`, after `curl -X PUT` of the file — keeps the bytes out of the conversation and out of the second, confirming call), `path` (only on a local server with `SPLITWISE_INPUT_DIR` set, and only inside that directory) or `base64` (fallback when you have no shell that can reach the upload URL). PNG, JPEG, GIF or PDF, ≤ 10 MiB, type detected from the bytes. It replaces any existing receipt. Use `sw_attach_receipt` to add a file to an existing expense — it sends nothing but the file. If Splitwise saves the expense but drops the file, the tool returns an error naming the expense: do not re-create it, retry with `sw_attach_receipt`. An `upload_id` is single use: once the receipt is stored the upload is deleted (`upload_deleted: true`), so attaching the same file again needs a fresh `sw_get_upload_url`. A declined preview or a failed write keeps it — retry with the same `upload_id`. `upload_deleted: false` (with `upload_delete_error`) is not a failure: the receipt is attached; the copy just waits for the server's retention cleanup.
|
|
219
241
|
|
|
220
242
|
**Log a 50/50 expense the other person paid:**
|
|
221
243
|
```
|