ofw-mcp 2.19.5 → 2.20.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.
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "OurFamilyWizard tools for Claude Code",
9
- "version": "2.19.5"
9
+ "version": "2.20.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
@@ -14,7 +14,7 @@
14
14
  "displayName": "OurFamilyWizard",
15
15
  "source": "./",
16
16
  "description": "OurFamilyWizard co-parenting tools for Claude — messages, calendar, expenses, and journal via MCP",
17
- "version": "2.19.5",
17
+ "version": "2.20.0",
18
18
  "author": {
19
19
  "name": "Chris Chall"
20
20
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ofw",
3
3
  "displayName": "OurFamilyWizard",
4
- "version": "2.19.5",
4
+ "version": "2.20.0",
5
5
  "description": "OurFamilyWizard co-parenting tools for Claude — messages, calendar, expenses, and journal via MCP",
6
6
  "author": {
7
7
  "name": "Chris Chall"
package/README.md CHANGED
@@ -151,7 +151,10 @@ Read-only tools run automatically. Writes that reach your co-parent or the court
151
151
  | `ofw_delete_event` | Delete a calendar event | Confirm (server) if shared | `all` (or `drafts` + `OFW_CALENDAR_WRITES`) |
152
152
  | `ofw_get_expense_totals` | Expense summary totals | Auto | any |
153
153
  | `ofw_list_expenses` | Expense history | Auto | any |
154
- | `ofw_create_expense` | Log a new expense | Confirm (server) | `all` |
154
+ | `ofw_list_expense_categories` | Expense category ids and split metadata | Auto | any |
155
+ | `ofw_upload_expense_pdf` | Upload a receipt PDF to My Files for an expense (SHARED — the co-parent sees it in My Files at once, even on a private expense) | Confirm (server) | `all` |
156
+ | `ofw_create_expense` | Log a new expense; supports private entries and one receipt PDF | Confirm (server) | `all` |
157
+ | `ofw_update_expense` | Change an expense, e.g. publish a private one. Pass only the fields to change; it reads the expense first so the rest are kept | Confirm (server) | `all` |
155
158
  | `ofw_list_journal_entries` | Journal entries | Auto | any |
156
159
  | `ofw_create_journal_entry` | Create a journal entry | Confirm | `all` |
157
160
 
@@ -250,6 +253,26 @@ The host's "Confirm" permission above is a *hint* to the MCP host — a host con
250
253
 
251
254
  Unrecognized values fail closed to `none`, with a warning on stderr — a typo never silently grants write access.
252
255
 
256
+ #### Expense-only deployments
257
+
258
+ For a dedicated reimbursement integration, you can also structurally remove unrelated OFW capabilities:
259
+
260
+ | Setting | Registered surface |
261
+ |---|---|
262
+ | `OFW_EXPENSE_ONLY=true` | `ofw_healthcheck` plus the expense tools only. Profile/dashboard, messages, calendar, and journal tools do not exist. |
263
+ | `OFW_EXPENSE_UPLOAD_ONLY=true` | Strictest mode: `ofw_healthcheck`, `ofw_upload_expense_pdf`, `ofw_create_expense`, and `ofw_update_expense` only. Expense totals/listing are removed too. This flag implies `OFW_EXPENSE_ONLY`. |
264
+
265
+ These flags are registration-time restrictions, not prompt instructions. A host cannot call a tool that was never registered. Unrecognized non-empty flag values fail closed to the restricted state. `OFW_WRITE_MODE` still applies underneath; for the strict upload workflow set `OFW_WRITE_MODE=all` so expense creation is available.
266
+
267
+ Recommended reimbursement-only deployment:
268
+
269
+ ```env
270
+ OFW_EXPENSE_UPLOAD_ONLY=true
271
+ OFW_WRITE_MODE=all
272
+ OFW_ALLOW_MARK_READ=false
273
+ ```
274
+
275
+
253
276
  ### Reading is a write, too (`OFW_ALLOW_MARK_READ`)
254
277
 
255
278
  Fetching a message body for the first time marks it read on OurFamilyWizard and stamps a **"First Viewed" timestamp your co-parent can see**. That is part of the record and cannot be undone — and it happens as a side effect of an ordinary read, so `OFW_WRITE_MODE` does not govern it.