Two things separate this from a thin API wrapper. Updates are field-scoped, so changing an estimate or a due date does not mean reading the task back and resubmitting it. And the bulk variants are built for the moment a plan is rebuilt — they take a list of task IDs and let individual failures pass rather than aborting the batch. Most of the write tools also carry limitResponsePayload, which keeps the reply small when many tasks change at once; streams are called channels in the Sunsama UI, and get-streams is where that mapping comes from.
A server over the Sunsama task and calendar API, 30 tools spanning tasks, subtasks, streams and calendar events, with bulk variants of the operations that repeat.
- The day and the backlog as separate reads: get-tasks-by-day with a completion filter and timezone, get-tasks-backlog, get-archived-tasks with limit and offset, get-task-by-id for one
- Scheduling moves that match how a day gets rebuilt — update-task-snooze-date to push a task to another day or back to the backlog, update-task-backlog, and reorder-task to a 0-based position where 0 is the top
- Field-scoped updates instead of resubmitting a task: text, notes as markdown or html, due date, planned time in minutes, and stream assignment each have their own tool
- Subtasks handled both ways: add-subtask creates one from a title in a single call, create-subtasks covers bulk, and complete-subtask, uncomplete-subtask and update-subtask-title work on them individually
- Bulk endpoints for the end-of-day sweep — update-task-complete-bulk, update-task-uncomplete-bulk, update-task-snooze-date-bulk, update-task-backlog-bulk and delete-task-bulk — each documented so that individual failures do not block the others
- Calendar events created and updated in the same session, with get-streams resolving the channels that tasks are filed under
A Sunsama account, authenticated either with SUNSAMA_EMAIL or with SUNSAMA_EMAIL and SUNSAMA_PASSWORD. update-calendar-event needs the full CalendarEventUpdateData object, so the event has to be fetched before it is changed. MIT licensed.
One command plus a key — npx -y mcp-sunsama, then supply credentials
