OurFamilyWizard MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OFW_PASSWORD | No | Your OurFamilyWizard password. Required unless using fetchproxy extension. | |
| OFW_USERNAME | No | Your OurFamilyWizard username/email. Required unless using fetchproxy extension. | |
| OFW_WRITE_MODE | No | Write protection level: 'none' (read-only), 'drafts' (draft-only writes), or 'all' (all writes). Unrecognized values default to 'none'. | all |
| OFW_CACHE_IDENTITY | No | Optional label to distinguish cache for multiple accounts when using fetchproxy. | |
| OFW_DISABLE_FETCHPROXY | No | Set to '1' to disable the fetchproxy fallback auth method. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ofw_get_profileA | Get current user and co-parent profile information from OurFamilyWizard |
| ofw_get_notificationsA | Get OurFamilyWizard dashboard summary: unread message count, upcoming events, outstanding expenses. Note: updates your last-seen status. |
| ofw_list_message_foldersA | List OurFamilyWizard message folders (inbox, sent, etc.) and their unread counts. Returns folder IDs needed to call ofw_list_messages. Does NOT return message content. |
| ofw_list_messagesA | List messages from the local OurFamilyWizard cache. Supports filtering by folder, date range, and a substring query on subject+body. Pagination is offset-based but if you know what you want (a date range, a topic), prefer the filters over walking pages — the cache may have 1000+ messages. Call ofw_sync_messages first if the cache is empty or stale. |
| ofw_get_messageA | Get a single OurFamilyWizard message OR draft by ID. Reads from local cache when available; otherwise fetches from OFW (which will mark unread inbox messages as read on OFW). For ids that match a draft (in the drafts cache), the response carries folder="drafts" and the body/subject/recipients reflect the drafts cache (which ofw_sync_messages keeps fresh) — drafts have no |
| ofw_send_messageA | Send a message via OurFamilyWizard. To send an existing draft, pass messageId — subject/body/recipientIds become optional overrides (missing fields default to the draft's cached values) and the draft is deleted after sending. To send a fresh message, supply subject/body/recipientIds directly. draftId is the legacy spelling of messageId and works the same way. If replyToId is provided, the cache may rewrite it to the latest reply in the same thread (a note is included in the response when this happens). Attach files by passing their fileIds (from ofw_upload_attachment) in myFileIDs. After sending, the tool re-fetches the message from OFW to populate the local cache and link attachments to the new message id. |
| ofw_list_draftsA | List draft messages from the local OurFamilyWizard cache. Call ofw_sync_messages first if the cache is empty. |
| ofw_save_draftA | Save a message as a draft in OurFamilyWizard. Recipients are optional. Pass messageId to replace an existing draft — note that under the hood this creates a NEW draft and deletes the old one (OFW's update-in-place endpoint silently no-ops while echoing the posted body, so we don't use it); the response.id will be the NEW id, not the messageId you passed, and the change is documented in a transparency NOTE in the response. If replyToId is provided, the cache may rewrite it to the latest reply in the thread (note included in response). Attach files by passing their fileIds (from ofw_upload_attachment) in myFileIDs. After saving, the tool re-fetches the draft from OFW to populate the local cache from authoritative server state. |
| ofw_delete_draftA | Delete a draft message from OurFamilyWizard. Also removes the draft from the local cache. |
| ofw_get_unread_sentA | List sent messages that have not been read by one or more recipients. Reads from local cache; call ofw_sync_messages first if cache is stale. |
| ofw_upload_attachmentA | Upload a local file to OurFamilyWizard's "My Files" so it can be attached to a message. Returns the fileId — pass that to ofw_send_message or ofw_save_draft in myFileIDs to attach it. The file is uploaded as PRIVATE (visible only to you) by default; pass shareClass:"SHARED" to share with co-parents directly via the My Files area. |
| ofw_download_attachmentA | Download an OFW message attachment by fileId. By default, bytes are saved to disk (~/Downloads/ofw-mcp/) and the response carries the absolute path, mime type, and size for the caller to read back. Pass inline:true to skip disk entirely and return the bytes as MCP content blocks — images come back as ImageContent (the model sees them directly); other files come back as an EmbeddedResource blob. Use inline for small files where you want the model to read content immediately and the host is sandboxed; use disk for large files or when you want a persistent local copy. The default for |
| ofw_sync_messagesA | Sync messages from OurFamilyWizard into the local cache. Returns counts per folder and a list of unread inbox messages whose bodies were NOT fetched (to avoid mark-as-read on OFW). Call ofw_get_message(id) on those to read them. Pass deep:true to walk all OFW pages instead of stopping at the first all-cached page (use to backfill suspected gaps). |
| ofw_list_eventsA | List OurFamilyWizard calendar events in a date range |
| ofw_create_eventB | Create a calendar event in OurFamilyWizard |
| ofw_update_eventC | Update an existing OurFamilyWizard calendar event |
| ofw_delete_eventB | Delete an OurFamilyWizard calendar event |
| ofw_get_expense_totalsA | Get OurFamilyWizard expense summary totals (owed/paid) |
| ofw_list_expensesA | List OurFamilyWizard expenses with pagination |
| ofw_create_expenseA | Log a new expense in OurFamilyWizard |
| ofw_list_journal_entriesC | List OurFamilyWizard journal entries |
| ofw_create_journal_entryB | Create a new journal entry in OurFamilyWizard |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrischall/hemnet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server