浏览器

ofw-fpx

试用

Access OurFamilyWizard (OFW) — messages, calendar, expenses, journal — from a shell with the fpx CLI (@fetchproxy/cli) instead of running the ofw-mcp server: capture the signed-in web app's Bearer token once via the browser bridge, then curl the REST API directly. Use when you want OFW data without the MCP, in a script, or on a machine where the MCP isn't installed.

它能做什么

Access OurFamilyWizard (OFW) — messages, calendar, expenses, journal — from a shell with the fpx CLI (@fetchproxy/cli) instead of running the ofw-mcp server: capture the signed-in web app's Bearer token once via the browser bridge, then curl the REST API directly. Use when you want OFW data without the MCP, in a script, or on a machine where the MCP isn't installed.

技能文档

OurFamilyWizard via fpx + curl (no MCP)

OFW's app (ofw.ourfamilywizard.com) has no API key a script can request — the only credential is the Bearer token the web app itself mints on login and stores in localStorage["auth"] (with localStorage["tokenExpiry"] alongside). Once you have that token the API itself has no bot wallofw-mcp's own src/client.ts calls it with plain Node fetch for every request. So this skill is hybrid: fpx captures the token from a signed-in browser tab ONCE, then plain curl does every read/write from then on. fetchproxy never touches the actual API calls.

This is a shared family-court record. Every write here (send, create_event, create_expense, create_journal_entry, upload_attachment, the delete_*/bulk-delete calls) lands on the same record the MCP's OFW_WRITE_MODE gate exists to protect. There is no dry-run/confirm here — curl just does it. Treat every write like the MCP's all mode: real, permanent, and visible to your co-parent.

One-time setup

npm install -g @fetchproxy/cli                                       # provides `fpx`
fpx profile add ofw --domain ourfamilywizard.com
fpx profile declare ofw --local-storage auth --local-storage tokenExpiry
fpx pair -p ofw                                                       # prints a pair code → approve in Transporter

Requirements: the Transporter browser extension installed, with an open, signed-in ofw.ourfamilywizard.com (or www.ourfamilywizard.com) tab, and its Chrome Site access allowing ourfamilywizard.com. Pairing persists across invocations.

Capture the token (once per shell / whenever it goes stale)

LS=$(fpx local-storage auth tokenExpiry -p ofw)
TOKEN=$(jq -r '.auth' <<<"$LS")
EXPIRES=$(jq -r '.tokenExpiry' <<<"$LS")

If auth comes back empty, sign into OFW in the browser tab first — the same precondition ofw-mcp's own fetchproxy fallback documents in src/auth.ts.

Core call

Every request needs the bearer token plus OFW's two protocol headers (sent on every call, not just login):

curl -s 'https://ofw.ourfamilywizard.com/pub/v2/profiles' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'ofw-client: WebApplication' \
  -H 'ofw-version: 1.0.0' \
  | jq .

ofw-version is OFW's wire-protocol version (see src/protocol.ts), unrelated to any package version — send it as-is. Writes add -H 'Content-Type: application/json' --data '...' for JSON bodies, or -F multipart fields for uploads/deletes — both shown per-endpoint in references/requests.md.

The one rule: re-GET after every message POST to confirm it landed

OFW's POST /pub/v3/messages response is minimal ({"entityId": } or legacy {"id": }) and — worse — its draft-replace path silently no-ops while still echoing success. Never trust the POST status alone for a send or draft save: immediately GET /pub/v3/messages/{id} with the returned id and check the body/subject actually match what you sent. See §2/§3 in references/requests.md.

Auth-error handling

  • 401 — the token expired or was invalidated. OFW has no refresh-token flow; re-mint by reloading/re-signing-in on the ourfamilywizard.com tab, then re-run the capture step above.
  • 429 — OFW's own client waits 2s and retries exactly once (src/client.ts); do the same: sleep 2 and resend the identical request. A second 429 is a real rate-limit — back off further.
  • Any other non-2xx is a real upstream error — surface the response body.

All 20 endpoint operations, request bodies, and jq projections are in references/requests.md, transcribed from src/tools/*.ts, src/sync.ts, and src/tools/_shared.ts — nothing here is guessed.

Notes

  • Base URL is https://ofw.ourfamilywizard.com for every endpoint (the www. host serves the web app UI, not the API).
  • ofw-mcp maintains a local SQLite message cache for fast list/search; this skill has no cache — every list call here goes straight to OFW, and GET /pub/v3/messages/{id} on an unread inbox message marks it read on OFW, exactly as it does for the MCP.
  • This project is developed and maintained by AI (Claude).

相关技能

This skill should be used when the user asks about OurFamilyWizard (OFW) co-parenting data. Triggers on phrases like "check OFW", "OurFamilyWizard inbox", "OFW messages", "OFW calendar", "OFW expenses", "what did my co-parent say", "log an expense in OFW", "OFW journal", or any request involving co-parenting messages, calendar events, shared expenses, or journal entries.

让你的智能体读写 OurFamilyWizard 的消息、日程、费用和日志。

41 次安装

Read Workday HR data (org chart, worker profiles, tasks, pay, benefits, compensation, your app menu) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the workday-mcp server — fetch any *.htmld data endpoint through your own signed-in *.myworkday.com tab (SSO/Ping/Okta/Entra already cleared). Use when you want Workday data without the MCP, in a script, or on a machine where the MCP isn't installed.

1 次安装

Query and manage OpenTable (opentable.com) restaurant reservations from a shell with the fpx CLI (@fetchproxy/cli) instead of running the opentable-mcp server — search restaurants, check slot availability, list reservations/favorites, and book/modify/cancel a table via one-shot GraphQL + REST calls through a signed-in browser tab. Use when you want OpenTable data or actions without the MCP, in a script, or on a machine where the MCP isn't installed.

1 次安装

Query OneHome (CoreLogic) — the agent magic-link real-estate portal at portal.onehome.com — from a shell with the fpx CLI (@fetchproxy/cli) instead of running the onehome-mcp server. Resolve the consumer's group / saved-search scope, search shared listings, and read listing detail via one-shot GraphQL calls routed through the signed-in browser tab. Use when you want OneHome data without the MCP, in a script, or on a machine where the MCP isn't installed.

1 次安装

Read HoneyBook client-portal data (contracts, invoices, proposals, payment methods, workspace status) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the honeybook-mcp server — capture a vendor session once via the signed-in browser tab, then curl api.honeybook.com directly. Use when you want HoneyBook data without the MCP, in a script, or on a machine where the MCP isn't installed.