feat: add Task CRUD tools – create, update, toggle, delete (v0.4.0)

Implements four new MCP write tools via taskcreate2, taskupdate2,
taskmark, and metadelete endpoints. Confirmation prompts noted in
docstrings for destructive/mutating operations. Body parameters
documented in SPEC.md as pending verification via FW_DEBUG=1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-15 15:06:38 +02:00
parent 332b01718e
commit 5aff3ac9bf
4 changed files with 249 additions and 5 deletions
+65 -1
View File
@@ -185,6 +185,66 @@ offener Punkte (z.B. `type`-Parameter beim Login, Kreis-Felder in Response).
**Wichtig:** Keine Secrets in Debug-Ausgaben (Passwort maskieren).
### `taskcreate2` Task erstellen
POST https://api.familywall.com/api/taskcreate2
Content-Type: application/x-www-form-urlencoded
**Body-Parameter (aus API-Pattern abgeleitet, zu verifizieren):**
| Parameter | Pflicht | Wert |
|---|---|---|
| `taskListId` | ja | Listen-ID aus `get_lists` (z.B. `taskList/123_456`) |
| `text` | ja | Aufgabentitel |
| `description` | nein | Optionale Beschreibung |
**Response-Struktur (zu verifizieren):**
```
a00.r.r.metaId → metaId der neu erstellten Task
```
### `taskupdate2` Task aktualisieren
POST https://api.familywall.com/api/taskupdate2
Content-Type: application/x-www-form-urlencoded
**Body-Parameter (aus API-Pattern abgeleitet, zu verifizieren):**
| Parameter | Pflicht | Wert |
|---|---|---|
| `metaId` | ja | Task-ID aus `get_tasks` |
| `text` | nein | Neuer Titel (mindestens `text` oder `description` erforderlich) |
| `description` | nein | Neue Beschreibung |
| `taskListId` | unklar | Evtl. erforderlich zu verifizieren |
**Response-Struktur:** kein spezifischer Rückgabewert erwartet (Erfolg = kein `ex`/`un`-Key)
### `taskmark` Task als erledigt/offen markieren
POST https://api.familywall.com/api/taskmark
Content-Type: application/x-www-form-urlencoded
**Body-Parameter (aus API-Pattern abgeleitet, zu verifizieren):**
| Parameter | Pflicht | Wert |
|---|---|---|
| `metaId` | ja | Task-ID aus `get_tasks` |
| `complete` | ja | `"true"` oder `"false"` (String, nicht Boolean!) |
**Response-Struktur:** kein spezifischer Rückgabewert erwartet (Erfolg = kein `ex`/`un`-Key)
### `metadelete` Objekt löschen (Task)
POST https://api.familywall.com/api/metadelete
Content-Type: application/x-www-form-urlencoded
**Body-Parameter (aus API-Pattern abgeleitet, zu verifizieren):**
| Parameter | Pflicht | Wert |
|---|---|---|
| `metaId` | ja | Task-ID aus `get_tasks` |
Hinweis: `metadelete` ist ein generischer Lösch-Endpoint. Er löscht jedes Objekt
mit der angegebenen `metaId` nicht nur Tasks. Entsprechend vorsichtig verwenden.
**Response-Struktur:** kein spezifischer Rückgabewert erwartet (Erfolg = kein `ex`/`un`-Key)
## Noch zu verifizieren
- ~~Exakter Wert für `type`-Parameter beim Login~~ → nicht senden (verifiziert per JS-Analyse)
@@ -194,4 +254,8 @@ offener Punkte (z.B. `type`-Parameter beim Login, Kreis-Felder in Response).
- Listen-Namen und Zähler (remainingTaskNumber, totalTaskNumber) → noch unbekannt
- Kreis-Zuordnung in `accgetallfamily`-Response → noch offen
- ~~Ob `partnerScope` / `withStateBean` benötigt werden~~ → nein (verifiziert)
- Session-Lebensdauer (irrelevant da kein Caching)
- Session-Lebensdauer (irrelevant da kein Caching)
- `taskcreate2`: genaue Response-Struktur (metaId-Pfad), ob weitere Pflichtfelder existieren
- `taskupdate2`: ob `taskListId` Pflichtfeld ist; Response-Struktur
- `taskmark`: Response-Struktur
- `metadelete`: Response-Struktur, welche Objekt-Typen unterstützt werden