v0.4.0 Release Notes
Overview
Theme: Less Tools, More Power
This release focuses on reducing context overhead for AI assistants while adding powerful batch operation capabilities. Every mutation tool now accepts lists, enabling efficient bulk operations in a single API call.
Highlights
| Metric | Before | After | Change |
|--------|--------|-------|--------|
| MCP Tools | 50 | 43 | -14% |
| Batch Capability | None | Full | ✨ New |
| Test Coverage | 352 tests | 352 tests | Maintained |
New Features
Batch Operations
All mutation tools now accept lists of 1-100 items, enabling bulk operations:
| Tool | Capability |
|------|------------|
| ticktick_create_tasks | Create multiple tasks in one call |
| ticktick_update_tasks | Update multiple tasks (titles, priorities, tags, columns, etc.) |
| ticktick_delete_tasks | Delete multiple tasks |
| ticktick_complete_tasks | Complete multiple tasks |
| ticktick_move_tasks | Move multiple tasks between projects |
| ticktick_set_task_parents | Make multiple tasks into subtasks |
| ticktick_unparent_tasks | Remove multiple tasks from parents |
| ticktick_pin_tasks | Pin or unpin multiple tasks |
| ticktick_checkin_habits | Record multiple habit check-ins (great for backdating) |
Example - Create 3 tasks:
{
"tasks": [
{"title": "Task 1", "priority": 5},
{"title": "Task 2", "tags": ["work"]},
{"title": "Task 3", "due_date": "2026-01-20"}
]
}
Example - Backdate a week of habit check-ins:
{
"checkins": [
{"habit_id": "abc123", "checkin_date": "2026-01-11"},
{"habit_id": "abc123", "checkin_date": "2026-01-12"},
{"habit_id": "abc123", "checkin_date": "2026-01-13"},
{"habit_id": "abc123", "checkin_date": "2026-01-14"},
{"habit_id": "abc123", "checkin_date": "2026-01-15"}
]
}
Enhanced Filtering
ticktick_list_tasks now supports a status filter, consolidating 4 separate query patterns into one tool:
| Status Value | Description |
|--------------|-------------|
| "active" | Current tasks (default) |
| "completed" | Completed tasks (requires from_date/to_date) |
| "abandoned" | Abandoned/won't-do tasks (requires from_date/to_date) |
| "deleted" | Trashed tasks |
Example - Get completed tasks from last week:
{
"status": "completed",
"from_date": "2026-01-11",
"to_date": "2026-01-18"
}
Integrated Column Assignment
ticktick_update_tasks now includes column_id field for kanban column assignment:
{
"tasks": [
{"task_id": "abc", "project_id": "xyz", "column_id": "done-column-id"}
]
}
Use empty string "" to remove a task from its column.
Unified Tag Updates
ticktick_update_tag now includes label field for renaming:
{
"name": "oldname",
"label": "New Display Name",
"color": "#FF6B6B"
}
Unified Habit Updates
ticktick_update_habit now includes archived field:
{
"habit_id": "abc123",
"archived": true
}
Tool Consolidation
Removed Tools (7)
These tools have been absorbed into existing tools with enhanced parameters:
| Removed Tool | Absorbed Into | How to Migrate |
|--------------|---------------|----------------|
| ticktick_completed_tasks | ticktick_list_tasks | Use status: "completed" with from_date/to_date |
| ticktick_abandoned_tasks | ticktick_list_tasks | Use status: "abandoned" with from_date/to_date |
| ticktick_deleted_tasks | ticktick_list_tasks | Use status: "deleted" |
| ticktick_move_task_to_column | ticktick_update_tasks | Use column_id field in task update |
| ticktick_rename_tag | ticktick_update_tag | Use label field |
| ticktick_archive_habit | ticktick_update_habit | Use archived: true |
| ticktick_unarchive_habit | ticktick_update_habit | Use archived: false |
Renamed Tools (Singular → Plural)
Tools renamed to reflect batch capability:
| Old Name | New Name |
|----------|----------|
| ticktick_create_task | ticktick_create_tasks |
| ticktick_update_task | ticktick_update_tasks |
| ticktick_delete_task | ticktick_delete_tasks |
| ticktick_complete_task | ticktick_complete_tasks |
| ticktick_move_task | ticktick_move_tasks |
| ticktick_make_subtask | ticktick_set_task_parents |
| ticktick_unparent_subtask | ticktick_unparent_tasks |
| ticktick_pin_task | ticktick_pin_tasks |
| ticktick_checkin_habit | ticktick_checkin_habits |
Final Tool Inventory (43 Tools)
Tasks (11 tools)
ticktick_create_tasks - Create 1+ tasks ✨ Batch
ticktick_get_task - Get single task by ID
ticktick_list_tasks - List/query tasks with status filter
ticktick_update_tasks - Update 1+ tasks ✨ Batch
ticktick_complete_tasks - Complete 1+ tasks ✨ Batch
ticktick_delete_tasks - Delete 1+ tasks ✨ Batch
ticktick_move_tasks - Move 1+ tasks between projects ✨ Batch
ticktick_set_task_parents - Make 1+ tasks into subtasks ✨ Batch
ticktick_unparent_tasks - Remove 1+ tasks from parent ✨ Batch
ticktick_pin_tasks - Pin/unpin 1+ tasks ✨ Batch
ticktick_search_tasks - Search tasks by query
Projects (5 tools)
ticktick_list_projects
ticktick_get_project
ticktick_create_project
ticktick_update_project
ticktick_delete_project
Folders (4 tools)
ticktick_list_folders
ticktick_create_folder
ticktick_rename_folder
ticktick_delete_folder
Columns (4 tools)
ticktick_list_columns
ticktick_create_column
ticktick_update_column
ticktick_delete_column
Tags (5 tools)
ticktick_list_tags
ticktick_create_tag
ticktick_update_tag - Now includes rename via label
ticktick_delete_tag
ticktick_merge_tags
Habits (8 tools)
ticktick_habits - List all habits
ticktick_habit - Get single habit
ticktick_habit_sections - Get habit sections
ticktick_create_habit
ticktick_update_habit - Now includes archive/unarchive via archived
ticktick_delete_habit
ticktick_checkin_habits - Record 1+ check-ins ✨ Batch
ticktick_habit_checkins - Query check-in history
User & Analytics (6 tools)
ticktick_get_profile
ticktick_get_status
ticktick_get_statistics
ticktick_get_preferences
ticktick_focus_heatmap
ticktick_focus_by_tag
Breaking Changes
Tool Renames
If you have prompts or automations referencing the old singular tool names, update them to the new plural names.
Removed Tools
If you were using the removed tools directly, migrate to the consolidated alternatives as shown in the migration table above.
Input Schema Changes
Task mutation tools now expect a tasks array instead of individual fields at the root level:
Before (v0.3.x):
{"title": "My Task", "priority": 5}
After (v0.4.0):
{"tasks": [{"title": "My Task", "priority": 5}]}
Internal Changes
- Added batch methods to
UnifiedTickTickAPI and TickTickClient
- Added batch result formatters to
tools/formatting.py
- Updated
tools/__init__.py exports for new input models
- All 352 existing tests continue to pass
https://pypi.org/project/ticktick-sdk/
pip install ticktick-sdk==0.4.0
Full Changelog: https://github.com/dev-mirzabicer/ticktick-sdk/compare/v0.3.0...v0.4.0