MCP/client: bulk delete notes — DELETE_NOTE accepts many ids in one call

Author: teng-linCreated Jul 18, 2026Updated Sep 1, 2026
LabelsP2

Live-verified on a scratch notebook: DELETE_NOTE is batch-capable and unexposed. Companion to #1995 (bulk source delete).

Verified wire shape

Single (_note_service.py:447) is [nb_id, None, [note_id]]; the id slot takes a list:

python
params = [notebook_id, None, [id1, id2, id3]]

✅ 3 notes deleted in one call.

Proposal

  • Client: notes.delete(nb_id, ids: str | list[str]) (mirror labels.delete, which already accepts str | list[str]).
  • MCP: plural mode on the note-delete surface, structured aggregate {deleted, not_found}.
  • not_found from up-front resolution — the backend silently no-ops unknown ids (same as DELETE_SOURCE, #1995).
  • Lower priority than bulk add/delete-source, but the shape is confirmed.

Notes

  • New _idempotency_policy.py client-token slot (mirrors batch DELETE_LABEL).
  • Mind maps are note-backed — ensure the plural path doesn't fold interactive maps in unintentionally.