Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TICKTICK_API_TOKENYesV1 Open API bearer token (PAT or OAuth2)
TICKTICK_SESSION_TOKENNoV2 session cookie for extended features

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
ticktick_guideA
Interactive guide to all TickTick MCP tools — START HERE.

[Category: Utilities]  [Auth: none]
[Related: check_v2_availability]

Call with no args to see all categories and tool names.
Call with a category name to see tools in that category.
Call with an intent name to see the recommended tool path for a real user goal.
Call with show_workflows=True to see common multi-step patterns.

Args:
    category: Filter by category name (partial match, case-insensitive).
        Examples: "task", "tag", "habit", "project", "sync", "focus".
    intent: Filter by user intent, e.g. "know_what_to_do_today", "find_a_note",
        "reorganize_projects", or "clean_up_tasks".
    show_workflows: If True, return common multi-step workflow recipes.

  Tip: Call check_v2_availability() to see which features need a session token.
  Query filter ergonomics: for multi-value string filters (project/folder IDs or
  names, tags, search_fields, kinds), tools accept either a single string or a list.

── AGENT OPERATING CONTRACT ─────────────────────────────────────────────────
The TickTick API is dual-layer (V1 official + V2 unofficial) with silent failure
modes. Agents MUST apply the following discipline on every interaction:

1. VERIFY AFTER EVERY WRITE: After create/update/delete operations, always call
   get_task_detail() (or equivalent read tool) to confirm the server state
   matches the intent. Do not trust API response codes alone — silent partial
   failures are common (reminders, parentId, groupId).

2. RETRY UNTIL CONFIRMED: If verification reveals a mismatch, diagnose the root
   cause (V1/V2 API duality, missing anchor field, wrong format), adjust the
   call strategy, and retry. Repeat verify → fix → retry until state is correct.

3. PROACTIVE USER FEEDBACK: After completing a multi-step task or recovering
   from a silent failure, report to the user:
     - What was attempted and what the API actually accepted.
     - Any workaround applied (e.g., switched from V2 batch to V1 update_task).
     - Recommendations for future similar operations.

4. KNOWN SILENT FAILURE PATTERNS (see individual tool docs for details):
     - reminder_minutes on V2-created tasks → requires explicit due_date anchor
       in update_task() V1; batch_update_tasks() V2 cannot anchor reminders.
     - parentId at task creation → always silently ignored; use set_subtask_parent.
     - groupId at project creation → use V2 batch/project to set folder after.
     - reminder object format {trigger:} → silently rejected; use update_task V1.
─────────────────────────────────────────────────────────────────────────────
check_v2_availabilityA
Check whether V2 API features are available (session token configured).

[Category: Utilities]  [Auth: none]
[Related: ticktick_guide]

Returns availability status and lists all V2-only feature categories.
build_recurrence_ruleA
Build an iCalendar RRULE string for recurring tasks or habits.

[Category: Utilities]  [Auth: none]
[Related: create_task, update_task, create_habit]

Args:
    frequency: "DAILY", "WEEKLY", "MONTHLY", or "YEARLY".
    interval: Repeat every N units (default 1).
    by_day: Weekday codes for WEEKLY, e.g. ["MO","WE","FR"].
    by_month_day: Day of month (1-31) for MONTHLY.
    by_month: Month number (1-12) for YEARLY.
    count: End after N occurrences.
    until: End date UTC: "20261231T000000Z".

Examples:
    Every day          → frequency="DAILY"
    Mon/Wed/Fri        → frequency="WEEKLY", by_day=["MO","WE","FR"]
    15th of each month → frequency="MONTHLY", by_month_day=15
    Every 2 weeks      → frequency="WEEKLY", interval=2
    3 times then stop  → frequency="DAILY", count=3

Returns {"rrule": "RRULE:FREQ=..."} — pass the rrule value as the
'recurrence' parameter in create_task/update_task.
build_reminderA
Convert minutes into an iCalendar TRIGGER string for reminders.

[Category: Utilities]  [Auth: none]
[Related: create_task, update_task]

Args:
    minutes_before: 0=at due time, 30=30min before, 60=1hr, 1440=1day, 2880=2days.

Usually you don't need this — use the reminder_minutes parameter in create_task
/ update_task directly. This tool is for inspection or manual trigger building.
list_projectsA
List all TickTick projects (lists).

[Category: Projects]  [Auth: V1]
[Related: get_project_detail, create_project, get_project_tasks, list_project_folders]

