docs(usability): reorganize README.md tools by category — move get_activities and like_post to Wall & Activities (v1.4.4)

- Consolidate wall post and activity tools in dedicated section
- Remove duplicate entries from Lists & Tasks
- Update README version header to v1.4.3
- Bump pyproject.toml to v1.4.4
- Fix unused import in find_category_param.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-04-20 06:00:55 +02:00
parent 5671d70000
commit 5f5abfcbc7
4 changed files with 28 additions and 19 deletions
+13
View File
@@ -10,6 +10,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
This project follows Semantic Versioning (SemVer).
Breaking changes (removed tools, changed parameters) increment the major version.
## [1.4.4] 2026-04-20
### Updated
- **README.md restructuring** — consolidated `get_activities` and `like_post` into Wall & Activities section
- `get_activities` moved from Lists & Tasks to Wall & Activities (belongs with wall functionality)
- `like_post` reference removed from Lists & Tasks (consolidated in one section)
- Version bump in README header: v1.3.1 → v1.4.3
### Notes
- Documentation-only release; no code changes
- All tools remain functional and unchanged
- Improves UX by grouping related wall/activity tools in one section
## [1.4.3] 2026-04-18
### Improved
+2 -3
View File
@@ -2,13 +2,14 @@
MCP server for [Family Wall](https://www.familywall.com) — manage your family's circles, lists, tasks, recipes, and meal plan directly from Claude.
## Tools (v1.3.1)
## Tools (v1.4.3)
### Wall & Activities
| Tool | Description |
|---|---|
| `get_wall_posts` | Get recent wall posts (text, author, likes, comments) |
| `get_activities` | List recent activities (task updates, list changes) |
| `create_wall_post` 🔒 | Create a new status post on the wall |
| `add_comment` 🔒 | Add a comment to a post |
| `like_post` 🔒 | Like or unlike a wall post/activity |
@@ -32,7 +33,6 @@ MCP server for [Family Wall](https://www.familywall.com) — manage your family'
| `get_lists` | List all task lists (emoji, color, circle; optional `scope` filter) |
| `get_tasks` | List tasks in a list (category, due date, assignees, recurrency, reminder) |
| `get_categories` | List categories for a list (locale-filtered; custom categories always shown) |
| `get_activities` | List recent wall activities (author resolved to display name) |
| `create_list` 🔒 | Create a task list (`SHOPPING_LIST`, `TODOS`, or `OTHER`; optional emoji, color, circle) |
| `update_list` 🔒 | Rename a list or change its emoji/color (partial update; system lists protected) |
| `delete_list` 🔒 | Permanently delete a list and all its tasks (system lists protected) |
@@ -43,7 +43,6 @@ MCP server for [Family Wall](https://www.familywall.com) — manage your family'
| `toggle_task` 🔒 | Mark a task complete or reopen it |
| `delete_task` 🔒 | Permanently delete a task |
| `clear_list` 🔒 | Bulk-delete all tasks in a list (optional `only_open=True` keeps completed tasks) |
| `like_post` 🔒 | Like a wall post/activity |
### Recipe Box
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "mcp-familywall"
version = "1.4.3"
version = "1.4.4"
description = "MCP server for Family Wall — manage your family's circles, lists, tasks, recipes, and meal plan via Claude"
readme = "README.md"
requires-python = ">=3.12"
+12 -15
View File
@@ -14,7 +14,6 @@ Prerequisites: credentials stored in OS keyring or FW_EMAIL / FW_PASSWORD set.
from __future__ import annotations
import json
import os
import sys
@@ -39,24 +38,22 @@ FORCED_CATEGORY_META_ID: str | None = None
CANDIDATES: list[dict[str, str | None]] = [
# key → value format description
# Full metaId variants
{"key": "systemCategoryId", "fmt": "numeric"}, # just the number, e.g. "200"
{"key": "taskCategorySystemId", "fmt": "numeric"},
{"key": "categories", "fmt": "meta_id"}, # full taskCategory/… metaId
{"key": "categoryIds", "fmt": "meta_id"},
{"key": "taskCategoryName", "fmt": "name"}, # category name as string
{"key": "categoryName", "fmt": "name"},
{"key": "taskCategoryId", "fmt": "meta_id"}, # already tried but try numeric too
{"key": "systemCategoryId", "fmt": "numeric"}, # just the number, e.g. "200"
{"key": "taskCategorySystemId", "fmt": "numeric"},
{"key": "categories", "fmt": "meta_id"}, # full taskCategory/… metaId
{"key": "categoryIds", "fmt": "meta_id"},
{"key": "taskCategoryName", "fmt": "name"}, # category name as string
{"key": "categoryName", "fmt": "name"},
{"key": "taskCategoryId", "fmt": "meta_id"}, # already tried but try numeric too
# Numeric variants of already-tried names
{"key": "taskCategoryId", "fmt": "numeric"},
{"key": "categoryId", "fmt": "numeric"},
{"key": "category", "fmt": "numeric"},
{"key": "categoryMetaId", "fmt": "numeric"},
{"key": "taskCategoryId", "fmt": "numeric"},
{"key": "categoryId", "fmt": "numeric"},
{"key": "category", "fmt": "numeric"},
{"key": "categoryMetaId", "fmt": "numeric"},
]
def _resolve_category(
client: FamilyWallClient, list_id: str
) -> tuple[str, str, str]:
def _resolve_category(client: FamilyWallClient, list_id: str) -> tuple[str, str, str]:
"""Return (meta_id, system_category_id_str, name) for the first German category."""
data = client.call(
"accgetallfamily",