Skip to content

Clockify MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.4.3 · published by io.usefulapi

Track time in Clockify: time entries, projects, clients, tags and reports; start, stop and log time.

Deletes · 3Final · 2Changes · 5

21 tools: 3 can delete or cancel things, 2 do something that can't be undone, 5 change things and 11 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http clockify https://clockify.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "clockify_summary_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "clockify_detailed_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

21 tools

Deletes or cancels 3Claude Code: deny
  • clockify_delete_time_entryWRITE (destructive): permanently delete one time entry.No findings

    Why it is in this group

    • The name "clockify_delete_time_entry" says "delete": a word for removing or ending something.
    • The description says "permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE (destructive): permanently delete one time entry. It cannot be undone. DELETE /v1/workspaces/{workspaceId}/time-entries/{id}.

    Annotations the server declares

    • title: Delete a time entry
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • clockify_stop_timerWRITE: stop the running timer of a user (default: you) at end (default now).No findings

    Why it is in this group

    • The name "clockify_stop_timer" says "stop": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: stop the running timer of a user (default: you) at end (default now). Clockify answers 404 if no timer is running. PATCH /v1/workspaces/{workspaceId}/user/{userId}/time-entries.

    Annotations the server declares

    • title: Stop running timer
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • clockify_update_time_entryWRITE: change a time entry's start, end, description, project, task, tags or billable.No findings

    Why it is in this group

    • The name "clockify_update_time_entry" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: change a time entry's start, end, description, project, task, tags or billable. Only the fields you pass change: the entry is read first and every other field (custom fields included) is sent back as it was. The entry is rewritten (PUT) from a fresh read, so an edit made to the same entry in between (e.g. in the Clockify app) can be lost. A new project without task_id clears the task. GET then PUT /v1/workspaces/{workspaceId}/time-entries/{id}.

    Annotations the server declares

    • title: Update a time entry
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Can't be undone 2Claude Code: ask
  • clockify_detailed_reportEvery time entry in a date range across the workspace (user, project, client, task, tags, description, start/end, duration in seconds, amount), with totals; newest first, paged.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "clockify_detailed_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Every time entry in a date range across the workspace (user, project, client, task, tags, description, start/end, duration in seconds, amount), with totals; newest first, paged. POST reports /v1/workspaces/{workspaceId}/reports/detailed.

    Annotations the server declares

    • title: Detailed report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_summary_reportTotals of tracked time (seconds) and amounts for a date range across the workspace, grouped by up to 3 levels (default project → time entry), e.g.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "clockify_summary_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Totals of tracked time (seconds) and amounts for a date range across the workspace, grouped by up to 3 levels (default project → time entry), e.g. hours per user per project last month. Respects the filters. POST reports /v1/workspaces/{workspaceId}/reports/summary.

    Annotations the server declares

    • title: Summary report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Changes things 5Claude Code: ask
  • clockify_create_clientWRITE: add a client to a workspace.No findings

    Why it is in this group

    • The name "clockify_create_client" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: add a client to a workspace. POST /v1/workspaces/{workspaceId}/clients.

    Annotations the server declares

    • title: Create a client
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • clockify_create_projectWRITE: create a project in a workspace (needs an admin or project-manager role, depending on workspace settings).No findings

    Why it is in this group

    • The name "clockify_create_project" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: create a project in a workspace (needs an admin or project-manager role, depending on workspace settings). POST /v1/workspaces/{workspaceId}/projects.

    Annotations the server declares

    • title: Create a project
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • clockify_create_tagWRITE: add a tag to a workspace.No findings

    Why it is in this group

    • The name "clockify_create_tag" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: add a tag to a workspace. POST /v1/workspaces/{workspaceId}/tags.

    Annotations the server declares

    • title: Create a tag
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • clockify_create_taskWRITE: add a task to a project.No findings

    Why it is in this group

    • The name "clockify_create_task" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: add a task to a project. POST /v1/workspaces/{workspaceId}/projects/{projectId}/tasks.

    Annotations the server declares

    • title: Create a task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • clockify_create_time_entryWRITE: add a time entry for yourself.No findings

    Why it is in this group

    • The name "clockify_create_time_entry" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: add a time entry for yourself. With end = a finished entry (log time); without end = a running timer that starts at start (default now). A workspace with required custom fields may refuse it. POST /v1/workspaces/{workspaceId}/time-entries.

    Annotations the server declares

    • title: Log time or start a timer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 11Claude Code: allow
  • clockify_get_current_userThe Clockify user this API key belongs to: id, name, email, status, active and default workspace ids, and profile settings (time zone, week start, date/time format).No findings

    Why it is in this group

    • The name "clockify_get_current_user" says "get": a word for reading.
    Description, as the server wrote it
    The Clockify user this API key belongs to: id, name, email, status, active and default workspace ids, and profile settings (time zone, week start, date/time format). GET /v1/user.

    Annotations the server declares

    • title: Get current user
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_get_projectOne project by id: name, client, billable, color, note, estimate, duration tracked, rates and memberships.No findings

    Why it is in this group

    • The name "clockify_get_project" says "get": a word for reading.
    Description, as the server wrote it
    One project by id: name, client, billable, color, note, estimate, duration tracked, rates and memberships. GET /v1/workspaces/{workspaceId}/projects/{projectId}.

    Annotations the server declares

    • title: Get a project
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_get_running_timerThe timer that is running right now for a user (default: you), or running: false.No findings

    Why it is in this group

    • The name "clockify_get_running_timer" says "get": a word for reading.
    Description, as the server wrote it
    The timer that is running right now for a user (default: you), or running: false. GET /v1/workspaces/{workspaceId}/user/{userId}/time-entries?in-progress=true.

    Annotations the server declares

    • title: Get running timer
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_get_time_entryOne time entry by id: description, project, task, tags, billable, rates, custom fields and timeInterval.No findings

    Why it is in this group

    • The name "clockify_get_time_entry" says "get": a word for reading.
    Description, as the server wrote it
    One time entry by id: description, project, task, tags, billable, rates, custom fields and timeInterval. GET /v1/workspaces/{workspaceId}/time-entries/{id}.

    Annotations the server declares

    • title: Get a time entry
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_clientsList the clients of a workspace (id, name, email, address, currency, archived).No findings

    Why it is in this group

    • The name "clockify_list_clients" says "list": a word for reading.
    Description, as the server wrote it
    List the clients of a workspace (id, name, email, address, currency, archived). GET /v1/workspaces/{workspaceId}/clients.

    Annotations the server declares

    • title: List clients
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_projectsList the projects of a workspace: id, name, client, billable, public, color, archived, duration tracked, estimate and rates.No findings

    Why it is in this group

    • The name "clockify_list_projects" says "list": a word for reading.
    Description, as the server wrote it
    List the projects of a workspace: id, name, client, billable, public, color, archived, duration tracked, estimate and rates. Filter by name, client, user, billable or archived. GET /v1/workspaces/{workspaceId}/projects.

    Annotations the server declares

    • title: List projects
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_tagsList the tags of a workspace (id, name, archived).No findings

    Why it is in this group

    • The name "clockify_list_tags" says "list": a word for reading.
    Description, as the server wrote it
    List the tags of a workspace (id, name, archived). GET /v1/workspaces/{workspaceId}/tags.

    Annotations the server declares

    • title: List tags
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_tasksList the tasks of a project (id, name, status, assignees, estimate, duration tracked).No findings

    Why it is in this group

    • The name "clockify_list_tasks" says "list": a word for reading.
    Description, as the server wrote it
    List the tasks of a project (id, name, status, assignees, estimate, duration tracked). GET /v1/workspaces/{workspaceId}/projects/{projectId}/tasks.

    Annotations the server declares

    • title: List project tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_time_entriesList the time entries of one user (default: you), newest first: id, description, project, task, tags, billable and timeInterval (start, end, ISO 8601 duration).No findings

    Why it is in this group

    • The name "clockify_list_time_entries" says "list": a word for reading.
    Description, as the server wrote it
    List the time entries of one user (default: you), newest first: id, description, project, task, tags, billable and timeInterval (start, end, ISO 8601 duration). Filter by time range, project, task, tags or description. For totals across users use clockify_summary_report. GET /v1/workspaces/{workspaceId}/user/{userId}/time-entries.

    Annotations the server declares

    • title: List time entries
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_usersList the members of a workspace: id, name, email, status and settings.No findings

    Why it is in this group

    • The name "clockify_list_users" says "list": a word for reading.
    Description, as the server wrote it
    List the members of a workspace: id, name, email, status and settings. Filter by name, email, status or project access. GET /v1/workspaces/{workspaceId}/users.

    Annotations the server declares

    • title: List workspace users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • clockify_list_workspacesList the Clockify workspaces you belong to: id, name, plan (featureSubscriptionType), subdomain, currencies and default hourly/cost rate.No findings

    Why it is in this group

    • The name "clockify_list_workspaces" says "list": a word for reading.
    Description, as the server wrote it
    List the Clockify workspaces you belong to: id, name, plan (featureSubscriptionType), subdomain, currencies and default hourly/cost rate. Use the id as workspace_id in other tools. GET /v1/workspaces.

    Annotations the server declares

    • title: List workspaces
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.4.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http clockify https://clockify.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__clockify__clockify_get_current_user",
      "mcp__clockify__clockify_list_workspaces",
      "mcp__clockify__clockify_list_users",
      "mcp__clockify__clockify_list_clients",
      "mcp__clockify__clockify_list_projects",
      "mcp__clockify__clockify_get_project",
      "mcp__clockify__clockify_list_tasks",
      "mcp__clockify__clockify_list_tags",
      "mcp__clockify__clockify_list_time_entries",
      "mcp__clockify__clockify_get_time_entry",
      "mcp__clockify__clockify_get_running_timer"
    ],
    "ask": [
      "mcp__clockify__clockify_summary_report",
      "mcp__clockify__clockify_detailed_report",
      "mcp__clockify__clockify_create_time_entry",
      "mcp__clockify__clockify_create_project",
      "mcp__clockify__clockify_create_task",
      "mcp__clockify__clockify_create_client",
      "mcp__clockify__clockify_create_tag"
    ],
    "deny": [
      "mcp__clockify__clockify_stop_timer",
      "mcp__clockify__clockify_update_time_entry",
      "mcp__clockify__clockify_delete_time_entry"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as clockify. Review it before you use it.