Returns: id, name, kind (TASK/NOTE), closed, color, sortOrder, groupId.
Use the returned 'id' as project_id in task tools.

⚠️  V1 limitation: groupId is ALWAYS null in V1 responses, even when a
folder assignment exists. Use full_sync() to see real groupId values.
get_project_detailA
Get full details of a single project.

[Category: Projects]  [Auth: V1]
[Related: list_projects, get_project_tasks, update_project]

Args:
    project_id: The project ID (from list_projects).
create_projectA
Create a new TickTick project (list).

[Category: Projects]  [Auth: V1 + V2 when group_id is provided]
[Related: list_projects, update_project, delete_project, list_project_folders]
[Workflow: Create project → manage_columns (for kanban) → create_task]

Args:
    name: Project name (required).
    color: Hex color, e.g. "#F18181".
    kind: "TASK" (default) or "NOTE".
    view_mode: "list", "kanban", or "timeline".
    group_id: Folder ID to file project in (from list_project_folders).

⚠️  group_id ALWAYS requires a V2 follow-up — handled automatically here:
    The V1 create endpoint silently ignores groupId in the payload (no error,
    no warning — it just doesn't persist). This tool works around it by:
    1. Creating the project via V1 to obtain the new project ID.
    2. Immediately calling V2 POST /batch/project to assign the groupId.
    The returned dict reflects groupId correctly. Verify with full_sync()
    if needed — V1 list_projects always shows groupId=null regardless.

⚠️  Never try to assign group_id via a raw V1 update — it silently fails.
    Always go through update_project(group_id=...) which also uses V2.
update_projectA
Update an existing project. Only provided fields are changed.

[Category: Projects]  [Auth: V1 / V2 when group_id is provided]
[Related: get_project_detail, create_project, delete_project, list_project_folders]

Args:
    project_id: The project to update.
    name: New name.
    color: Hex color.
    kind: "TASK" or "NOTE".
    view_mode: "list", "kanban", or "timeline".
    group_id: Move to a different folder (from list_project_folders).
    closed: True=archive, False=unarchive.

⚠️  group_id uses V2 internally (read-modify-write):
    The V1 update endpoint silently ignores groupId. When group_id is
    provided, this tool fetches the current project state first, then
    applies all changes via V2 POST /batch/project so no other fields
    (name, color, kind, …) are accidentally wiped.

⚠️  V1 responses always return groupId=null:
    After a successful folder assignment, V1 get_project_detail still
    shows groupId=null. Use full_sync() to verify the real value via V2.
delete_projectA
Permanently delete a project and ALL its tasks. ⚠️ IRREVERSIBLE.

[Category: Projects]  [Auth: V1]
[Related: list_projects, update_project]

Args:
    project_id: The project to delete.
get_inboxA
Return tasks from the TickTick Inbox.

[Category: Tasks — Read]  [Auth: V1]
[Related: get_project_tasks, get_all_tasks, create_task]

Args:
    include_completed: If True, include completed tasks (default: False).
get_project_tasksA
Return all tasks from a specific project, with kanban columns if available.

[Category: Tasks — Read]  [Auth: V1]
[Related: list_projects, get_task_detail, get_inbox, list_columns]

Args:
    project_id: The project ID (use list_projects to find it).
    include_completed: If True, include completed tasks (default: False).
get_task_detailA
Return full detail of a specific task: checklist, reminders, recurrence,
tags, dates, subtask info, focus summaries, and all metadata.

[Category: Tasks — Read]  [Auth: V1]
[Related: get_project_tasks, update_task, complete_task]

Args:
    project_id: The project containing the task.
    task_id: The task ID.
create_taskA
Create a new TickTick task.

[Category: Tasks — Write]  [Auth: V1]
[Related: update_task, complete_task, set_subtask_parent, build_recurrence_rule]
[Workflow: For subtasks → create_task then set_subtask_parent]

⚠️ SUBTASK TRAP — parentId is SILENTLY IGNORED by the V1 creation endpoint.
Passing parentId in the payload creates a standalone task with no error or warning.
ALWAYS use set_subtask_parent AFTER creation to establish the relationship.
Correct sequence: create_task (parent) → create_task / batch_create_tasks (children) → set_subtask_parent × N

Args:
    title: Task title (required).
    project_id: Target project ID. Omit → Inbox.
    content: Body / description (plain text or markdown).
    desc: Alt description field (used by some TickTick views).
    priority: 0=none, 1=low, 3=medium, 5=high (Eisenhower: 5=urgent+important).
    due_date: ISO 8601, e.g. "2026-03-10T09:00:00+0000".
    start_date: ISO 8601.
    time_zone: IANA timezone, e.g. "Europe/Paris". Recommended with dates.
    tags: Tag strings, e.g. ["work", "urgent"].
    checklist_items: Strings → each becomes a checklist item. Auto-sets kind=CHECKLIST.
    all_day: True for all-day (no specific time).
    kind: "TEXT", "NOTE", or "CHECKLIST". Auto-set if checklist_items given.
    reminder_minutes: Minutes before due to remind, e.g. [0, 30, 1440].
        0=at time, 30=30min before, 1440=1 day before.
    recurrence: RRULE string (use build_recurrence_rule to generate).
    column_id: Kanban column ID (for kanban-view projects).

Returns the created task with its assigned id.
update_taskA
Update any fields of an existing task. Only provided fields are changed
(read-modify-write under the hood — safe for partial updates).

[Category: Tasks — Write]  [Auth: V1]
[Related: get_task_detail, create_task, complete_task, reopen_task]

Args:
    task_id: The task to update.
    project_id: The project containing the task (required by API).
    title: New title.
    content: New body/description.
    desc: Alt description field.
    priority: 0=none, 1=low, 3=medium, 5=high.
    due_date: ISO 8601. Pass "" to clear.
    start_date: ISO 8601. Pass "" to clear.
    time_zone: IANA timezone.
    tags: Full replacement list. Pass [] to clear all tags.
    status: 0=active, 2=completed, -1=abandoned (V2).
    all_day: True/False.
    column_id: Move to a kanban column.
    reminder_minutes: List of minutes-before. Pass [] to clear reminders.
        ⚠️ V1/V2 GOTCHA — REMINDER ANCHOR REQUIRED:
        Tasks created via V2 batch may have dueDate invisible to V1 (returns null).
        V1 uses dueDate as the anchor to compute reminder trigger offsets (TRIGGER:-P2D).
        If due_date is null, reminder_minutes is silently ignored — no error, no reminder.
        FIX: ALWAYS pass due_date + time_zone explicitly alongside reminder_minutes,
        even if you are not changing the due date. Read the existing due date from
        get_task_detail() first, then pass it through. Example:
            update_task(task_id='...', project_id='...', due_date='2026-06-03T21:00:00+0000',
                        time_zone='Europe/Paris', reminder_minutes=[2880, 1440])
        Returns reminders: ['TRIGGER:-P2D', 'TRIGGER:-P1D'] when correctly anchored.
    recurrence: RRULE string (use build_recurrence_rule). Pass "" to clear.
    progress: 0-100 percentage (V2).
    sort_order: Custom sort order.
    kind: "TEXT", "NOTE", or "CHECKLIST".
complete_taskA
Mark a task as completed (status → 2). Uses V1 dedicated endpoint.

[Category: Tasks — Write]  [Auth: V1]
[Related: reopen_task, get_task_detail, get_completed_tasks]

Args:
    project_id: The project containing the task.
    task_id: The task to complete.
reopen_taskA
Reopen a completed task (status → 0).

[Category: Tasks — Write]  [Auth: V1]
[Related: complete_task, update_task]

Args:
    project_id: The project containing the task.
    task_id: The task to reopen.
delete_taskA
Permanently delete a task. ⚠️ IRREVERSIBLE.

[Category: Tasks — Write]  [Auth: V1]
[Related: complete_task, get_deleted_tasks]

Args:
    project_id: The project containing the task.
    task_id: The task to delete.
get_all_tasksA
Get ALL active tasks across all projects in one call via V2 sync.

[Category: Sync]  [Auth: V2]
[Related: full_sync, get_inbox, get_project_tasks]

Much faster than iterating projects one by one. Returns a flat list.
full_syncA
Full V2 sync — all projects, tasks, tags, folders in ONE call.

[Category: Sync]  [Auth: V2]
[Related: get_all_tasks, list_projects, list_tags, list_project_folders]

Returns: {inboxId, projects, tasks, tags, folders, task_count}.
Best for getting a complete overview of the account.
batch_create_tasksA
Create multiple tasks at once via V2 batch.

[Category: Tasks — Batch]  [Auth: V2]
[Related: create_task, batch_update_tasks, batch_delete_tasks]

⚠️ SUBTASK TRAP — parentId in the task dict is SILENTLY IGNORED here too (V2 batch).
Do NOT pass parentId expecting subtask relationships to be created automatically.
ALWAYS call set_subtask_parent for each child AFTER this call.

Args:
    tasks: List of task dicts. Each needs at least {"title": "..."}.
        Optional: projectId, content, priority, dueDate, startDate,
        timeZone, tags, allDay, kind, items, columnId.
        ⚠️ Do NOT include parentId — use set_subtask_parent instead.

Returns: {id2etag: {id: etag}, id2error: {id: error}} — check id2error for failures.
batch_update_tasksA
Update multiple tasks at once via V2 batch.

[Category: Tasks — Batch]  [Auth: V2]
[Related: update_task, batch_create_tasks, batch_delete_tasks]

Args:
    tasks: List of task dicts. Each MUST include "id" and "projectId"
        plus fields to change. ⚠️ No read-modify-write — provide full field values.

⚠️ REMINDER RELIABILITY — DO NOT USE THIS TOOL FOR REMINDER UPDATES:
batch_update_tasks() uses the V2 batch endpoint which cannot reliably set reminders
on existing tasks, for two compounding reasons:
  1. V2-created tasks may have dueDate invisible to V1 (null), breaking reminder anchoring.
  2. Reminder object format {"trigger": "TRIGGER:-P2DT0H0M0S"} is silently rejected by the
     V2 batch endpoint — no error returned, but reminders are never saved.
PREFERRED PATTERN: use update_task() (V1) with explicit due_date + time_zone + reminder_minutes.
See the "Add/update reminders" workflow in ticktick_guide(show_workflows=True).

Returns: {id2etag, id2error}.
batch_delete_tasksA
Delete multiple tasks at once via V2 batch.

[Category: Tasks — Batch]  [Auth: V2]
[Related: delete_task, batch_create_tasks]

Args:
    tasks: List of {"taskId": "...", "projectId": "..."}.
move_tasksA
Move tasks between projects via V2 batch.

[Category: Tasks — Batch]  [Auth: V2]
[Related: batch_update_tasks, list_projects, set_subtask_parent]

⚠️ ORPHAN TRAP — The V2 API moves tasks individually, never cascading to children.
Moving a parent task leaves its subtasks stranded in the old project.
The parent-child relationship (parentId/childIds) is preserved in the metadata,
but TickTick won't display subtasks correctly if they're in a different project.

This tool automatically detects and cascades to children:
For each unique source project, it fetches the full project data once via
/project/{id}/data (which correctly returns childIds, unlike /project/{id}/task/{id}).
A {task_id: childIds} index is built per source project — O(1) API calls per project,
not per task. Children are appended to the move batch automatically (same destination).
The returned dict includes `cascaded_children` listing any auto-added child moves.

Args:
    moves: List of {"taskId": "...", "fromProjectId": "...", "toProjectId": "..."}.
        Only provide parent tasks — children are fetched and moved automatically.
set_subtask_parentA
Set or unset a task's parent (subtask relationship).

[Category: Tasks — Batch]  [Auth: V2]
[Related: create_task, get_task_detail]
[Workflow: create_task → set_subtask_parent (TickTick ignores parentId on creation)]

Args:
    task_id: The child task ID.
    project_id: The project both tasks belong to.
    parent_id: New parent task ID (to make subtask). Provide THIS to SET.
    old_parent_id: Previous parent ID (to remove). Provide THIS to UNSET.
        ⚠️ Provide EITHER parent_id OR old_parent_id, not both.
get_completed_tasksA
Get completed or abandoned tasks within a date range.

[Category: Completed & Trash]  [Auth: V2]
[Related: complete_task, get_deleted_tasks, get_productivity_stats]

Args:
    from_date: "yyyy-MM-dd HH:mm:ss", e.g. "2026-01-01 00:00:00".
    to_date: "yyyy-MM-dd HH:mm:ss", e.g. "2026-12-31 23:59:59".
    status: "Completed" or "Abandoned" (default: "Completed").
    limit: Max results (default 100).
get_deleted_tasksA
Get deleted tasks from the trash.

[Category: Completed & Trash]  [Auth: V2]
[Related: delete_task, get_completed_tasks]

Args:
    start: Pagination offset (default 0).
    limit: Max results (default 50).
list_project_foldersA
List all project folders (groups).

[Category: Folders]  [Auth: V2]
[Related: manage_project_folders, create_project, list_projects]

Returns: id, name, sortOrder. Use folder IDs as group_id in create/update_project.
manage_project_foldersA
Create, update, or delete project folders in batch.

[Category: Folders]  [Auth: V2]
[Related: list_project_folders, create_project]

Args:
    add: New folders: [{"name": "Work"}, {"name": "Personal"}].
    update: Updates: [{"id": "...", "name": "New Name"}].
    delete: Folder IDs to delete: ["id1", "id2"].
list_columnsA
List kanban columns for a project.

[Category: Kanban Columns]  [Auth: V2]
[Related: manage_columns, get_project_tasks, create_task]

Args:
    project_id: The project with kanban view mode.
manage_columnsA
Create, update, or delete kanban columns in batch.

[Category: Kanban Columns]  [Auth: V2]
[Related: list_columns, create_task, update_task]
[Workflow: Create kanban project → manage_columns → create_task with column_id]

Args:
    project_id: The project these columns belong to.
    add: New columns: [{"name": "To Do", "sortOrder": 0}, {"name": "In Progress", "sortOrder": 1}].
        projectId is auto-filled.
    update: Column updates: [{"id": "...", "name": "New Name"}].
    delete: Column IDs to delete.
list_tagsA
List all tags.

[Category: Tags]  [Auth: V2]
[Related: create_tag, update_tag, rename_tag, merge_tags, delete_tag]

Returns: name (internal key, lowercase), label (display), color, parent, sortOrder.
Use tag names in create_task/update_task tags parameter.
create_tagA
Create a new tag.

[Category: Tags]  [Auth: V2]
[Related: list_tags, update_tag, rename_tag, delete_tag]

Args:
    name: Tag name/label.
    color: Hex color, e.g. "#FF6B6B".
    parent: Parent tag name (for nested/hierarchical tags).
    sort_type: "project", "dueDate", "title", or "priority".
update_tagA
Update an existing tag's properties.

[Category: Tags]  [Auth: V2]
[Related: list_tags, create_tag, rename_tag]

Args:
    name: The tag's internal name (from list_tags).
    color: New hex color.
    parent: New parent tag. Pass "" to remove parent.
    sort_type: "project", "dueDate", "title", or "priority".
    sort_order: Numeric sort order.
rename_tagB
Rename a tag. All tasks using it are updated automatically.

[Category: Tags]  [Auth: V2]
[Related: list_tags, merge_tags]

Args:
    old_name: Current tag name.
    new_name: New tag name.
merge_tagsA
Merge one tag into another. Tasks with source get target instead; source is deleted.

[Category: Tags]  [Auth: V2]
[Related: list_tags, rename_tag, delete_tag]

Args:
    source_name: Tag to merge FROM (will be deleted).
    target_name: Tag to merge INTO (will remain).
delete_tagB
Delete a tag. Removes it from all tasks.

[Category: Tags]  [Auth: V2]
[Related: list_tags, merge_tags]

Args:
    tag_name: The tag name to delete.
list_habitsA
List all habits with stats (streaks, total check-ins, etc.).

[Category: Habits]  [Auth: V2]
[Related: create_habit, update_habit, habit_checkin, get_habit_records, list_habit_sections]

Returns: id, name, status, type (Boolean/Real), goal, step, unit, color,
         totalCheckIns, currentStreak, maxStreak, repeatRule, sectionId, etc.
list_habit_sectionsA
List habit sections (e.g., Morning, Afternoon, Evening).

[Category: Habits]  [Auth: V2]
[Related: list_habits, create_habit]

Use section IDs in create_habit/update_habit to organize habits by time of day.
create_habitA
Create a new habit.

[Category: Habits]  [Auth: V2]
[Related: list_habits, update_habit, habit_checkin, build_recurrence_rule]
[Workflow: create_habit → habit_checkin daily → get_habit_records to review]

Args:
    name: Habit name (required).
    habit_type: "Boolean" (done/not done) or "Real" (measurable, needs goal).
    goal: Target value for Real habits (e.g., 2.0 for "2L water").
    step: Increment step for Real (e.g., 0.25 for quarter-liter).
    unit: Measurement unit for Real (e.g., "L", "pages", "min").
    color: Hex color, e.g. "#4DB6AC".
    icon: Icon resource name.
    section_id: Section ID (from list_habit_sections) for time-of-day grouping.
    repeat_rule: RRULE string (use build_recurrence_rule). Default = daily.
    reminders: Time strings, e.g. ["08:00", "20:00"].
    encouragement: Message shown on completion.
    target_days: Target days for the habit goal cycle.
    start_date: "yyyy-MM-dd".

Examples:
    Boolean: create_habit(name="Meditate", color="#7E57C2")
    Real:    create_habit(name="Read", habit_type="Real", goal=30, step=5, unit="pages")
update_habitA
Update an existing habit. Only provided fields are changed
(read-modify-write under the hood — safe for partial updates).

[Category: Habits]  [Auth: V2]
[Related: list_habits, create_habit, delete_habit]

Args:
    habit_id: The habit ID to update.
    name: New name.
    goal: New target value (Real habits).
    step: New increment step.
    unit: New measurement unit.
    color: New hex color.
    status: 0=active, 2=archived.
    section_id: Move to a different section.
    repeat_rule: New RRULE (use build_recurrence_rule).
    reminders: New reminder times list, e.g. ["08:00", "20:00"].
               Pass [] to clear all reminders.
    encouragement: New completion message.
    target_days: New target days.

⚠️  CRITICAL — V2 /habits/batch is a FULL REPLACEMENT, not a PATCH:
    Sending only {"id": ..., "reminders": [...]} will wipe name, color,
    status and every other field to null/default. This tool prevents that
    by fetching the current habit state first, then merging your changes
    before sending the complete object. Never call client.batch_habits
    with a partial habit dict directly.

Common uses:
    Archive:        update_habit(habit_id="...", status=2)
    Rename:         update_habit(habit_id="...", name="New Name")
    Add reminders:  update_habit(habit_id="...", reminders=["08:00", "20:00"])
    Clear reminders: update_habit(habit_id="...", reminders=[])
delete_habitA
Delete a habit permanently.

[Category: Habits]  [Auth: V2]
[Related: list_habits, update_habit]

Args:
    habit_id: The habit ID to delete.
habit_checkinA
Record a habit check-in (mark as done for a specific day).

[Category: Habits]  [Auth: V2]
[Related: list_habits, get_habit_records, create_habit]

Args:
    habit_id: The habit ID.
    checkin_stamp: Date as YYYYMMDD integer, e.g. 20260306 for today.
    value: Value for Real habits (e.g., 1.5 for "1.5 liters"). Omit for Boolean.
    status: 0=unchecked, 2=completed (default: 2).
    checkin_time: ISO datetime for exact time (optional).
get_habit_recordsB
Get check-in records for one or more habits.

[Category: Habits]  [Auth: V2]
[Related: list_habits, habit_checkin]

Args:
    habit_ids: List of habit IDs to query.
    after_stamp: Only return check-ins after this date (YYYYMMDD, e.g. 20260101).
        Use 0 for all history.

Returns: {"checkins": {"habitId": [record, ...]}}
get_focus_statsA
Get focus/pomodoro statistics for a date range.

[Category: Focus / Pomodoro]  [Auth: V2]
[Related: get_productivity_stats]

Args:
    from_date: Start date YYYYMMDD, e.g. "20260101".
    to_date: End date YYYYMMDD, e.g. "20260306".
    stat_type: "heatmap" (daily durations) or "distribution" (per-tag breakdown).

Returns:
    heatmap: List of {date, duration} entries.
    distribution: {"tagDurations": {"tag_name": seconds, ...}}
get_user_statusA
Get account status — inbox ID, Pro subscription, team membership.

[Category: User & Stats]  [Auth: V2]
[Related: get_productivity_stats, full_sync]

Returns: userId, username, inboxId, pro, proStartDate, proEndDate, teamUser, etc.
get_productivity_statsA
Get productivity statistics — score, level, streaks, completion counts.

[Category: User & Stats]  [Auth: V2]
[Related: get_user_status, get_completed_tasks, get_focus_stats]

Returns: score, level, completedToday, completedYesterday, completedThisWeek,
         completedThisMonth, currentStreak, maxStreak.
workspace_mapB
Return a navigable map of folders and projects, optionally with active task counts.

[Category: Query & Search]  [Auth: V1 + V2 when include_counts=True]
[Related: list_projects, list_project_folders, full_sync, query_projects]
query_projectsC
Search/filter projects with folder-aware metadata.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: workspace_map, list_projects, list_project_folders, query_folders]
Multi-value filters accept either a list or a single string.
query_foldersB
Search/filter project folders with optional project counts.

