# Clockify MCP by usefulapi (remote · clockify.usefulapi.io)

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

- Trust score: 66/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `clockify.usefulapi.io`: 66/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-clockify/clockify.md), [page](https://verifymcp.io/servers/io-usefulapi-clockify/clockify)

## Channel facts

- Endpoint: `https://clockify.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3565 tokens (~169/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Clockify MCP by usefulapi server?

Clockify MCP by usefulapi is a hosted endpoint at https://clockify.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

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

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-clockify": {
      "url": "https://clockify.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-clockify": {
      "type": "http",
      "url": "https://clockify.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-clockify]
url = "https://clockify.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-clockify": {
      "type": "remote",
      "url": "https://clockify.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-clockify --url 'https://clockify.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-clockify:
    url: "https://clockify.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-clockify": {
      "Transport": "http",
      "Url": "https://clockify.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-clockify -t streamable-http -u 'https://clockify.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-clockify": {
      "type": "http",
      "url": "https://clockify.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-16 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 64, +3)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.1.0 → 1.2.0

### 2026-10-12 (score 61, +1)

- [functional improvement] Stability: unverified → 0.07

### 2026-10-10 (score 60)

First indexed and scored.

## MCP tools (21)

### `clockify_get_current_user` (~55 tokens)

Get current user

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.

### `clockify_list_workspaces` (~76 tokens)

List workspaces

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.

Input parameters:

- `roles` (array): Only workspaces where you have one of these roles.

### `clockify_list_users` (~171 tokens)

List workspace users

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.

Input parameters:

- `email` (string): Only users whose email contains this text.
- `name` (string): Only users whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `project_id` (string): Only users with access to this project.
- `status` (string): Membership status filter.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_list_clients` (~145 tokens)

List clients

List the clients of a workspace (id, name, email, address, currency, archived). GET /v1/workspaces/{workspaceId}/clients.

Input parameters:

- `archived` (boolean): true = only archived clients, false = only active ones. Default: both.
- `name` (string): Only clients whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_list_projects` (~235 tokens)

List projects

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.

Input parameters:

- `archived` (boolean): true = only archived projects. Default: archived and active.
- `billable` (boolean): true = only billable projects. Default: all.
- `client_ids` (array): Only these clients (ids).
- `hydrated` (boolean): true = include more detail (custom fields, memberships, estimates).
- `name` (string): Only projects whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `user_ids` (array): Only these users (projects these users are members of) (ids).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_get_project` (~106 tokens)

Get a project

One project by id: name, client, billable, color, note, estimate, duration tracked, rates and memberships. GET /v1/workspaces/{workspaceId}/projects/{projectId}.

Input parameters:

- `hydrated` (boolean): true = include more detail (custom fields, estimates).
- `project_id` (string, required): Project id (from clockify_list_projects).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_list_tasks` (~170 tokens)

List project tasks

List the tasks of a project (id, name, status, assignees, estimate, duration tracked). GET /v1/workspaces/{workspaceId}/projects/{projectId}/tasks.

Input parameters:

- `is_active` (boolean): true = only active tasks, false = only done tasks. Default: both.
- `name` (string): Only tasks whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `project_id` (string, required): Project id (from clockify_list_projects).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_list_tags` (~139 tokens)

List tags

List the tags of a workspace (id, name, archived). GET /v1/workspaces/{workspaceId}/tags.

Input parameters:

- `archived` (boolean): true = only archived tags, false = only active ones. Default: both.
- `name` (string): Only tags whose name contains this text.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_list_time_entries` (~311 tokens)

List time entries

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.

Input parameters:

- `description` (string): Only entries whose description contains this text.
- `end` (string): Only entries starting before this time (ISO 8601 with a timezone).
- `hydrated` (boolean): true = embed the project, task and tag objects instead of ids only.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `project_id` (string): Only entries on this project.
- `start` (string): Only entries starting at or after this time (ISO 8601 with a timezone).
- `tag_ids` (array): Only these tags (ids).
- `task_id` (string): Only entries on this task.
- `user_id` (string): User id (from clockify_list_users). Default: you. Other users' entries need an admin or manager role.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_get_time_entry` (~111 tokens)

Get a time entry

One time entry by id: description, project, task, tags, billable, rates, custom fields and timeInterval. GET /v1/workspaces/{workspaceId}/time-entries/{id}.

Input parameters:

- `hydrated` (boolean): true = embed the project, task and tag objects.
- `time_entry_id` (string, required): Time entry id (from clockify_list_time_entries).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_get_running_timer` (~91 tokens)

Get running timer

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.

Input parameters:

- `user_id` (string): User id. Default: you.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_summary_report` (~296 tokens)

Summary report

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.

Input parameters:

- `billable` (boolean): true = only billable time, false = only non-billable. Default: both.
- `client_ids` (array): Only these clients (ids).
- `description` (string): Only entries whose description contains this text.
- `from` (string, required): First day of the report, yyyy-mm-dd (inclusive). On Clockify's FREE plan a report spans at most 31 days.
- `group_by` (array): Grouping levels, outermost first (default [PROJECT, TIMEENTRY]).
- `project_ids` (array): Only these projects (ids).
- `tag_ids` (array): Only these tags (ids).
- `time_zone` (string): IANA time zone the dates are read in, e.g. Europe/Berlin. Default: your Clockify profile's time zone.
- `to` (string, required): Last day of the report, yyyy-mm-dd (inclusive).
- `user_ids` (array): Only these users (ids).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_detailed_report` (~313 tokens)

Detailed report

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.

Input parameters:

- `billable` (boolean): true = only billable time, false = only non-billable. Default: both.
- `client_ids` (array): Only these clients (ids).
- `description` (string): Only entries whose description contains this text.
- `from` (string, required): First day of the report, yyyy-mm-dd (inclusive). On Clockify's FREE plan a report spans at most 31 days.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-200 (default 50).
- `project_ids` (array): Only these projects (ids).
- `tag_ids` (array): Only these tags (ids).
- `time_zone` (string): IANA time zone the dates are read in, e.g. Europe/Berlin. Default: your Clockify profile's time zone.
- `to` (string, required): Last day of the report, yyyy-mm-dd (inclusive).
- `user_ids` (array): Only these users (ids).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_create_time_entry` (~235 tokens)

Log time or start a timer

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.

Input parameters:

- `billable` (boolean): Billable. Default: the project's billable setting (read from the project), else not billable.
- `description` (string): What the time was spent on.
- `end` (string): End time. Omit to start a running timer.
- `project_id` (string): Project id (from clockify_list_projects).
- `start` (string): Start time, ISO 8601 with a timezone. Default: now.
- `tag_ids` (array): Tag ids (from clockify_list_tags).
- `task_id` (string): Task id on that project (from clockify_list_tasks).
- `type` (string): REGULAR (default) or BREAK.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_stop_timer` (~128 tokens)

Stop running timer

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.

Input parameters:

- `end` (string): Stop time, ISO 8601 with a timezone. Default: now.
- `user_id` (string): User id. Default: you. Stopping someone else's timer needs an admin role.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_update_time_entry` (~256 tokens)

Update a time entry

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}.

