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.
浏览器
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 wall —
ofw-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.comtab, 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 2and 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.comfor every endpoint (thewww.host serves the web app UI, not the API). ofw-mcpmaintains a local SQLite message cache for fast list/search; this skill has no cache — every list call here goes straight to OFW, andGET /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).
相关技能
让你的智能体读写 OurFamilyWizard 的消息、日程、费用和日志。
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.
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.
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.
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.