[Category: Query & Search]  [Auth: V1 + V2 when include_project_counts=True]
[Related: workspace_map, list_project_folders, query_projects]
query_tasksB
Query active tasks with fine-grained filters, date/hour ranges, and grep-like matching.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_notes, query_agenda, get_all_tasks, get_project_tasks]
Multi-value filters accept either a list or a single string.
query_notesB
Query notes with folder/project scope and grep-like content search.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_tasks, workspace_map, get_project_tasks]
Multi-value filters accept either a list or a single string.
query_agendaC
Query scheduled items inside a date/time window.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_tasks, get_all_tasks, get_project_tasks]
Multi-value filters accept either a list or a single string.
tasks_of_todayA
Return active tasks scheduled for a given local day.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_agenda, events_of_today, overdue_tasks]
Multi-value filters accept either a list or a single string.
events_of_todayA
Return timed scheduled items for a given local day.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: tasks_of_today, query_agenda]
Multi-value filters accept either a list or a single string.
week_overviewB
Return a planning-oriented overview split into events, due tasks, and overdue tasks.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: week_agenda, upcoming_tasks, overdue_tasks]
Multi-value filters accept either a list or a single string.
week_agendaC
Return scheduled items for a local multi-day window (default: 7 days).

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_agenda, tasks_of_today, events_of_today]
Multi-value filters accept either a list or a single string.
upcoming_tasksB
Return active tasks due within a local upcoming window.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_tasks, week_agenda, overdue_tasks]
Multi-value filters accept either a list or a single string.
overdue_tasksB
Return active tasks whose due date is already in the past.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: tasks_of_today, query_tasks, stale_tasks]
Multi-value filters accept either a list or a single string.
stale_tasksA
Return active tasks that have not been modified recently.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_tasks, overdue_tasks]
Multi-value filters accept either a list or a single string.
priority_dashboardB
Summarize active tasks by priority with top items per bucket.

