Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
OurFamilyWizard co-parenting for Claude — messages, calendar, expenses, and journal
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
OFW_USERNAME, OFW_PASSWORD, OFW_WRITE_MODE, OFW_CALENDAR_WRITES, OFW_ALLOW_MARK_READ, OFW_CONFIRM_MARK_READ, OFW_FETCH_UNREAD_BODIES, OFW_READ_DAYS, OFW_NO_READ_DAYS, OFW_SESSION_CACHE, OFW_SESSION_FILE, OFW_EXPENSE_ONLY, OFW_EXPENSE_UPLOAD_ONLY, OFW_INLINE_ATTACHMENTS, OFW_ATTACHMENTS_DIR, OFW_UPLOAD_DIR, OFW_CACHE_IDENTITY, OFW_CACHE_DIR, OFW_DISABLE_FETCHPROXY, OFW_AUTO_REFRESH, OFW_FRESHNESS_TTL_SECONDS, OFW_SYNC_MAX_REQUESTS, OFW_REQUEST_TIMEOUT_MS, OFW_DEBUG_LOG, DISPLAY_TZ, FETCHPROXY_WS_PORT, FETCHPROXY_WS_HOST, FETCHPROXY_IDENTITY_DIRค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"ofw": {
"command": "npx",
"args": [
"-y",
"ofw-mcp"
],
"env": {
"OFW_USERNAME": "ใส่ค่าของคุณ",
"OFW_PASSWORD": "ใส่ค่าของคุณ",
"OFW_WRITE_MODE": "ใส่ค่าของคุณ",
"OFW_CALENDAR_WRITES": "ใส่ค่าของคุณ",
"OFW_ALLOW_MARK_READ": "ใส่ค่าของคุณ",
"OFW_CONFIRM_MARK_READ": "ใส่ค่าของคุณ",
"OFW_FETCH_UNREAD_BODIES": "ใส่ค่าของคุณ",
"OFW_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_NO_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_SESSION_CACHE": "ใส่ค่าของคุณ",
"OFW_SESSION_FILE": "ใส่ค่าของคุณ",
"OFW_EXPENSE_ONLY": "ใส่ค่าของคุณ",
"OFW_EXPENSE_UPLOAD_ONLY": "ใส่ค่าของคุณ",
"OFW_INLINE_ATTACHMENTS": "ใส่ค่าของคุณ",
"OFW_ATTACHMENTS_DIR": "ใส่ค่าของคุณ",
"OFW_UPLOAD_DIR": "ใส่ค่าของคุณ",
"OFW_CACHE_IDENTITY": "ใส่ค่าของคุณ",
"OFW_CACHE_DIR": "ใส่ค่าของคุณ",
"OFW_DISABLE_FETCHPROXY": "ใส่ค่าของคุณ",
"OFW_AUTO_REFRESH": "ใส่ค่าของคุณ",
"OFW_FRESHNESS_TTL_SECONDS": "ใส่ค่าของคุณ",
"OFW_SYNC_MAX_REQUESTS": "ใส่ค่าของคุณ",
"OFW_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
"OFW_DEBUG_LOG": "ใส่ค่าของคุณ",
"DISPLAY_TZ": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_PORT": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_HOST": "ใส่ค่าของคุณ",
"FETCHPROXY_IDENTITY_DIR": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add ofw --env OFW_USERNAME='ใส่ค่าของคุณ' --env OFW_PASSWORD='ใส่ค่าของคุณ' --env OFW_WRITE_MODE='ใส่ค่าของคุณ' --env OFW_CALENDAR_WRITES='ใส่ค่าของคุณ' --env OFW_ALLOW_MARK_READ='ใส่ค่าของคุณ' --env OFW_CONFIRM_MARK_READ='ใส่ค่าของคุณ' --env OFW_FETCH_UNREAD_BODIES='ใส่ค่าของคุณ' --env OFW_READ_DAYS='ใส่ค่าของคุณ' --env OFW_NO_READ_DAYS='ใส่ค่าของคุณ' --env OFW_SESSION_CACHE='ใส่ค่าของคุณ' --env OFW_SESSION_FILE='ใส่ค่าของคุณ' --env OFW_EXPENSE_ONLY='ใส่ค่าของคุณ' --env OFW_EXPENSE_UPLOAD_ONLY='ใส่ค่าของคุณ' --env OFW_INLINE_ATTACHMENTS='ใส่ค่าของคุณ' --env OFW_ATTACHMENTS_DIR='ใส่ค่าของคุณ' --env OFW_UPLOAD_DIR='ใส่ค่าของคุณ' --env OFW_CACHE_IDENTITY='ใส่ค่าของคุณ' --env OFW_CACHE_DIR='ใส่ค่าของคุณ' --env OFW_DISABLE_FETCHPROXY='ใส่ค่าของคุณ' --env OFW_AUTO_REFRESH='ใส่ค่าของคุณ' --env OFW_FRESHNESS_TTL_SECONDS='ใส่ค่าของคุณ' --env OFW_SYNC_MAX_REQUESTS='ใส่ค่าของคุณ' --env OFW_REQUEST_TIMEOUT_MS='ใส่ค่าของคุณ' --env OFW_DEBUG_LOG='ใส่ค่าของคุณ' --env DISPLAY_TZ='ใส่ค่าของคุณ' --env FETCHPROXY_WS_PORT='ใส่ค่าของคุณ' --env FETCHPROXY_WS_HOST='ใส่ค่าของคุณ' --env FETCHPROXY_IDENTITY_DIR='ใส่ค่าของคุณ' -- npx -y ofw-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"ofw": {
"command": "npx",
"args": [
"-y",
"ofw-mcp"
],
"env": {
"OFW_USERNAME": "ใส่ค่าของคุณ",
"OFW_PASSWORD": "ใส่ค่าของคุณ",
"OFW_WRITE_MODE": "ใส่ค่าของคุณ",
"OFW_CALENDAR_WRITES": "ใส่ค่าของคุณ",
"OFW_ALLOW_MARK_READ": "ใส่ค่าของคุณ",
"OFW_CONFIRM_MARK_READ": "ใส่ค่าของคุณ",
"OFW_FETCH_UNREAD_BODIES": "ใส่ค่าของคุณ",
"OFW_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_NO_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_SESSION_CACHE": "ใส่ค่าของคุณ",
"OFW_SESSION_FILE": "ใส่ค่าของคุณ",
"OFW_EXPENSE_ONLY": "ใส่ค่าของคุณ",
"OFW_EXPENSE_UPLOAD_ONLY": "ใส่ค่าของคุณ",
"OFW_INLINE_ATTACHMENTS": "ใส่ค่าของคุณ",
"OFW_ATTACHMENTS_DIR": "ใส่ค่าของคุณ",
"OFW_UPLOAD_DIR": "ใส่ค่าของคุณ",
"OFW_CACHE_IDENTITY": "ใส่ค่าของคุณ",
"OFW_CACHE_DIR": "ใส่ค่าของคุณ",
"OFW_DISABLE_FETCHPROXY": "ใส่ค่าของคุณ",
"OFW_AUTO_REFRESH": "ใส่ค่าของคุณ",
"OFW_FRESHNESS_TTL_SECONDS": "ใส่ค่าของคุณ",
"OFW_SYNC_MAX_REQUESTS": "ใส่ค่าของคุณ",
"OFW_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
"OFW_DEBUG_LOG": "ใส่ค่าของคุณ",
"DISPLAY_TZ": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_PORT": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_HOST": "ใส่ค่าของคุณ",
"FETCHPROXY_IDENTITY_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"ofw": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ofw-mcp"
],
"env": {
"OFW_USERNAME": "ใส่ค่าของคุณ",
"OFW_PASSWORD": "ใส่ค่าของคุณ",
"OFW_WRITE_MODE": "ใส่ค่าของคุณ",
"OFW_CALENDAR_WRITES": "ใส่ค่าของคุณ",
"OFW_ALLOW_MARK_READ": "ใส่ค่าของคุณ",
"OFW_CONFIRM_MARK_READ": "ใส่ค่าของคุณ",
"OFW_FETCH_UNREAD_BODIES": "ใส่ค่าของคุณ",
"OFW_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_NO_READ_DAYS": "ใส่ค่าของคุณ",
"OFW_SESSION_CACHE": "ใส่ค่าของคุณ",
"OFW_SESSION_FILE": "ใส่ค่าของคุณ",
"OFW_EXPENSE_ONLY": "ใส่ค่าของคุณ",
"OFW_EXPENSE_UPLOAD_ONLY": "ใส่ค่าของคุณ",
"OFW_INLINE_ATTACHMENTS": "ใส่ค่าของคุณ",
"OFW_ATTACHMENTS_DIR": "ใส่ค่าของคุณ",
"OFW_UPLOAD_DIR": "ใส่ค่าของคุณ",
"OFW_CACHE_IDENTITY": "ใส่ค่าของคุณ",
"OFW_CACHE_DIR": "ใส่ค่าของคุณ",
"OFW_DISABLE_FETCHPROXY": "ใส่ค่าของคุณ",
"OFW_AUTO_REFRESH": "ใส่ค่าของคุณ",
"OFW_FRESHNESS_TTL_SECONDS": "ใส่ค่าของคุณ",
"OFW_SYNC_MAX_REQUESTS": "ใส่ค่าของคุณ",
"OFW_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
"OFW_DEBUG_LOG": "ใส่ค่าของคุณ",
"DISPLAY_TZ": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_PORT": "ใส่ค่าของคุณ",
"FETCHPROXY_WS_HOST": "ใส่ค่าของคุณ",
"FETCHPROXY_IDENTITY_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
OFW_USERNAME envOFW_WRITE_MODE envOFW_CALENDAR_WRITES envOFW_ALLOW_MARK_READ envOFW_CONFIRM_MARK_READ envOFW_FETCH_UNREAD_BODIES envOFW_READ_DAYS envOFW_NO_READ_DAYS envOFW_SESSION_CACHE envOFW_SESSION_FILE envOFW_EXPENSE_ONLY envOFW_EXPENSE_UPLOAD_ONLY envOFW_INLINE_ATTACHMENTS envOFW_ATTACHMENTS_DIR envOFW_UPLOAD_DIR envOFW_CACHE_IDENTITY envOFW_CACHE_DIR envOFW_DISABLE_FETCHPROXY envOFW_AUTO_REFRESH envOFW_FRESHNESS_TTL_SECONDS envOFW_SYNC_MAX_REQUESTS envOFW_REQUEST_TIMEOUT_MS envOFW_DEBUG_LOG envDISPLAY_TZ envFETCHPROXY_WS_PORT envFETCHPROXY_WS_HOST envFETCHPROXY_IDENTITY_DIR envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub chrischall ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: OFW_PASSWORD
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.27.4) เข้า registry วันนี้
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Finance Toolkit, SolidInvoice, Korea Tax Calculator
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A Model Context Protocol server that connects Claude to OurFamilyWizard, giving you natural-language access to your co-parenting messages, calendar, expenses, and journal.
[!WARNING]
AI-developed project. This codebase was entirely built and is actively maintained by Claude Sonnet 4.6. No human has audited the implementation. Review all code and tool permissions before use.
Ask Claude things like:
node:sqlite is the cache backend)By using this MCP server, you acknowledge and agree to the following:
1. This server accesses your own OurFamilyWizard account. Auth happens via your own credentials. It does not — and cannot — access your co-parent's account, your children's accounts, or anyone else's.
2. [OurFamilyWizard's Terms](https://www.ourfamilywizard.com/legal/terms) govern your use of this server, just as they govern your direct use of OFW. There is no explicit anti-scraping clause; the governing language is broader:
Users may not obtain or attempt to obtain any materials or information through any means not intentionally made available.
And on credentials: *"You are solely responsible for (1) maintaining the strict confidentiality of assigned Authentication Methods, (2) instructing any individual to whom the assigned Authentication Method is shared ('Authorized User') to not allow another person to use the Authentication Method."* OFW does contemplate "Authorized Users" and third-party-enabled integrations — but the account holder remains responsible.
You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server.
3. Personal, family use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with OurFamilyWizard, LLC or its parent. It is a personal automation tool for the named account holder. Do not use it on behalf of a co-parent without their consent, do not share credentials with anyone, and do not use it to bulk-extract another family's data.
4. OFW is a court-of-record platform. Messages, expenses, calendar entries, and journal entries on OFW may be entered into legal proceedings — including custody, divorce, and parenting-plan-modification cases. Anything this server writes to OFW (drafts you save, events you create, expenses you log) will appear with the same legal weight as if you had typed it yourself. Do not let this MCP send a message, create an event, or log an expense that you have not read and approved. Review every write operation before confirming.
5. You accept full responsibility for any consequences — both technical (account warnings, suspension) and legal (anything OFW records about your account activity). The MCP author is not your attorney; if you're using OFW in connection with an active legal matter, talk to your actual attorney before automating anything.
This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede OurFamilyWizard's actual ToS.
git clone https://github.com/chrischall/ofw-mcp.git
cd ofw-mcp npm install npm run build
Edit your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd the ofw entry inside "mcpServers" (create the key if it doesn't exist):
{
"mcpServers": { "ofw": { "command": "node", "args": ["/absolute/path/to/ofw-mcp/dist/index.js"], "env": { "OFW_USERNAME": "your-email@example.com", "OFW_PASSWORD": "your-ofw-password" } } } }
Replace /absolute/path/to/ofw-mcp with the actual path where you cloned the repo. On Mac, run pwd inside the cloned directory to get it.
Quit completely (Cmd+Q on Mac, not just close the window) and relaunch.
Ask Claude: *"What does my OFW dashboard look like?"* — it should show your unread message count, upcoming events, and outstanding expenses.
ofw-mcp tries three auth paths in order; whichever succeeds first is used. Existing setups keep working unchanged.
OFW_USERNAME + OFW_PASSWORD and the server logs in via OFW's form endpoint. This is the path shown in the Claude Desktop config above.localStorage["auth"] once at startup from your already-signed-in ourfamilywizard.com tab via the ContextMint Bridge browser extension (built on fetchproxy). After that one read, all OFW API calls go directly from Node — the extension is not in the request hot path. Install ContextMint Bridge from its releases page (Chrome: download the Chrome zip, unzip it, and load it unpacked at chrome://extensions with Developer mode on; Safari is not available yet — it will ship inside the ContextMint app, which has no public download — so use Chrome for now), sign into OurFamilyWizard once, and the MCP just works. ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README (https://github.com/chrischall/fetchproxy#extension) points to it. Its source is public at https://github.com/nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome- .zip.sha256). If you have multiple OFW accounts and want them to use separate caches, set OFW_CACHE_IDENTITY to a label per profile.OFW_DISABLE_FETCHPROXY=1 to skip the fetchproxy fallback entirely (turns missing credentials into a hard error — useful in headless CI).Option A — env block in Claude Desktop config (shown above, recommended):
"env": {
"OFW_USERNAME": "your-email@example.com", "OFW_PASSWORD": "your-ofw-password" }
Option B — `.env` file in the project directory:
cp .env.example .env
Environment variables always take priority over the .env file. You can also pass them directly on the command line:
OFW_USERNAME=you@example.com OFW_PASSWORD=yourpass node dist/index.js
Read-only tools run automatically. Writes that reach your co-parent or the court-visible record — Confirm (server) below — are confirmed by the server itself before anything is sent (see Server-side confirmation); the other writes rely on your MCP host's own approval prompt (Confirm). The *Write mode* column shows the minimum OFW_WRITE_MODE a tool needs to be available at all — see Write protection below.
| Tool | What it does | Permission | Write mode |
|---|---|---|---|
ofw_get_profile | Your profile and co-parent info | Auto | any |
ofw_get_notifications | Dashboard counts (unread messages, upcoming events, outstanding expenses). Updates your co-parent-visible last-seen status, so it is not marked read-only | Confirm | any |
ofw_list_message_folders | Folders with unread counts — get folder IDs here before listing messages | Auto | any |
ofw_list_messages | Messages in a folder | Auto | any |
ofw_get_message | Full content of a single message | Auto | any |
ofw_sync_messages | Sync messages into the local cache and list every new message (newMessages). Unread inbox bodies are left unfetched, so a sync never marks anything read unless you ask for it; if it ever does, the response says so (warning, markedRead) | Auto | any |
ofw_get_unread_sent | Sent messages a recipient hasn't read yet (from local cache) | Auto | any |
ofw_check_freshness | Cheap live check that the cache still matches OFW — per id, whether it is still a draft or was sent/deleted, without a full sync | Auto | any |
ofw_status | One live call for "where does everything stand?" — the full verified draft inventory, and the current state of any ids or draft keys | Auto | any |
ofw_download_attachment | Download a message attachment to disk, inline as extracted content / bytes, or (hosted) as a private expiring link | Auto | any |
ofw_send_message | Send a message | Confirm (server) | all |
ofw_list_drafts | Draft messages | Auto | any |
ofw_save_draft | Create or update a draft | Confirm | drafts |
ofw_delete_draft | Delete a draft | Confirm | drafts |
ofw_upload_attachment | Upload files to My Files — from a hosted session via signed upload slots (uploadSlots → PUT → blobKeys) or base64 inline; locally from the upload directory (path). Returns fileIds to attach via ofw_send_message/ofw_save_draft (which can also take inlineAttachments/blobKeys directly). Sharing (shareClass: SHARED) needs mode all | Auto (PRIVATE) / Confirm (server) (SHARED) | drafts |
ofw_list_events | Calendar events and custody handoffs in a date range; filter with types, read in a per-call timeZone, or get iCalendar text with format: "ics" | Auto | any |
ofw_save_calendar_ics | Save a date range as an .ics file — custody schedule included, which OFW's own export leaves out. A private, expiring download link on a hosted connector; a file in the attachments directory locally | Auto | any |
ofw_create_event | Create a calendar event | Confirm (server) unless private | all (or drafts + OFW_CALENDAR_WRITES) |
ofw_update_event | Update a calendar event | Confirm (server) if shared | all (or drafts + OFW_CALENDAR_WRITES) |
ofw_delete_event | Delete a calendar event | Confirm (server) if shared | all (or drafts + OFW_CALENDAR_WRITES) |
ofw_get_expense_totals | Expense summary totals | Auto | any |
ofw_list_expenses | Expense history | Auto | any |
ofw_list_expense_categories | Expense category ids and split metadata | Auto | any |
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 |
ofw_create_expense | Log a new expense; supports private entries and one receipt PDF | Confirm (server) | all |
ofw_mark_expense_reimbursed | Irreversibly record full remaining external reimbursement; no transfer or partial payment; unavailable in upload-only mode | Confirm (server) | all |
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 |
ofw_list_journal_entries | Journal entries | Auto | any |
| ofw_create_journal_entry | Create a journ
ตัดมาแค่ช่วงต้น อ่านต่อใน repo