Input parameters:

- `billable` (boolean): New billable flag.
- `description` (string): New description.
- `end` (string): New end time (also stops a running timer).
- `project_id` (string): New project id.
- `start` (string): New start time.
- `tag_ids` (array): New tag ids (replaces the tags; [] removes them all).
- `task_id` (string): New task id (on the entry's project).
- `time_entry_id` (string, required): Time entry id.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_delete_time_entry` (~80 tokens)

Delete a time entry

WRITE (destructive): permanently delete one time entry. It cannot be undone. DELETE /v1/workspaces/{workspaceId}/time-entries/{id}.

Input parameters:

- `time_entry_id` (string, required): Time entry id to delete.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_create_project` (~164 tokens)

Create a project

WRITE: create a project in a workspace (needs an admin or project-manager role, depending on workspace settings). POST /v1/workspaces/{workspaceId}/projects.

Input parameters:

- `billable` (boolean): Billable by default.
- `client_id` (string): Client id (from clockify_list_clients).
- `color` (string): Color, #RRGGBB.
- `is_public` (boolean): Visible to the whole workspace. Default false: the project is private (visible to its members only).
- `name` (string, required): Project name, 2-250 characters (unique per client).
- `note` (string): Project note.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_create_task` (~113 tokens)

Create a task

WRITE: add a task to a project. POST /v1/workspaces/{workspaceId}/projects/{projectId}/tasks.

Input parameters:

- `assignee_ids` (array): User ids to assign.
- `estimate` (string): Time estimate, ISO 8601 duration such as PT1H30M.
- `name` (string, required): Task name.
- `project_id` (string, required): Project id.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_create_client` (~94 tokens)

Create a client

WRITE: add a client to a workspace. POST /v1/workspaces/{workspaceId}/clients.

Input parameters:

- `address` (string): Client address.
- `email` (string): Client email.
- `name` (string, required): Client name (unique in the workspace).
- `note` (string): Note.
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

### `clockify_create_tag` (~68 tokens)

Create a tag

WRITE: add a tag to a workspace. POST /v1/workspaces/{workspaceId}/tags.

Input parameters:

- `name` (string, required): Tag name (unique in the workspace).
- `workspace_id` (string): Workspace id (from clockify_list_workspaces). Default: your active workspace.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-clockify/clockify#diagnostics

## Score history

- 2026-10-18: 66
- 2026-10-17: 65
- 2026-10-16: 65
- 2026-10-15: 64
- 2026-10-14: 64
- 2026-10-13: 61
- 2026-10-12: 61
- 2026-10-10: 60

## Common questions

### What is the Clockify MCP by usefulapi server?

Clockify MCP by usefulapi is listed in the public MCP registry as io.usefulapi/clockify. Track time in Clockify: time entries, projects, clients, tags and reports; start, stop and log time. This page covers its hosted endpoint (https://clockify.usefulapi.io/mcp).

### Is the Clockify MCP by usefulapi server safe to use?

Clockify MCP by usefulapi scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Clockify MCP by usefulapi server expose?

Clockify MCP by usefulapi exposes 21 tools: clockify_get_current_user, clockify_list_workspaces, clockify_list_users, clockify_list_clients, clockify_list_projects, and 16 more. Their descriptions and schemas cost roughly 3,357 tokens of context every time the server is loaded.

### Does the Clockify MCP by usefulapi server require authentication?

Yes. Clockify MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Clockify MCP by usefulapi server still maintained?

Clockify MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://clockify.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/clockify/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-clockify/clockify.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-clockify/clockify.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-clockify/clockify