[Category: Query & Search]  [Auth: V1 + V2]
[Related: query_tasks, tasks_of_today, overdue_tasks]
Multi-value filters accept either a list or a single string.
list_query_presetsA
List saved reusable query presets.

[Category: Query & Search]  [Auth: none]
[Related: save_query_preset, run_query_preset, delete_query_preset]
save_query_presetB
Save a reusable query preset.

[Category: Query & Search]  [Auth: none]
[Related: list_query_presets, run_query_preset, delete_query_preset]
run_query_presetC
Execute a saved query preset.

[Category: Query & Search]  [Auth: depends on preset query type]
[Related: list_query_presets, save_query_preset, delete_query_preset]
delete_query_presetB
Delete a saved query preset.

[Category: Query & Search]  [Auth: none]
[Related: list_query_presets, save_query_preset, run_query_preset]
query_task_historyC
Query completed, abandoned, or deleted task history with the same fine filters.

[Category: Query & Search]  [Auth: V2]
[Related: get_completed_tasks, get_deleted_tasks, query_tasks]
Multi-value filters accept either a list or a single string.
create_subtaskA
Create a child task and verify the parent-child relationship afterwards.

[Category: Verified Actions]  [Auth: V1 + V2]
[Related: create_task, set_subtask_parent, verified_set_subtask_parent]
verified_create_projectA
Create a project, then verify that it exists and that folder assignment persisted if requested.

[Category: Verified Actions]  [Auth: V1 + V2 when group_id is provided]
[Related: create_project, verified_assign_project_folder]
verified_set_subtask_parentC
Set or unset a parent relationship, then verify the resulting structure.

[Category: Verified Actions]  [Auth: V2]
[Related: set_subtask_parent, create_subtask]
verified_move_tasksB
Move tasks, then verify that each moved task is present in the destination project.

[Category: Verified Actions]  [Auth: V2]
[Related: move_tasks, set_subtask_parent]
verified_batch_moveC
Verified batch move wrapper with rollback hints if verification fails.

[Category: Verified Actions]  [Auth: V2]
[Related: verified_move_tasks, move_tasks]
verified_assign_project_folderB
Assign a project to a folder and verify the persisted groupId through V2 sync.

[Category: Verified Actions]  [Auth: V1 + V2]
[Related: update_project, list_project_folders, full_sync]

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KpihX/tick-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server