Skip to main content
Glama
lewinnovation

@lewinnovation/clockify-mcp-server

@lewinnovation/clockify-mcp-server

MCP (Model Context Protocol) server for the Clockify REST API. It exposes a small set of curated tools for common workflows plus a generic clockify_request tool for other documented /v1/... endpoints.

Requirements

Related MCP server: clockify-mcp

Install

# via npx
npx @lewinnovation/clockify-mcp-server

# OR via pnpm globally
pnpm add -g @lewinnovation/clockify-mcp-server

# OR clone and install locally
pnpm install
pnpm run build

Configuration

Variable

Required

Description

CLOCKIFY_API_KEY

Yes

Sent as X-Api-Key on every request.

CLOCKIFY_API_BASE_URL

No

Defaults to https://api.clockify.me/api. Override only if Clockify documents a different base for your account or region.

Run (stdio)

The server speaks MCP over stdio (stdout must stay clean JSON-RPC; logs go to stderr).

export CLOCKIFY_API_KEY="your-key"
pnpm start

Or after pnpm run build:

node dist/index.js

MCP tool handlers are registered from src/tools/register.ts (shared helpers in src/tools/helpers.ts).

Use this server definition in your MCP client:

{
  "mcpServers": {
    "clockify": {
      "command": "npx",
      "args": ["-y", "@lewinnovation/clockify-mcp-server"],
      "env": {
        "CLOCKIFY_API_KEY": "your-key"
      }
    }
  }
}

If you prefer running a local clone, use:

{
  "mcpServers": {
    "clockify": {
      "command": "node",
      "args": ["/absolute/path/to/clockify-mcp-server/dist/index.js"],
      "env": {
        "CLOCKIFY_API_KEY": "your-key"
      }
    }
  }
}

Cursor

Add the JSON entry above to:

  • Workspace config: .cursor/mcp.json

  • Or user config: ~/.cursor/mcp.json

Then reload Cursor (or restart the MCP server from Cursor settings).

Claude Desktop

Add the same mcpServers.clockify entry to Claude Desktop MCP config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Restart Claude Desktop after saving the config.

Claude Code (CLI)

From your project directory:

claude mcp add clockify --env CLOCKIFY_API_KEY=your-key -- npx -y @lewinnovation/clockify-mcp-server

Or add the same JSON server entry to your Claude Code MCP config file if you manage MCP servers declaratively.

Other MCP-compatible agent tools

For tools such as Cline, Roo Code, and Windsurf, add the same server command/env block in that tool's MCP server settings UI or config file:

  • command: npx

  • args: ["-y", "@lewinnovation/clockify-mcp-server"]

  • env.CLOCKIFY_API_KEY: your Clockify API key

The server uses stdio transport, so no host/port configuration is required.

Tools

Curated

  • get_current_userGET /v1/user

  • list_workspacesGET /v1/workspaces (optional single role filter; multiple roles require clockify_request)

  • list_projectsGET /v1/workspaces/{workspaceId}/projects with pagination (page, page_sizepage-size)

  • list_tasksGET /v1/workspaces/{workspaceId}/projects/{projectId}/tasks

  • list_time_entriesGET /v1/workspaces/{workspaceId}/user/{userId}/time-entries (if user_id is omitted, the current API user is resolved via GET /v1/user)

  • create_time_entryPOST /v1/workspaces/{workspaceId}/time-entries

  • update_time_entryPUT /v1/workspaces/{workspaceId}/time-entries/{id} (Clockify requires start on updates)

  • stop_running_time_entryPATCH /v1/workspaces/{workspaceId}/user/{userId}/time-entries with { end } (optional user_id, default current user)

Generic

  • clockify_requestmethod, path (must start with /v1/), optional query map, optional JSON body (max 256 KiB serialized). Array query values are sent as repeated keys.

Responses wrap JSON in a text content block; when Clockify returns a Last-Page header, curated list-style tools include lastPage in the decoded JSON payload.

OpenAPI types

Types are generated from Clockify’s OpenAPI document:

pnpm run generate:openapi

Source URL: https://api.clockify.me/api/v3/api-docs
Output: src/generated/clockify.d.ts

Re-run this periodically to pick up API changes, then fix any compile errors from type drift.

Scripts

Script

Purpose

pnpm run dev

Watch src/index.ts with tsx.

pnpm run build

Emit dist/ with tsc.

pnpm run typecheck

tsc --noEmit.

pnpm run smoke

Mocked HTTP smoke test for curated endpoints (no API key needed; uses a dummy key + mocked fetch).

pnpm run generate:openapi

Regenerate src/generated/clockify.d.ts.

License

MIT

Available Tools

9 tools
clockify_requestB

Low-level access to any documented Clockify v1 endpoint. Path must start with /v1/. Use for endpoints not covered by curated tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body when needed.
pathYesAbsolute path on the API host, e.g. "/v1/workspaces".
queryNoQuery parameters. Array values are repeated as multiple keys.
methodYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it only states the path prefix requirement. It omits critical traits such as authentication needs, rate limits, error handling, side effects of mutating methods, and how the generic request is actually performed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly worded sentences with zero waste; the purpose is front-loaded and the path constraint and usage guidance follow immediately. Nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-level, multi-method API passthrough with no annotations and no output schema, the description is too thin. It does not explain how to choose methods, handle responses, authenticate, or deal with errors, leaving an agent underprepared for correct invocation beyond the path prefix.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents body, path, and query. The description adds a useful path constraint ('must start with /v1/') but says nothing about method selection, body construction, or query composition, leaving the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear resource (any documented Clockify v1 endpoint) and the tool's role as low-level access, distinguishing it from curated siblings by saying it is for endpoints not covered by them. However, the verb 'access' is somewhat generic and it does not name specific sibling tools or enumerate what 'curated tools' means.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this for endpoints not covered by curated tools, which gives clear context for choosing it over the listed sibling tools. It adds the path constraint but stops short of stating exclusions or prerequisites like authentication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_time_entryC

Creates a time entry in a workspace (POST /v1/workspaces/{workspaceId}/time-entries).

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYesFields for the new time entry.
workspace_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden but only implies a write via 'Creates'. It says nothing about required permissions, whether the entry becomes a running timer, duplicate/overlap handling, or what happens on validation failure for the 8 sub-fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no padding and the endpoint front-loaded is efficient, but it is under-specified rather than genuinely concise, and the URL adds little an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a nested object parameter set, the definition is far too thin: auth requirements, success response shape, and validation rules for the nested fields are all absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the nested entry object leaves type, tag_ids, task_id, billable, project_id, and description entirely undocumented; workspace_id has no description either. The description adds no meaning beyond restating the workspace path segment, so it fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Creates a time entry in a workspace') and even pins the REST endpoint, so the action is unambiguous. It does not, however, distinguish itself from update_time_entry or list_time_entries beyond the verb difference, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given: nothing says whether this is for manual backfill versus stopping a running timer, nor which sibling to choose instead. The endpoint string is background, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_userA

Returns the currently authenticated Clockify user (from the API key).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_membershipsNoWhen true, include workspace memberships on the user object.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It usefully discloses that the identity is derived from the API key (no user identifier needed), and 'Returns' safely implies a read-only operation, but it says nothing about failure modes (invalid/expired key) or the shape of the returned user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the parenthetical clarifying the identity source. Nothing is wasted and nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is the only source for what comes back, and it does say it returns the authenticated user object. It could say more about the returned fields and what include_memberships adds, but for a zero-required-parameter read tool this is nearly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional parameter 'include_memberships' is fully documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns'), a specific resource ('the currently authenticated Clockify user'), and the source of the identity ('from the API key'). No sibling tool (list_projects, list_workspaces, create_time_entry, etc.) does this, so the agent can distinguish it immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent infers it should call this when it needs the identity behind the configured credentials. There is no explicit when-not guidance and no named alternative, but for a single-purpose identity lookup the implied context is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsC

Lists projects in a workspace (supports pagination and filters).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
archivedNo
billableNo
hydratedNo
page_sizeNoMaps to Clockify query param page-size.
workspace_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It discloses that pagination and filters are supported, which is useful, but omits whether results are read-only, sorted, rate-limited, or how filters interact (e.g., AND logic). For a list tool with no annotations, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the core action. It is concise but perhaps overly terse given the missing parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 7 parameters at 14% schema coverage, the description is incomplete. It should explain the filter parameters, pagination behavior, and return structure to be sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14% (only page_size has a description). The description says filters exist but does not map them to the specific parameters (name, archived, billable, hydrated), leaving six parameters undocumented in both schema and prose. This fails to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (Lists) and resource (projects) scoped to a workspace. It distinguishes itself from other list tools by naming 'projects', though it does not explicitly differentiate from siblings like list_tasks or list_time_entries beyond the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The mention of pagination and filters is feature description, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksC

Lists tasks for a project within a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
is_activeNoMaps to is-active.
page_sizeNoMaps to page-size.
project_idYes
sort_orderNo
sort_columnNo
workspace_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It never states that this is a read-only operation, how results are paginated, or whether filters combine, despite page/page_size/sort parameters implying paged reads.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the resource front-loaded. It is efficient, though the brevity comes at the cost of useful detail rather than trimming redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, unannotated list tool with no output schema and thin schema descriptions, this definition omits pagination behavior, filtering semantics, and sort defaults. An agent cannot call it confidently without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% across 8 parameters, so the description must compensate but does not. It implies workspace_id/project_id scoping but says nothing about the name, is_active, page, page_size, sort_column, or sort_order parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (tasks) plus its scoping (for a project within a workspace). It does not distinguish itself from siblings like list_projects or list_time_entries beyond the resource noun.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus sibling list tools, no prerequisites, and no mention of pagination or filtering intent. The agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_time_entriesC

Lists time entries for a user in a workspace. If user_id is omitted, the current API user is used.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoRange end (yyyy-MM-ddThh:mm:ssZ).
pageNo
tagsNo
taskNoFilter by task id.
startNoRange start (yyyy-MM-ddThh:mm:ssZ).
projectNoFilter by project id.
user_idNo
hydratedNo
page_sizeNo
descriptionNo
in_progressNoMaps to in-progress query flag.
workspace_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It notes the default user_id behavior but says nothing about pagination (page/page_size params exist), filtering behavior, permissions, or what fields are returned. For a read tool with 12 params and no annotations, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose and the user_id default. No wasted words, though it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param list tool with no annotations and no output schema, the description is incomplete. It doesn't cover pagination, filtering capabilities beyond what's in the schema, or return structure, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 42%, so the description should compensate but doesn't. It only addresses user_id's default, leaving undocumented params like tags, hydrated, description, page, and page_size without explanation in either the schema or the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (Lists) and resource (time entries) with scope (for a user in a workspace). It's distinguishable from siblings like create_time_entry or stop_running_time_entry, but doesn't explicitly contrast with other list_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (listing time entries for a user/workspace) but gives no explicit when-to-use guidance or alternatives. It does clarify a default behavior for user_id omission, which is useful context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workspacesA

Lists workspaces visible to the authenticated user. For richer role filtering (multiple roles), use clockify_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoOptional single-role filter (matches Clockify OpenAPI typing).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that results are scoped to the authenticated user (auth-dependent visibility) and "Lists" implies a non-mutating read, but it says nothing about pagination, ordering, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the core behavior front-loaded before the alternative-tool hint. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read tool with no output schema and no annotations, the description covers what it does, who sees what, and the escape hatch to clockify_request. Only minor gaps (pagination/return shape) remain, and those are low-stakes here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single role parameter is fully documented with its enum and the single-role limitation in the schema itself. The description's "richer role filtering" wording only implies the role parameter, adding no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Lists workspaces") plus scope ("visible to the authenticated user"), so the operation is unambiguous. It also contrasts itself with clockify_request for the multi-role case, though it does not differentiate from the other list_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to clockify_request when richer/multi-role filtering is needed, which is a concrete alternative and condition. It stops short of stating when-not to use this tool or any prerequisites for the single-role path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_running_time_entryA

Stops the running timer for a user in a workspace (PATCH .../user/{userId}/time-entries with end time). If user_id is omitted, uses the current API user.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesStop time in yyyy-MM-ddThh:mm:ssZ format.
user_idNo
workspace_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the burden. It helpfully discloses the PATCH endpoint and that it sets an end time, plus the default-user behavior when user_id is omitted. However it omits whether stopping is reversible, whether it errors when no timer is active, and any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, then the mechanism and the optional-parameter default. No filler; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no annotations and no output schema, the description covers the action, endpoint, and user_id default, but stops short of return-value behavior, error conditions (no running timer), and workspace_id's role. Enough to call it, not enough to predict outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%: 'end' is documented in the schema, but 'user_id' and 'workspace_id' have no schema description. The description compensates for user_id by explaining the current-user default, but adds nothing about workspace_id and no format detail beyond the schema's 'end' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Stops the running timer for a user in a workspace') plus the underlying endpoint and mechanism, which distinguishes it from siblings like create_time_entry and update_time_entry. An agent can tell this ends an existing running timer rather than creating or editing an entry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'stops the running timer' and the note about omitting user_id, but there is no explicit when-to-use guidance, no mention of what happens if no timer is running, and no named alternative (e.g., update_time_entry for corrections). Adequate but leaves the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_time_entryC

Updates a time entry (PUT /v1/workspaces/{workspaceId}/time-entries/{id}). start is required by the Clockify API.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
typeNo
startYesISO-8601 datetime; required by Clockify for updates.
tag_idsNo
task_idNo
billableNo
project_idNo
descriptionNo
workspace_idYes
time_entry_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and discloses only that PUT is used and that `start` is required. It does not say whether omitted fields are cleared or preserved, what permissions are needed, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and only one extra clarifying fact. Efficient, though the second sentence is largely redundant with the schema's own note on `start`.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with 10% schema coverage, no annotations, and no output schema, the description is far too thin. An agent cannot tell how partial updates behave or what most parameters do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 10% across 10 parameters, so the description must compensate but largely doesn't. It explains `start`'s requirement (which the schema already notes) while leaving end, type, tag_ids, task_id, billable, project_id, and description unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Updates a time entry') and even names the exact endpoint, which clearly separates it from create_time_entry and stop_running_time_entry by operation type. It doesn't explicitly call out the sibling alternatives, but the update semantics are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no statement of when to prefer this over create_time_entry or stop_running_time_entry. The endpoint string is the only contextual hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.5
    • First observedclockify_request
    • First observedcreate_time_entry
    • First observedget_current_user
    • First observedlist_projects
    • First observedlist_tasks
    • First observedlist_time_entries
    • First observedlist_workspaces
    • First observedstop_running_time_entry
    • First observedupdate_time_entry

TDQS

B3.3/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes based on resource and action. However, 'list_workspaces' and 'get_current_user' are clear, while 'clockify_request' overlaps with all others as a fallback, which could cause some ambiguity. Overall, boundaries are well-defined.

Naming Consistency4/5

Names mostly follow a consistent verb_noun pattern (list_projects, get_current_user, create_time_entry, etc.), with one outlier: 'clockify_request' breaks the pattern. This minor deviation reduces consistency slightly.

Tool Count5/5

With 9 tools, the set is well-scoped for common Clockify operations like managing projects, tasks, time entries, and workspaces. Each tool appears to earn its place without redundancy.

Completeness4/5

The surface covers essential CRUD for time entries and listing for other resources. However, there are gaps: no create/update/delete for projects, tasks, or workspaces, though 'clockify_request' provides a workaround. Minor gaps remain for full lifecycle coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers