Install
openclaw skills install @snowsand-enterprises/snowsand-familywallInteract with the FamilyWall family organization platform. Manage calendar events, shopping lists, tasks, family messaging, member locations, meal plans, recipes, the family wall/feed, and media file downloading. Use when: (1) checking family calendar or creating events, (2) managing shopping lists or to-do items, (3) sending/reading family messages, (4) checking family member locations, (5) viewing the family wall/feed, (6) meal planning or recipe management, (7) downloading photos, audio, or other media from messages. Triggers: "family calendar", "family events", "shopping list", "grocery list", "family message", "family chat", "family location", "where is", "family wall", "family feed", "add to list", "family members", "familywall", "meal plan", "recipe", "what's for dinner", "weekly meals", "download photo", "download media", "family photos", "message attachment".
openclaw skills install @snowsand-enterprises/snowsand-familywallFamilyWall family organization platform integration for managing calendars, lists, messaging, meal plans, recipes, and more.
FamilyWall uses email/password authentication with session tokens. Required environment variables:
FAMILYWALL_EMAIL - FamilyWall account emailFAMILYWALL_PASSWORD - FamilyWall account passwordThese should be set in ~/.openclaw/.env.
Test connection:
source ~/.openclaw/.env && {baseDir}/scripts/familywall.py status
All operations use the {baseDir}/scripts/familywall.py script:
| Operation | Command |
|---|---|
| Status & Members | |
| Account/family status | {baseDir}/scripts/familywall.py status |
| List family members | {baseDir}/scripts/familywall.py members |
| Calendar Events | |
| List upcoming events | {baseDir}/scripts/familywall.py events list --days 7 |
| Create event | {baseDir}/scripts/familywall.py events create "Title" --start "2026-03-10T14:00:00" --end "2026-03-10T15:00:00" |
| Create all-day event | {baseDir}/scripts/familywall.py events create "Holiday" --start "2026-03-10" --end "2026-03-11" --allday |
| Delete event | {baseDir}/scripts/familywall.py events delete EVENT_ID |
| Shopping Lists / Tasks | |
| List all lists | {baseDir}/scripts/familywall.py lists list |
| View list items | {baseDir}/scripts/familywall.py lists items LIST_ID |
| Add item to list | {baseDir}/scripts/familywall.py lists add LIST_ID "Milk" |
| Add with quantity | {baseDir}/scripts/familywall.py lists add LIST_ID "Eggs" --quantity "12" |
| Check item (purchased) | {baseDir}/scripts/familywall.py lists check ITEM_ID |
| Uncheck item | {baseDir}/scripts/familywall.py lists check ITEM_ID --uncheck |
| Create new list | {baseDir}/scripts/familywall.py lists create "Groceries" --type SHOPPING |
| Create todo list | {baseDir}/scripts/familywall.py lists create "Chores" --type TODO |
| Messaging | |
| List threads | {baseDir}/scripts/familywall.py messages threads |
| Read messages | {baseDir}/scripts/familywall.py messages read THREAD_ID --limit 20 |
| Send message | {baseDir}/scripts/familywall.py messages send THREAD_ID "Hello family!" |
| Media | |
| List media in thread | {baseDir}/scripts/familywall.py media list THREAD_ID |
| Download by URL | {baseDir}/scripts/familywall.py media download --url "PICTURE_URL" -o file.jpg |
| Download by media ID | {baseDir}/scripts/familywall.py media download --media-id MEDIA_ID --thread-id THREAD_ID |
| Download all from thread | {baseDir}/scripts/familywall.py media download-all THREAD_ID --output-dir ./media |
| Meal Planner | |
| View meal plan | {baseDir}/scripts/familywall.py meals list --days 7 |
| Add meal to plan | {baseDir}/scripts/familywall.py meals add "Tacos" --date 2026-05-15 --type DINNER |
| Recipes | |
| Create recipe | {baseDir}/scripts/familywall.py recipes create "Pasta" --ingredients "noodles\nsauce" --instructions "1. Boil\n2. Mix" |
| Import recipe from URL | {baseDir}/scripts/familywall.py recipes from-url "https://example.com/recipe" |
| List recipe categories | {baseDir}/scripts/familywall.py recipes categories |
| Location | |
| Get member locations | {baseDir}/scripts/familywall.py locations |
| Wall / Feed | |
| Get family wall | {baseDir}/scripts/familywall.py wall --limit 20 |
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py events list --days 7
source ~/.openclaw/.env
# First get the list ID
{baseDir}/scripts/familywall.py lists list
# Then add items
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Milk"
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Bread"
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Eggs" --quantity "12"
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py events create "Family Dinner" \
--start "2026-05-15T18:00:00" \
--end "2026-05-15T20:00:00" \
--location "Home" \
--description "Weekly family dinner"
source ~/.openclaw/.env
# Get thread list first
{baseDir}/scripts/familywall.py messages threads
# Send message to a thread
{baseDir}/scripts/familywall.py messages send "imthread/12345_67890" "Dinner is ready!"
Messages can contain photos, audio, and other media files. The medias array in message responses includes pictureUrl for downloading.
source ~/.openclaw/.env
# List all media in a thread
{baseDir}/scripts/familywall.py media list "imThread/12345"
# Download a specific file by URL (from media list output)
{baseDir}/scripts/familywall.py media download --url "https://api.familywall.com/media/..." -o photo.jpg
# Download by media ID (looks up the URL automatically)
{baseDir}/scripts/familywall.py media download --media-id "media/12345_67890" --thread-id "imThread/12345"
# Download ALL media from a thread into a directory
{baseDir}/scripts/familywall.py media download-all "imThread/12345" --output-dir ./family_media
# Download media from a specific message only
{baseDir}/scripts/familywall.py media download-all "imThread/12345" --message-id "message/12345_67890" --output-dir ./media
source ~/.openclaw/.env
# View current meal plan
{baseDir}/scripts/familywall.py meals list --days 7
# Add meals
{baseDir}/scripts/familywall.py meals add "Spaghetti" --date 2026-05-13 --type DINNER
{baseDir}/scripts/familywall.py meals add "Pancakes" --date 2026-05-14 --type BREAKFAST
{baseDir}/scripts/familywall.py meals add "Grilled Chicken" --date 2026-05-14 --type DINNER
Meal types: BREAKFAST, LUNCH, DINNER, SNACK
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py recipes create "Banana Smoothie" \
--ingredients "2 bananas\n1 cup milk\n1 tbsp honey\nIce" \
--instructions "1. Add all ingredients to blender\n2. Blend until smooth\n3. Serve immediately" \
--prep-time 5 --serves 2 \
--description "Quick healthy breakfast smoothie"
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py recipes from-url "https://www.example.com/recipe/chocolate-cake"
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py locations
The FamilyWall API is at https://api.familywall.com/api. Authentication is session-based:
log2in endpoint with email/password| Category | Endpoint | Description |
|---|---|---|
| Auth | log2in | Login with email/password |
| Account | accgetallfamily | Get all family data |
| Family | famlistfamily | List user's families |
| Events | evtlist | List calendar events |
| Events | evtcreate | Create event |
| Events | evtdelete | Delete event |
| Lists | tasklistlist | List all task/shopping lists |
| Lists | tasklistget | Get list with items |
| Lists | tasklistadd | Add item to list |
| Lists | tasklistcheck | Check/uncheck item |
| Lists | tasklistcreate | Create new list |
| Messages | imthreadlist | List IM threads |
| Messages | immessagelist2 | Get messages from thread (includes media) |
| Messages | imsend | Send message |
| Media | /media/... | Download media files (GET with session auth) |
| Location | loclist | Get member locations |
| Wall | walllist | Get wall/feed posts |
| Meals | mplistinterval | List planned meals in range |
| Meals | mpcreate | Add dish to meal plan |
| Meals | mpmealput | Create/edit a meal |
| Recipes | mprecipeput | Create/edit a recipe |
| Recipes | mprecipeputbyurl | Create recipe from URL |
| Recipes | mpcategorylist | List recipe categories |
| Recipes | mpadditemtolist | Add meal ingredients to shopping list |
All requests are POST with application/x-www-form-urlencoded body. Parameters use prefix notation:
a00 prefix for first call parametersa01call, a02call, etc. for batched callspartnerScope=Family required on all callsResponses are JSON with structure:
{
"a00": {
"r": {"r": <result_data>}, // Success
"ex": {"ex": {"message": "..."}}, // Error
"cn": "endpoint_name"
}
}
Messages from immessagelist2 include a medias array. Each media object contains:
| Field | Description |
|---|---|
mediaId | Unique media identifier (e.g. media/12345_67890) |
pictureUrl | Direct download URL (requires session auth cookie) |
mimeType | MIME type (image/jpeg, audio/mp4, etc.) |
name | Original filename |
datasize | File size in bytes |
resolutionX/Y | Image dimensions (images only) |
durationMs | Duration in milliseconds (audio/video only) |
readystate | Processing state (READY = downloadable) |
To download media, send an authenticated GET request to the pictureUrl with the JSESSIONID cookie and tokencsrf header.
Wall/feed posts may also contain media attachments with the same structure.
Common errors:
urllib if requests not available)requests library for better HTTP handlingThe complete FamilyWall API reference (all endpoints, parameters, return types, and exceptions) is maintained on Confluence: